Transkript: HTMX

· Zurück zur Episode

Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.

Dominik

Ja, hallo liebe Hörer und Hörer, willkommen beim Python Podcast, Episode 38.

Dominik

Diesmal wollen wir etwas über HTMX sprechen.

Dominik

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

Jochen

Ja, halli, hallo, willkommen, Dominik.

Dominik

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

Hi Thomas.

Hallo, groß.

Jo, hallo, hallo.

Dominik

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

Dominik

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

Dominik

Eigentlich müssten wir das am Anfang stellen.

Jochen

Sagen Leute Hallo und man weiß gar nicht, wer das ist.

Dominik

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

Thomas

Ich mache Softwareentwicklung.

Thomas

Das ist schon eine ganze Menge Jahre.

Thomas

Hab vor 20 Jahren mal Informatik studiert und vorher schon auch als Kind daran Spaß gehabt.

Thomas

Und ja, mache hauptsächlich eben Webentwicklung mit Python und Django, PostgreSQL und eben seit neuestem auch mit HTMX.

Thomas

Und ja, ja, 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.

Sehr schön.

Jochen

Ja, sehr cool.

Ja, dann gehen wir uns die News über.

Jochen

Erstmal ein bisschen News, ja.

Jochen

Ich glaube, ich habe auch fast gar nichts aufgeschrieben.

Oh doch.

Jochen

Python 3.6 ist draußen, End of Life.

Jochen

Ich glaube, es war am 23.

Jochen

Dezember oder so.

Dominik

Weihnachtsgeschenk, eure Version ist deprecated, ja.

Jochen

Ja, das heißt also quasi die erste Version Python 3, wo viele Leute irgendwie das Gefühl hatten, das ist jetzt besser als Python 2, ist jetzt auch End of Life.

Jochen

Das heißt, ja, also krass.

Jochen

Als ich das gesehen habe, dachte ich so, wow, das ist schon mal schon wieder so lange her.

Dominik

Ich glaube ja, bei 3.6 habe ich glaube ich angefangen, also schon gar nicht so lange her.

Dominik

3.7 kam dann relativ fix und jetzt ging schnell.

Dominik

Also meine News nicht, ich habe nur gelesen, dass Python Programmiersprache des Jahres 21 geworden ist.

Dominik

Yay!

Dominik

Wir werden Famous und Schuhrug.

Ganz wichtige News.

Jochen

Ja, es gab jetzt auch wieder eine neue Version von diesem TOB-Index, wo Python auf Platz 1 ist.

Jochen

Allerdings muss man dazu sagen, vielleicht, dass das irgendwie, also so wahnsinnig viel kann man da nicht draus lesen.

Dominik

Ja, ist auch eigentlich relativ wurscht.

Jochen

Ja, ich habe letztens eine irgendwo kurz, wo habe ich das gehört?

Jochen

Ein Programmierbarer-Podcast war es, glaube ich.

Jochen

Dass da jemand meinte, so, ja, das ist irgendwie eine niederländische Firma und das, was sie machen, ist, sie machen irgendwie, nehmen den Namen der Programmiersprache, machen Programming dahinter und googeln dann danach und dann zählen sie die Anzahl der Suchergebnisse.

Jochen

Das ist mehr oder weniger, was sie tun.

Yay.

Jochen

Und das ist natürlich irgendwie, ja, gut, ob das jetzt so bei einem wahnsinnig viel sagt, ist halt.

Programmierbar.

Dominik

Das habe ich von Ihnen noch nicht gehört.

Jochen

Ja, ich höre immer so, was an anderen Podcasts auch so gibt es.

Dominik

Ja, deswegen, vielleicht ist das auch mal interessant, dass man mal kurz darüber erzählt.

Jochen

Ja, also da geht es meistens so um Frontend-Themen.

Jochen

Also es gibt erstaunlich, das ist auch sowas, das finde ich aber ein bisschen komisch.

Jochen

Also es gibt einige Podcasts, die sich mit dem Thema Programmierung und so beschäftigen, aber fast alle eher so Frontend.

Jochen

Also es gibt zum Beispiel Webwork, äh, nee, nicht Webwork.

Jochen

Das ist ein Mieter hier in Düsseldorf.

Jochen

Working Draft heißt einer.

Jochen

Auch einer der vielleicht der älteste Webentwicklungspodcasts und sicherlich einer der bekanntesten.

Jochen

Auch mit Leuten hier aus Düsseldorf.

Jochen

Und ja, das ist aber auch sehr frontendlastig.

Jochen

Und genau, programmierbar ist relativ neu, ist halt auch sehr frontendlastig.

Folge 116?

Jochen

Die machen häufig Dinge, ja, aber achso, dann vielleicht auch nicht so neu.

Dominik

Ja, aber gut, im Moment werde ich ja gerade sehen.

Dominik

3.

Dominik

November, 2.

Dominik

November, 10.

Dominik

November, 12.

Dominik

November, 17.

Dominik

November, 24.

Dominik

November.

Dominik

Also, ja, also die Pace ist relativ häufig.

Jochen

Ja, Working Draft hat es irgendwie über 500, 531 sind es jetzt irgendwie oder so.

Tja, hoch.

Jochen

Und wir machen einmal die Woche.

Darfst du schon?

Jochen

Ja, da brauchen wir noch ein bisschen.

Dominik

Wie sagt jemand, mit dem Gameboy kann man jetzt in 50.000 Jahren einen Bitcoin meinen?

Jochen

Ah ja, okay.

Irgendwie so,

Dominik

die Teil ist jetzt auch rein aus der Luft gibt es.

Jochen

Ja, und dann gibt es, also was ich auch manchmal noch höre, ist sowas, also jetzt wenn es deutschsprachigen Geschichten sind, Englischsprache gibt es natürlich endlos jede Menge, aber da gibt es noch sowas wie Softwarearchitektur im Stream.

Jochen

Höre ich manchmal.

Jochen

Und InnoQue hat ein paar Podcasts, das ist eine Firma und die hat auch was mit dem, also der Mensch, der Softwarearchitektur im Stream macht, der arbeitet da auch bei Anton.

EBA hat wollte.

Jochen

Und da arbeitet auch jemand, also der Stefan Tilkoff arbeitet da auch und der, der ist auch viel in anderen Podcasts unterwegs, da habe ich auch einen Working Graph zum Beispiel.

Jochen

Mal ein sehr schönes, auch zum passend zum Thema, was wir gleich, worüber wir gleich reden wollen.

Jochen

Da gibt es eine Episode zum Thema Singlepage-Apps und irgendwie, was ist eigentlich REST und so und die ist sehr empfehlenswert.

Dominik

Oh ja, was eigentlich Rest ist, darüber wollen wir auch

Jochen

gleich sprechen.

Jochen

Ja, genau, darüber haben wir auch schon mal auch schon mal eine Episode gemacht.

Dominik

Ja, aber also so in dem, also ganz kurz müssen wir es ja gleich wieder erwähnen, weil das ja so ein bisschen heute auch

Jochen

darum geht.

Jochen

Ja, ja, stimmt.

Jochen

Dann gibt es noch, wo wir sind, ist vorne.

Jochen

Das ist eigentlich ein sehr super, super produziertes Ding.

Dominik

Der Titel ist toll.

Jochen

Ja, der Titel ist toll und die Grafiken sind toll und das sieht alles toll aus und die Webseite ist toll.

Jochen

Aber ja, es ist halt auch ein sehr vornelastiger Ding.

Jochen

Die machen halt auch Streams und ja, genau.

Jochen

Und ich meine, das sind so fast.

Jochen

Dann gibt es noch so ein paar KI-Geschichten.

Jochen

Die ich höre, da habe ich die Namen jetzt nicht und die höre ich auch sehr unregelmäßig, weil meistens gefällt mir das gar nicht so gut.

Dominik

Oh, aber das hier mit den Rosen

Jochen

vorne sieht es gut aus.

Jochen

KI in der Industrie, glaube ich, ist eine.

Dominik

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

Jochen

Ja.

Jochen

Ansonsten mehr fällt mir jetzt ehrlich gesagt nicht ein, was es da auf Deutsch gibt.

Dominik

Fällt dir noch was ein, Thomas dazu?

Dominik

Du hörst gar nichts in die Podcast-Staten.

Thomas

Meine Überlegung gerade war, bloß ob es im DevOp-Bereich, über Kubernetes oder irgend sowas, also im deutschsprachigen Raum noch was gibt.

Naja, keine Ahnung.

Jochen

Ist mir auch nicht, vielleicht gibt es das, aber das ist auch etwas, wo ich gar nicht nachgucken würde oder weil es mich gar nicht so sehr interessiert, da glaube ich, würde ich das auch gar nicht mitbekommen.

Dominik

Ja, der Nico hatte, glaube ich, so ein, zwei Sachen da.

Jochen

Hat den Nico natürlich.

Dominik

Aber der hat auch, glaube ich, schon ein halbes Jahr nicht mehr neue Folgen released.

Also weiß ich nicht, ob

Jochen

es den noch gibt.

Jochen

Von dem habe ich letztens gehört, der macht er irgendwie so ein Live-Webinar-Ding Stream, auch eher so Richtung Stream geht das irgendwie gerade.

Okay, okay.

Jochen

Aber ja, stimmt.

Jochen

Nee, der macht natürlich, also Tech-Tiefen vorher hieß das irgendwie anders.

Jochen

Ja, der macht auch nicht nur Frontend-Themen, sondern alles mögliche.

Jochen

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

Cool, ja.

Ja, ja.

Jochen

Ja, ansonsten weiß ich nicht, gab es in der Python-Welt irgendwelche Neuigkeiten, irgendwelche interessanten Dinge?

Jochen

Sonst.

Dominik

Jahrespause, ne?

Jochen

Ja, Jahreswechsel ist immer ein bisschen, oh ja.

Jochen

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

Jochen

Dann können wir das nicht so ein bisschen.

Dominik

Da sind wir dieses Mal mit dem erstaunlich früh durch.

Jochen

Jo, und wie wir ja schon angekündigt hatten, angedroht, gibt es nun auch ein bisschen Werbung.

Jochen

Der Sponsor für diese Episode ist NordvPN.

Jochen

Das ist ein VPN-Anbieter und da könnt ihr etwa auf nordvpn.com slash Python Podcast gehen und bekommt da 73% Rabatt auf ein Zweijahrespaket.

Jochen

Und noch einen Gratismonat extra.

Jochen

Und genau, wenn euch das nicht zusagen sollte, könnt ihr das auch innerhalb von 30 Tagen kündigen, ohne dass euch da Zusatzkosten entstehen.

Jochen

Und ja, könnt ihr euch immer angucken.

Jochen

Ist vielleicht ganz nett, manchmal braucht man das ja schon.

Jochen

Also ich war zum Beispiel letztens irgendeinen Urlaub und wollte da die Dinge weitergucken, die ich normalerweise so gucke und musste dann festellen.

Jochen

Nee, das geht nicht.

Jochen

Weil Streaming-Dienstleister hat festgestellt, man ist woanders, als man normalerweise ist und dann geht das halt nicht mehr.

Jochen

Und da möchte man dann vielleicht doch eher nur so auf irgendwo VPN aktivieren klicken und dann geht das halt einfach weiter.

Jochen

Und hatte ich nicht überlegen, ob ich das nicht vielleicht mal haben möchte, ne, für den Fall.

Jochen

Und ja, auch wenn ihr einen lokalen Internet-Service-Provider habt, der vielleicht nicht so auf der Höhe ist, was seine Peerings angeht, dann könnt ihr da euch zu einem besseren Interneterlebnis verhelfen, indem ihr ein VPN benutzt.

Jochen

Ja, genau.

Jochen

Und wenn ihr das mal ausprobieren möchtet, einfach auf nordvpn.com slash Python Podcast gehen und ja, ausprobieren.

Jochen

Vielen Dank an NordVPN für die Unterstützung.

Dominik

Und dann geht es direkt in das Thema rein.

HTMX.

Was ist denn das?

Thomas

Oh, das weiß ich auch nicht so genau.

Dominik

Das sind die High-Power-Tools für HTML, so hat es denn der Mensch genannt, der es erfunden hat, um einfach HTML so zu erweitern, wie es der Standard bis jetzt nicht zugelassen hat.

Dominik

Also, dass man kein JavaScript mehr braucht, um coole, responsive Sachen im Web zu bauen.

Jochen

Na doch, JavaScript brauchst du schon.

Dominik

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

Thomas

Ja, es wird dann so deklarativ.

Thomas

Das ist eigentlich schon nicht schlecht.

Thomas

Es entwickelt sich ja alles so ein bisschen in die Richtung, spricht.

Dominik

Ja, also vielleicht nochmal ganz kurz, was das so ist.

Dominik

Also worum es da geht.

Dominik

Also wie machen wir denn normalerweise jetzt Frontend und Backend?

Trennen wir das?

Dominik

Wie war das denn früher?

Dominik

Und ja, warum denn HTMX?

Dominik

Also was ist das so die Idee dahinter?

Also ich glaube, früher war es einfach nur so, du hast den Server gefragt und der hat dir dann die Webseite fertig geschickt.

Dominik

Nein, weil ganz früher.

Ganz, ganz früher.

Jochen

Wie früher hättest du es denn ja?

Dominik

Anfang der 90er oder so.

Jochen

Also, ich würde ja sagen, also das Web ist ja im Grunde ein sehr neues Modell.

Jochen

Also insofern, das ist also gut, fangen wir gerade mit dem harten theoretischen Kram an.

Jochen

Es ist die Frage, ob das ein guter Einstieg ist, aber.

Jochen

Ich weiß nicht.

Jochen

Naja, also Web ist ja eigentlich revolutionär in vielen Eigenschaften, die es so hat.

Jochen

Und halt ganz anders als irgendwie die Dinge, die man vorher gemacht hat.

Jochen

Vorher, was man vorher gemacht hat, ist halt so Klein-Server zum Beispiel.

Jochen

Oder Remote Procedure Calls oder sowas.

Jochen

Solche Dinge.

Jochen

Das ist halt alles deutlich älter als das Web.

Jochen

Und Web ist halt eigentlich was anderes.

Aber ich glaube,

Dominik

die Geschichte jetzt haben wir gleich.

Dominik

Und dann, was ist denn Web?

Dominik

Dann erzähl doch erstmal, was denn

Jochen

Web ist.

Jochen

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

Jochen

Das hatten wir, wie gesagt, in der Restepisode diese Dissertation von Roy Fielding, der halt auch an den Stadnarz da maßgeblich mitgearbeitet hat mit Tim Vanasley und der hat da seine Dissertation irgendwann drüber geschrieben.

Jochen

Und da definiert er, was er quasi meint, was das ist, so als Rest, also Representational State Transfer oder so.

Jochen

Und ja, aber es ist halt die Frage, ob das so interessant ist.

Dominik

Ja, ich glaube, das hatten wir ja schon in der Reste-Evision, aber ich glaube, da müssen wir es gar nicht so ein.

Jochen

Ja, im Grunde so ganz, ganz, ganz grob ist es halt irgendwie, es geht darum, dass der Client im Grunde nicht mehr viel wissen muss.

Jochen

Dass man halt alles, was an Informationen man braucht, um halt irgendwie ein Client betreiben zu können, ja, sozusagen, dass das halt alles mitkommt.

Jochen

Also sozusagen, dass man halt auch mit einem alten Browser halt zum Beispiel Dinge machen kann.

Jochen

Dass man jetzt nicht immer den neuesten Browser haben muss.

Jochen

Also wenn man bei Client Server war das Problem früher immer, man da irgendwie was geändert hat, dann muss man immer dafür sorgen, dass der ja, dass ja auch die aktuellste Version vom Client irgendwie geschippt wird, weil ansonsten funktioniert das halt nicht mehr.

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 Browser noch funktioniert und muss sich darum nicht darum kümmern, dass die Leute halt immer den aktuellsten Browser haben 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, 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 Singlepage-App-Teil und ich glaube, das müssten wir so ein bisschen strukturierter sein.

Dominik

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

Ja, du hast danach gefragt.

Dominik

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

Dominik

Also gerade was kleinserver so ist, aber der, glaube ich, der entscheidende Unterschied, was HTMX das halt macht, diesen modernen Trend, dass man halt eine Single-Page-Application braucht, um Frontend schön darzustellen, ersetzen kann.

Dominik

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

Dominik

Aber vielleicht will der Thomas das gerade genau da jetzt nochmal einsteigen.

Thomas

Ja, also bei HTMX, es ist sicherlich auf JavaScript basiert, anders kommt man ja in den Browser nicht wirklich rein, um dort irgendwas zu programmieren im Browser.

Thomas

Aber Ziel der Übung ist eigentlich, dass der Endanwender, also der Entwickler dann kein JavaScript mehr schreibt oder wenig JavaScript.

Thomas

Und da wird HTML erweitert um neue Attribute, sodass man es HTML klassisch verwenden kann, also wie es eben vor 20 Jahren gemacht wurde.

Thomas

Sprich, vom Server zum Client kommt HTML.

Thomas

Gegebenenfalls auch HTML-Schnipsel oder so ähnliches.

Thomas

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 ein DOM-Objekte machen.

Thomas

Das ist eben so recht revolutionär eigentlich.

Thomas

Revolutionär so hingegen, weil es halt wie das Wort Revolution ist im Endeffekt rückwälzend.

Thomas

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.

Thomas

Das kann man mit einfachen Mitteln eine ganze Menge erreichen.

Thomas

Und das fand ich ganz cool, hab's mal ausprobiert in einem kleinen Projekt.

Thomas

Ja, und da bin ich jetzt hier, um ein bisschen davon zu erzählen.

Jochen

Ja, ich finde es auch, ich finde es super spannend.

Jochen

Ich habe, ich hört ja irgendwie schon seit einiger Zeit davon und genau, also wenn man sich anguckt, was sind die meist gesehenen Talks eben auf sowas wie, das ist auch der, glaube ich, der ist der Grund, warum wir auf die Thomas gekommen sind.

Jochen

Irgendwie bei DjangoCon EU oder DjangoCon US, das ist halt HTMX, das ist halt ganz heiß.

Jochen

Und ja, ich kann es auch sehr gut verstehen.

Jochen

Also ich habe irgendwann mal angefangen, mich auch mit diesen sozusagen Frontend-Framework so ein bisschen zu beschäftigen.

Jochen

Und für mich war damals der Grund, warum ich das gemacht habe, dass ich gerne so, also so ein UI-Anmutung gerne hätte wie bei einer nativen Applikation sozusagen.

Jochen

Und das hat man ja halt so früher eigentlich bei Webseiten nicht so wirklich gehabt.

Jochen

Weil, naja, da hat man immer ein Request-Response-Cycle irgendwie und das dauert dann halt einfach.

Jochen

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, eine 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 Latez mehr hat und dass das halt alles super schnell ist und dass sich das so anfühlt wie was Natives.

Jochen

Und das hatte mich interessiert und 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-Sturz da mitmachen.

Jochen

Okay, und 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.

Jochen

Und ja, ich dachte eigentlich immer, der Grund, warum das bei normalen Web-Anwendungen halt so ein oder Webseiten so ein Problem ist, lag an diesem Request-Response, weil es dauert halt irgendwie, je nachdem, wo ein Server stört, steht halt mal alleine Latenz bei einem Request von, weiß ich nicht, mindestens mal so 50 Millisekunden oder sowas.

Jochen

Und ich dachte, das liegt dann halt, das führt dann schon dazu, dass man das irgendwie dann, dass sich das dann langsam anfühlt und hab dann sogar solche Sachen eingebaut in meine ersten Versuche mit so diesen, also ich glaube, das erste habe ich tatsächlich React irgendwie am Anfang verwendet.

Jochen

Und hab dann immer irgendwie die Daten für, ich hatte so eine Liste von Dingen, wo ich Pagination hatte und dann habe ich die Daten für die nächsten, immer für die paar Seiten außenrum, immer schon gleich mitgefetcht, damit ich die nicht holen muss, weil ich dachte, wenn ich da auf einen sozusagen Link in Anführungsstrichen klicke und dann müssen Daten geholt werden, dann dauert das ja wieder lange und das will ich ja gar nicht, sondern ich will, dass das sofort da ist.

Genau, ja.

Jochen

Ja, und tatsächlich, das habe ich jetzt auch, ich habe jetzt auch mit HTMX so ein bisschen rumgespielt oder so und da habe ich gemerkt, oh, das ist gar nicht der Punkt, das ist halt schnell genug.

Jochen

Also wenn das 50 Millisekunden dauert, dann reicht das vollkommen aus, dass sich das halt schnell anfühlt.

Dominik

Weil das vielleicht ja dann hast du zu viele Daten dann sonst am Client drin, die der dann handeln muss, oder?

Jochen

Nö, nö, das ist einfach, also meine Vorstellung, dass das halt daran liegt, dass die Langsamkeit von dem Netzwerk festkommt, war so nicht ganz korrekt.

Jochen

Okay.

Jochen

Sondern das liegt eigentlich an

der Interaktivität, oder?

Jochen

Das liegt daran, dass das halt das komplette Browserfenster immer ausgetauscht wird.

Das ist halt der Punkt.

Jochen

Und dass der Browser teilweise auch bei komplizierteren Seiten halt einfach lange braucht, um das wieder komplett neu zu rendern, was er halt funktioniert.

Dominik

Ja, aber das Ganze rendern so lange dauert.

Dominik

Also was ich ganz interessant fand von dem, was der Thomas gerade gesagt hat, war, dass er sagte, man muss das erst in JSON umwandeln von dem alten Zustand, damit man es wieder zurückdrehen kann.

Dominik

Das heißt, so der Urzustand ist halt ein anderer dann gewesen als JSON.

Dominik

Was ich jetzt, muss ich sagen, weil ich bin auch nicht so lange dabei wie ihr, gar nicht so unentwictuiv finde, weil ich zum Beispiel jetzt aus Django-Models immer direkt in JSON reinrendere oder so und halt diesen Umweg über die Templates gar nicht so häufig gehen musste.

Dominik

Deswegen ist das für mich so ein bisschen ungewöhnlich, weil ich finde das Django-Template-System sehr angenehm, weil es halt die ganzen Features von Django zurückholt, die man sonst verliert, wenn man halt JS macht.

Dominik

Aber ansonsten hat für mich auch so einen Sinn, wenn man halt irgendwie diese serialisierten Objekte durch die Gegend schicken kann.

Dominik

Und deswegen, also was meintest du denn damit, wenn du sagst, dass wir zurückdrehen?

Dominik

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

Thomas

Also Zurückdrehen, das war halt eher so zeitlich gemeint, also dass man eben es so ähnlich macht, wie man es vor zehn Jahren oder so gemacht hat.

Thomas

Und das ist witzig, wenn man sich mit Leuten unterhält, die eben jetzt vor rund sieben, acht Jahren oder irgendwas Web-Anwendungen geschrieben haben, hatten die meistens alle eine kleine Hilfsbibliothek, die auf jQuery aufbaut.

Thomas

Und mit der hatten sie damals so HTML-Schnipsel irgendwie in bestimmten, ja, ab und zu hin und her geschickt.

Thomas

Und alle dachten, oh, das ist dir irgendwie und das ist nicht schön.

Thomas

Und als das Angular dann aufkam, dann dachte man, ah, das ist sauber, weil das ist, weil JSON geht da über die Leitung und deshalb muss das ist das einfach besser, weil es schön ist und sauber ist.

Thomas

Und aber diese Gleichung, die hat bei mir ein bisschen gebraucht, um die aus dem Kopf rauszustreichen, dass es eigentlich Käse ist.

Thomas

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

Thomas

Also es ist viel pragmatischer, eigentlich der 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, kann bloß sagen, dass es auch eine ganze Menge andere Leute eben sozusagen auch sehen, die ihr gerade halt Leute, die aus den eher Backend-Sprachen kommen, die eben Python oder Ruby oder irgendwas anderes programmieren, die haben halt in dem Bereich eben Spaß dran, 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 HTMX selber ist auch in JavaScript geschrieben, 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

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.

Thomas

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 sie aber halt auch bloß nur dieser kleine Bereich austauschen.

Thomas

Und das macht halt die Seite irgendwie ja und interaktiv.

Jochen

Ja, ja, das, was ich jetzt, ich habe gestern, vorgestern mal so ein bisschen damit rumgespielt.

Jochen

Und was ich, ich habe mein altes, meinen alten Use Case mir nochmal quasi versucht damit umzusetzen.

Jochen

Und das ist halt gar nicht so einen kleinen Teil austauschen, sondern quasi so den Hauptcontent auf einer Seite.

Also man

Jochen

hat quasi eine Liste von Dingen und zum Beispiel wie bei dem Podcast so die Episoden oder bei dem Blog, die Artikel.

Jochen

Und jetzt paginatet man da so durch.

Jochen

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

Jochen

Und das habe ich jetzt mit HTMX gemacht.

Jochen

Und auch selbst wenn man den kompletten quasi Content der Seite austauscht, ist es immer noch sauschnell und man spürt da keinen Unterschied oder man hat nicht das Gefühl, dass das jetzt irgendwie, äh, irgendwie, dass man den kompletten Content ausgetauscht hat.

Jochen

Sondern erst wenn halt man tatsächlich die komplette Seite austauscht, dann wird es langsamer.

Dominik

Also Latenze habt so 100 Millisekunden merkst du halt dann vorher ein bisschen drunter, also unter 50 oder ist halt.

Jochen

Ja, da merkt man das eigentlich nicht und das kann man durchaus schaffen, da drunter zu bleiben.

Jochen

Und das ist natürlich dann, oder da dachte ich so, als ich das gemerkt habe, okay, dieser Use Case geht auch damit, dachte ich so, wow, okay, dann entfällt für mich eigentlich der Grund für diese JavaScript-Ding-Dinger ab.

Dominik

Also was mich halt auch interessieren würde, was ich jetzt noch nicht genau gesehen habe, aber es liegt wahrscheinlich daran, dass ich das noch nicht eingebaut habe, kann ich das trotzdem so in Komponenten strukturieren, wie ich mir das vorstelle, aus dem Vue.js raus.

Dominik

Und wie läuft das mit den ganzen netten Animation-Plugins und sowas Ganze irgendwie?

Dominik

Muss ich das dann kleinteilig einbauen vom Server, hängt das dann drüber und wie werden die Sachen da wieder reingerendert?

Dominik

Das habe ich immer noch nicht so ganz begriffen.

Dominik

Weil also Vue.js rendert das ja auch irgendwie im Hintergrund einmal durch und tauscht dann die Teile aus im DOM.

Dominik

Und auf welcher Ebene muss ich das denn machen?

Thomas

Ja, man hat ja heute die ganz normalen HTML-Tags.

Thomas

Also wenn du eine Seite hast und da sind eben drei interaktive Bereiche drin, dann wäre es eigentlich sinnvoll, du machst eine große Seite und dann da dreimal ein Form-Tag zum Beispiel.

Thomas

Und wenn du ein Submit für dieses Form machst, also für eins dieser Forms, dann werden die Daten dieses einen Forms zum Server geschickt und kriegst die Antwort wieder zurück.

Thomas

Also dann die Komponenten sind sozusagen HTML-Tags.

Jochen

Ja, also ich glaube, also wenn du, wenn du meinst, dass du sowas hast, also eben View 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, ist halt ein moderneres oder älteres, also eigentlich würde ich sagen, ist es halt das, ist halt ein ganz altes Modell.

Jochen

Das ist halt eigentlich Client Server und das ist eigentlich eher so Remote Procedure Call.

Jochen

Und der Client, der State bei den sozusagen in Anführungsstrichen modernen, aber eigentlich architekturmäßig alten Anwendungen, die halt so ein bisschen wie die Client-Server, der State der Applikation liegt halt in JavaScript.

Jochen

Deswegen musst du auch muss View das rendern.

Jochen

Deswegen gibt es die Tablet-Sprache in, also JSX in React und so.

Dominik

Aber genau an der Stelle müssen wir jetzt vielleicht nochmal in die Historie gehen, weil ich glaube, jetzt haben wir jetzt ein bisschen die kleine Einleitung gemacht, aber das wäre jetzt genau nochmal interessant zu wissen, was ist denn jetzt genau der Unterschied zwischen RPC und Client Server und

Jochen

Naja, also auch der Unterschied sozusagen zwischen JSON und HTML, also ich, also der Grund, warum, also ich muss auch sagen, ich finde JSON ehrlich gesagt so als Entwickler viel angenehmer, um damit zu arbeiten, als jetzt sowas wie XML oder HTML oder sowas.

Jochen

Oder überhaupt Markup-Languages, einfach deswegen, weil JSON halt viel einfacher ist.

Jochen

Zum Beispiel, also einer der wesentlichen Unterschiede, das ist ein bisschen subtil, aber tatsächlich ist es halt das, was einem dann so extrem auf die Füße fallen kann oder was halt sehr viel Aufwand erzeugt, ist halt XML oder HTML, das ist halt ein Dokumentformat.

Jochen

Es ist halt nicht so, dass das einfach nur Daten sind.

Dominik

Also das Gute ist natürlich auch, als Backend-Entwickler kann man natürlich sagen, mit den Pixel-Chips beschäftigen sich jetzt die Frontendler mit, man gibt ihnen einfach die Daten und dann ist es gut, da hat man damit nichts mehr zu tun.

Dominik

Das heißt, es gibt ja auch diese Zweigattung von Entwicklern.

Jochen

Aber das halt auch führt halt dazu, dass es nicht so, dass es halt nicht so mächtig ist in gewisser Weise.

Jochen

Also der Hauptunterschied zwischen Dokument und Daten ist halt zum Beispiel die Reihenfolge.

Jochen

Du hast halt in einem Dokument hast du halt eine Reihenfolge von Dingen.

Jochen

Da spielt es eine Rolle, ob Sachen vorne stehen oder hinten.

Jochen

Wenn ich in JSON irgendwie ein Objekt habe, dann ist das egal, ob das vorne steht oder hinten.

Jochen

Das ist eigentlich, das sind immer die gleichen Daten.

Das ist halt.

Jochen

Und ja, das macht es sehr schwer zu handeln, weil ich dann beim Parsen halt aufpassen muss und so.

Jochen

Aber auf der anderen Seite macht es halt auch sehr mächtig.

Jochen

Ich kann halt auch ja also die Dinge quasi, die ich da anzeigen möchte, direkt drin beschreiben.

Jochen

Das kann ich so in JSON ja nicht machen.

Jochen

Aber in HTML kann ich das.

Jochen

Also in HTML kann ich halt ein Formular hinschreiben, das halt irgendwie einen Kontakt zum Beispiel anzeigt oder halt mir anzeigt, wie ich den ändern kann, ohne dass ich dazu sonst irgendwas wissen muss.

Dominik

Ja genau, also du kannst ja tatsächlich auch den ganzen Datentyp verändern.

Dominik

Du musst ja jetzt nicht nur irgendwie ein JSON-Objekt durch ein anderes austauschen, sondern du kannst ja was ganz anderes da hinstellen auf einmal.

Dominik

Das hast du magisch irgendwie.

Jochen

Ja, genau.

Jochen

Und bei JSON geht das halt nicht.

Jochen

Bei JSON musst du halt wissen, was das ist.

Jochen

Ansonsten funktioniert es nicht.

Thomas

Was mir bei JSON jetzt nicht so gefällt, dass halt die Datentypen sind recht eingeschränkt.

Also ordentliches Time-Delta oder irgendwas.

Jochen

Ja, das nicht.

Thomas

Und da

Thomas

persönlich bin ich persönlich halt großer Freund von Postgres.

Thomas

Das ist enorm, was ist da alles Skript in der relationalen Datenbank?

Thomas

Und da sind meine Daten eben gespeichert.

Thomas

Da kommen die her.

Thomas

Und dann will ich aus der SQL-Datenbank irgendwie das beim Client anzeigen.

Thomas

Und da ist es für mich relativ klar, wenn ich sage, ich mache aus dem SQL, mache ich HTML und das schicke ich zum Browser.

Thomas

Das ist relativ einfach.

Thomas

Also wenn ich da erstmal aus dem SQL JSON mache, und dann mache ich aus dem JSON-HTML, ist es einfach ein Schritt mehr.

Thomas

Da frage ich mich, warum.

Jochen

Ja, und es ist halt auch so, dass man dann die ganzen Probleme aus der alten Welt wiederbekommt, nämlich zum Beispiel, was ist, wie, also deine Applikation muss jetzt natürlich das JSON verstehen.

Jochen

Und hat jetzt auch Versionen zum Beispiel.

Jochen

Also was ist denn, wenn jetzt kommt das JSON von heute sozusagen, das ist aus irgendeinem Backend, aus irgendeiner Datenbank.

Jochen

Und die Applikation ist aber ein Jahr alt, weil ich halt jetzt, weiß ich nicht, keine Ahnung, ein Browserfenster irgendwie, ich habe einen Rechner irgendwie in die Ecke gelegt, der dann ein Jahr lang gelegen hat, jetzt glaube ich dem wieder auf und jetzt, was macht die Applikation denn jetzt mit den Daten?

Jochen

Das wird nicht funktionieren.

Thomas

Das haut nicht hin und das hat man ja auch eigentlich in allen von diesen frontendlastigen Anwendungen, dass dann ab und zu irgendwo so ein Pop-Up kommt, bitte Seite neu laden, weil neue Software-Update oder irgendwas, anders so ein Browser-Reload dann sozusagen wie so ein Software-Update.

Thomas

Genau, das hat man in dem HTMX-Fall eigentlich.

Jochen

Ja, das hat man in dem REST-Web irgendwie sozusagen Fall.

Jochen

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

Thomas

Man kann prinzipiell auch auseinanderlaufen.

Thomas

Also wenn ich jetzt ein Formular einmal erstmal mehr lade, ein HTML-Formular, und dann vergeht wirklich eine Menge, vergeht eben Zeit und es gibt ein Software-Update und dann mache ich bei mir einen Post von meinen Formulardaten, kann es prinzipiell ja auch gegen Baum gehen, weil es dann nicht mehr hinhaut auf Serverseiten.

Jochen

Wenn sich tatsächlich an der Datenschema oder so irgendwas geändert hat.

Jochen

Und ja, okay, ja.

Jochen

Aber tatsächlich, ja, ja gut.

Jochen

Okay, insofern.

Dominik

Ja, also wir gehen einfach mal davon aus, dass man, wenn man Dinge irgendwie jahrelang da liegen lässt, man nicht davon ausgehen sollte, dass die einwandfrei so funktionieren wie am ersten Tag.

Okay, aber einmal kurz.

Jochen

Aber du kriegst das Problem auch deutlich schneller.

Jochen

Also, und du hast halt dieses Problem plötzlich wieder.

Jochen

Du hast das Problem wieder, dass du deine Clients aktuell halten musst.

Jochen

Das war eigentlich sozusagen eine der großen Versprechungen von Web-Geschichten, dass man sagt, das musst du nicht mehr machen.

Dominik

Also, um nochmal zurückzuhören, also die alte Client-Server-Architektur bedeutet, 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 bitte 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

Nee, das ist sozusagen der Kern der Applikation ist eben nicht auf dem Server, sondern der Kern der Applikation ist halt auf dem Client.

Jochen

Und vom Server kommen nur Daten.

Dominik

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

Jochen

Der State der Applikation, die logisch.

Dominik

Das hast du schon wieder State gesagt, 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, zum Beispiel irgendwie in einer Applikation, wo liegt diese Liste?

Dominik

Also auch wie hast du die sortiert, welche hast du wieder rausgeschmissen und wer kennt das?

Dominik

Kennt das der Client selber oder kennt das auch oder nur der Server?

Und das ist der Unterschied.

Dominik

Ja, quasi bei Client-Server liegt es halt beim Client.

Jochen

Ja, oder es könnte auf dem Server liegen.

Jochen

Also der große Unterschied zu Web ist jetzt sozusagen, okay, jetzt rede ich über Dinge, weil ich keine Ahnung habe, aber der große Unterschied ist halt, dass das liegt halt in dem HTML selber.

Jochen

Also das ist halt der große Unterschied zu allem, was früher war.

Jochen

Das ist halt sozusagen dieser revolutionäre Schritt.

Jochen

Das hatte man vorher, soweit ich weiß, noch nie gemacht.

Jochen

Und das ist neu in HTML.

Jochen

Und mit Rest, sozusagen.

Thomas

Na gut, ich kenne halt auch die Frage, was man will.

Thomas

Also das, ob man jetzt so eine Seite will, eine Seite, die sich eben super schnell lädt, weil der Nutzer bei Google was nachgesucht hat und dann folgt er dem Link, der ihm angezeigt wird und dann zack, will er die Seite da haben und will, will die Seite geöffnet haben und sehen.

Thomas

Und da ist halt ganz wichtig, dass jetzt Google mit den Webweitels oder irgendwas so abprüft, dass zack, diese First Time User Experience gut ist, zack, die Seite soll sich schnell laden.

Thomas

Und witzigerweise gibt es da ein Produkt von dem gleichen Großkonzern, Google, zum Beispiel Gmail.

Thomas

Und wenn ich Gmail starte, sehe ich erstmal einen Wartebalken.

Thomas

Das geht mir natürlich als Nutzer Eigent auf den Kisten.

Thomas

Sehe ich erstmal, wie sich die ganze Anwendung lädt.

Thomas

Und das will ich nicht.

Thomas

Also ich will, im Endeffekt will ich auch gar nicht so eine Native GUI im Web haben.

Thomas

Ich will zack, dass die Seite da ist.

Thomas

Und drum ist die Frage eigentlich, was man will, sicherlich gibt es Anwendungen.

Thomas

Gibt es Anwendungen, die tut man als Anwender eben morgens starten und die tut man abends dann wieder schließen oder so.

Thomas

Okay, das ist okay, da kann man bewarten.

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, sondern ich will da so reingeführt werden, dass ich willkommen bin, dass ich eingestimmt werde, auf was da funktioniert.

Jochen

Na gut, aber das ist halt, das liegt halt im Use Case.

Jochen

Kommt halt drauf, denke ich drauf an, was das für eine Applikation ist, die man da oder was der Use Case ist.

Jochen

Und für die allermeisten Web-Use Cases ist es halt wichtiger, dass man quasi von, dass man das auch, dass man zum Beispiel auf Links klicken kann und dann halt auf eine andere Seite kommt und da irgendwas macht.

Thomas

Ja, und

dass man halt einfach was.

Und das geht ja

Jochen

auch mit diesem Modell, dass dein Client halt irgendwie eine richtige Applikation ist, funktioniert das halt nicht mehr.

Jochen

Das bricht halt die Links im Web im Grunde.

Jochen

Weil wenn du jetzt hinter jedem, wenn hinter jedem Link erstmal irgendwie ein paar megabyte großes JavaScript-Bundle liegt, was du laden musst und dann erstmal ein Ladebalken eingezeigt wird und dann einen, ich initialisiere die Applikation, ja, 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, das funktioniert nur, wenn es halt diese, wenn da nicht jedes Mal megabyteweise Zeugs rüberkommt und initialisiert werden muss und nicht irgendwie ein komplexes User-Interface hochgefahren wird, 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 Web-Frameworks, die wie React und Vue, die haben das ja auch erkannt und jetzt versuchen die serverseitig zu rendern.

Thomas

Dann gibt es dieses mit Hydration und Dehydration oder Server-Side Rendering und den ganzen Spaß.

Dominik

Moment, was ist Hydration?

Was ist Dehydration?

Dominik

Was ist Server-Side Rendering in dem Fall?

Gemeint?

Jochen

Ja, also du benutzt im Grunde Node.js auf dem Server, um halt deinen, also du hast ja meistens dann auch so eine Template-Sprache, so ähnlich wie Django Templates, bloß halt in JavaScript, also JSX oder weiß ich nicht, wie das bei View heißt, keine Ahnung.

Jochen

Und du kannst das ja jetzt, du kannst es im Browser rendern, ja.

Jochen

Da läuft JavaScript, was de Templates nimmt und dann halt quasi mit den Daten, die es über JSON oder sonst irgendwie bekommt, halt dann HTML rausrendert.

Jochen

Du kannst es aber auch auf dem Server rendern.

Jochen

Du kannst ja da ja Node.js laufen lassen, dann kannst du auch Templates nehmen und dann halt auch HTML rausrendern.

Jochen

Und das HTML, was du da rausrenderst, kannst du auch einfach so an den kleinen schicken.

Jochen

So dass das Rendering halt nicht bei dir im Browser passiert, sondern auf dem Server.

Jochen

Deswegen Server-Side-Rendering.

Dominik

Und das ist halt dann für kürzere Antwortzeiten.

Jochen

Ja, ja, also dann fühlt es sich für dein Browser, ist es dann so wie eine klassische, wie so eine Django-Website oder so.

Jochen

Und dann aber schiebt der Server dir ja doch dann doch irgendwie so einen JavaScript-Bundle dahin und dann wird das ersetzt und ich weiß nicht, ehrlich gesagt, ich weiß jetzt auch nicht genau, wie das funktioniert mit dem Hydration oder so.

Jochen

Genau, aber was

Dominik

ist jetzt das Hydration alles?

Jochen

Ich nehme mal an, dass das irgendwie sozusagen dieser reine, das hat mir alles gekriegt, das ist quasi in Anführungszeichen irgendwie trocken und weil es halt so schadisch ist.

Jochen

Und ich nehme mal an, dass sie mit Hydration meinen, du schickst halt ein Bundle dahin und wenn das Bundle da ist, dann sagst du, okay, jetzt gibt mir mal die Daten per JSON und dann rendert es das halt auf den Client selber.

Das ist das,

Dominik

was halt zum Beispiel bei VTS und so Komponenten passiert, wenn da bestimmte Teile im DOM getauscht werden, so HTML-Stipsel von Antworten vom Server dann auch.

Nee, nee, das

Thomas

muss man bloß, das ist bloß on-top sozusagen.

Thomas

Das ist bloß, wenn du es optimieren willst.

Thomas

Also das ist bloß für den Fall, wenn du feststellst, einmal eine Vue-Anwendung, die ist eben jetzt nicht so schnell für den First-Time-User, dann kannst du dieses Hydration-Dehydration einsetzen, um diesen ersten Seitenaufruf zu beschleunigen.

Jochen

Ja, und sozusagen als Browser, wenn du auf so eine Seite mit du jetzt zum Beispiel NUX nimmst bei Vue und machst da Server-Side-Rendering, dann dein Browser kriegt einfach nur HTML und zeigt das an, wie bei jeder anderen Seite auch.

Jochen

Für den, der führt keinen JavaScript erstmal aus.

Jochen

Nur dann später.

Jochen

Also die Frage ist, wo es so gerendert wird.

Jochen

Bei Server-Side-Rendering wird es auf dem Server gerendert und bei irgendwann später, wenn das Bundle da ist, was halt aber megabyteweise Zeug sein kann, ja, das dauert halt, bis das da ist, dann wird wieder auf den Client gerendert und dann werden nur die Daten per JSON geholt und dann, und das ist, denke ich, das, was mit Hydration gemeint ist.

Thomas

Und die Sache ist, es ist schön, dass man das alles machen kann.

Thomas

Und die Frage ist aber, ob man es will.

Thomas

Und da bin ich eben vielleicht auch zu alt oder zu steif.

Thomas

Ich verwende seit Jahren Python und bin mit der Sprache sehr zufrieden.

Thomas

Und dass ich jetzt JavaScript, die Sprache, die mir eh nicht so 100% sympathisch ist, jetzt auch noch auf den Server einsetze oder irgendwas, habe ich eben persönlich keinen Bock drauf.

Thomas

Und darum habe ich das Schöne ist ja, ich habe da angefangen im privaten Kontext auch, für jemanden eine Seite machen wollen und so ein Bestellsystem.

Thomas

Und das Schöne, da hatte ich einfach Zeit und es war auch kein Druck irgendwie da und auch keiner, der gesagt hat, Thomas, nimm die oder jene Tools.

Thomas

Und wenn man da Zeit hat, kann man wirklich mal nochmal recherchieren und auch sagen, nee, so möchte ich es jetzt nicht machen, ich will das jetzt so machen.

Thomas

Und dann habe ich erstmal ewig gesucht, bis ich überhaupt was gefunden habe und durch Zufall bin ich eben auf das HTMX dann gestoßen.

Thomas

Inzwischen ist es auch populärer.

Thomas

Inzwischen stolpert man selbstständig drüber.

Thomas

Vor mehr als einem Jahr war das eben noch recht unbekannt.

Thomas

Gut, und da war es halt dann eine coole Sache und gerade wenn man halt, eh sagt, man selber ist in einer Backend-Sprache damit vertraut, dann macht das eigentlich großen Sinn, weil dann kann man das auch sehr leicht verwalten, diesen Stack.

Thomas

Ansonsten, ja, sicherlich kann man das machen.

Thomas

Ich glaube auch, dass das prima funktioniert mit dem View und React und so alles.

Thomas

Aber wenn man das selber alles in der Kontrolle haben will, also ich kenne es selber jetzt beruflich zum Beispiel, nutzen wir auch Vue.js.

Thomas

Und ja, das ist dann manchmal so, dann ist der Frontend-Entwickler sozusagen oder da ist da einer mal krank oder im Urlaub oder irgendwas und dann klemmt es Frontendseitig, obwohl Backend-Kapazität dabei und dann ist es vielleicht mal andersrum oder irgendwas.

Thomas

Ist doch eigentlich schöner, wenn man da sagt, okay, ich mache wirklich eben Full Stack vom HTML bis zur Datenbank, habe ich alles unter Kontrolle und da finde ich diese Trennung zwischen Frontend-Entwickler und Backend-Entwickler, das ist so wie so eine komische Diskriminierung, wie, ja.

Thomas

Muss eigentlich nicht sein.

Ja.

Jochen

Ja, ja, ich würde auch sagen, also normalerweise ist diese Unterscheidung von der Backend eigentlich halt hauptsächlich irgendwie, es gibt halt Leute, die JavaScript mögen und es gibt andere Leute, die die JavaScript free bad finden.

Jochen

Und das ist halt auch schon mal also ja.

Jochen

Also ja, alle

Dominik

Leute, die JavaScript-Liebe haben, die bitte einmal aufzeigen.

Jochen

Ja, naja, gut, also das ist übrigens auch so ein Ding.

Jochen

Also ich meine, im Grunde, die Entwicklung wird da getrieben von, also weil in der JavaScript-Welt und ich höre da ja auch ab und zu Dinge, da geht man jetzt sozusagen schon in die Richtung zu sagen, naja, also wir sind jetzt eigentlich weit genug, warum machen wir nicht JavaScript also komplett?

Jochen

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 zu verwenden.

Jochen

Aber sagen wir mal so, diesen Druck, den gibt es schon sehr stark.

Jochen

Und aber nochmal, vielleicht ganz kurz, ich würde ganz kurz nochmal da ansetzen, wo wir eben waren, weil auch, man kann jetzt mit diesen Frameworks natürlich auch Server-Side-Rendering machen, nur das löst die Probleme nicht.

Jochen

Also wenn alle Webseiten irgendwie fette Dinger wären mit Server-Side-Rendering, würde das Web so nicht mehr funktionieren.

Jochen

Das würde kaputt gehen.

Jochen

Und das ist halt irgendwie, weil du musst diese Megabyte-Daten ja immer noch durch die Gegend schieben, ja, auch wenn das dir jetzt so nicht mehr so aufhält, aber da werden halt dauernd die gleichen minifizierten JavaScript-Dinger durch die Gegend geschoben.

Jochen

Wenn du von einer Seite auf die andere gibst, immer das gleiche Zeug, megabyteweise.

Das heißt, das ist halt

vom Verrückt.

Dominik

Weil ich nicht einzelne Teile vom Dom nur tausche?

Jochen

Ja, weil du musst halt die komplette Applikation schickst du halt in der Gegend drucken.

Ja.

Jochen

Und die Applikation ist ja in weiten Teilen immer die gleiche.

Thomas

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

Thomas

Und ich kann mir vorstellen, dass die ersten drei Bilder jeder Webseite dann größer sind als das ganze JavaScript-Spaß.

Dominik

Also ich hätte jetzt auch tatsächlich irgendwie intuitiv gedacht, dass man das halt auch mit VTRS zum Beispiel so löst, dass man dann eben nur den einzelnen kleinen Bestandteil dann innerhalb dieser Komponente neu rendert.

Jochen

Ne, du musst immer, also ich weiß nicht genau, es gibt noch so Geschichten, da bin ich jetzt aber auch nicht vertraut mit, dass du so dieses Hot-Module, du kannst halt, du kannst halt teilweise mit, es gibt so Exema-Skript jetzt Module irgendwie auch.

Jochen

Und manchmal kannst du halt, musst du für manche Seiten Module nachladen und so.

Jochen

Aber bisher der klassische Weg war halt, du baust deine komplette Applikation in ein JavaScript-File und das lieferst du aus.

Jochen

Und solange du das nicht hast, geht gar nichts.

Jochen

Und ja, also wenn deine Applikation halt, also ich meine gut, sie muss nicht über Megabyte groß sein, aber es ist schon groß und ja, oft ist das halt das View drin oder React oder so.

Jochen

Und dann halt die Bibliotheken, die alle verwenden.

Jochen

Und das Zeug wird halt bei jedem, wenn du auf eine andere Seite gehst, wird das halt immer mit übermittelt.

Jochen

Und das ist ja eigentlich vollkommen verrückt ineffizient.

Jochen

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

Eigentlich wollten wir ja über HTMX reden und nicht über Render, nicht was anderes irgendwie.

Ja, ja, ja.

Jochen

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

Also am besten man gibt dann selber mal HTMX einfach in seine bevorzugte Suchmaschine ein und dann kommt man auf die Seite und da gibt es auch ein paar Beispiele oben.

Thomas

In der Kopfleiste ist es zu sehen, ein paar Examples.

Thomas

Und ein Beispiel ist zum Beispiel Click-to-Edit.

Thomas

Das ist glaube ich mit das erste.

Thomas

Hat man erstmal so eine ganz normale HTML-Seite und dann unten ist so ein kleiner Block und da steht irgendwie Click-to-Edit und in diesem Block sieht man irgendwie Name, sag ich mal, Peter oder irgendwas oder irgendein Namevorname ist aber ein ganz einfaches Nutzerdaten.

Thomas

Da kann man hinklicken.

Thomas

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 ä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 natürlich so, dass kein 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 Scroll-Position oder irgend sowas alles gleich bleiben.

Thomas

Und da ist die Frage, wie das funktioniert.

Thomas

Also mit dem Click to edit wird the server contacted.

Thomas

And the server schickt then ein kleines HTML-Schnipselchen on the client.

Thomas

And entsprechend the angabe in the HTML and the HTMX erweitert im Endeffekt das HTML plus um ganz einfach neue Attribute.

Thomas

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

Thomas

Gibt es verschiedene Swap-Methoden, da kann man sagen, inner HTML soll ausgetauscht werden, also das in dem Tag oder outer HTML, sprich das Tag selber soll auch mitersetzt werden.

Thomas

Na gut, und dann kriegt man eben dieses HTML-Schnipselchen vom Server und das wird dann durch HTMX dann dort eingebaut.

Thomas

Und dann hat man das Formular, kann es befüllen und am Endeffekt passiert der gleiche Spaß wieder.

Thomas

Also 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 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, tausch mir bitte dieses One aus und dann hat man das Ganze schon.

Thomas

Also man muss sich da nicht mit JavaScript beschäftigen oder so.

Thomas

Und ja, das ist sozusagen diese Grundidee der Bibliothek, dass man HTML-Schnipsel über die Leitung schickt und das deklarativ im HTML verfügbar macht.

Dominik

Ja, sehr spannend.

Dominik

Das macht auch solche Sachen wie möglich, dass man dann also das ist auch ein weiteres Beispiel zum Beispiel auf der Seite, dass man Infinite Scroll machen kann, dass er dann in diesem HX-Web-Attribut einfach After End sagt und dann wird das einfach angehängt, dann das, was man auf das bekommt.

Thomas

Also da kriegt man eigentlich den besten Eindruck, wenn man einfach mal diese Beispiele.

Jochen

Das ist schon super.

Jochen

Ja, also ich meine, im Grunde, also ich eigentlich ist die Idee, also mich wundert, dass das nicht schon viel früher passiert ist, ehrlich gesagt.

Thomas

Mir geht es genauso.

Thomas

Ich dachte, es ist ja genau, von dem ich eigentlich geträumt habe, gerade vor Jahren, als ich mit Jake Ferry da, so selber irgendwie was gelöst, irgendwie.

Thomas

Und das ist eigentlich die Idee dieses Deklarativen auch.

Thomas

Also das ist eben, das HTML ist da sehr schön, diese Beschreibungssprache.

Thomas

Das ist keine Programmiersprache, eine Beschreibungssprache.

Thomas

Aber im Endeffekt geht ja vieles hin in das Deklarative.

Thomas

Also man will ja einfach bloß sagen, das soll so und so sein und dann kümmert sich irgendein andz dann darum, dass das dann auch umgesetzt wird und so.

Thomas

Und das macht es im Endeffekt dann einfacher.

Jochen

Ja, und im Grunde behandelt es eigentlich, macht es genau das gleiche, was man in einem Browser auf einer Webseite tut, nur halt nicht jetzt, dass man zum Beispiel, wenn man einen Browser halt auf einer Webseite ist, kann man ja immer nur das komplette HTML-Element ersetzen.

Jochen

Und jetzt hat man sozusagen per JavaScript in HTMX halt die Dinge, die man nur auf dem einen großen Ding machen kann, kann man jetzt auf allen kleinen Elementen halt auch machen.

Jochen

Man kann das halt irgendwie durch was anderes ersetzen, man kann, also es ist normalerweise ein Browser, lösen halt nur zwei Events, lösen halt irgendwie Requests aus.

Jochen

Das eine ist halt Anchor-Tag und das andere ist halt irgendwie Submit, also Form.

Jochen

Und es gibt nur Get und Post, aber es gibt ja noch viel mehr HTTP-Werben, es gibt ja noch Delete-Put-Patch.

Jochen

Und das habe ich mich auch früher gefragt, also gab es auch so bei Djungo Rest-Framework ja irgendwie immer diese Browsable-API und dann wollte ich halt mal so, da drin kann man ja auch Dinge hinzufügen und so.

Jochen

So, okay, und jetzt muss ich noch Put testen und so, hm, komisch, Put geht irgendwie nicht, wieso geht denn Put nicht?

Jochen

Und das war mir auch gar nicht klar, dass halt Browser können halt keinen Put irgendwie an Serverschicken sein.

Jochen

Das muss man halt mit JavaScript machen, weil es geht einfach nicht.

Jochen

Und es gibt ja eigentlich gar keinen Grund, warum das jetzt nicht weiter standardisiert wurde.

Jochen

Und HTMX ersetzt sozusagen das, was da noch fehlt, durch JavaScript.

Jochen

Und das ist eigentlich eine sau-saukule Idee.

Thomas

Also bei mir hat es auch relativ schnell Klick gemacht, nachdem ich die ersten Beispiele da mir angeschaut habe.

Thomas

Und es ist enorm, wie da auch das Interesse daran wächst.

Thomas

Also zum Beispiel im Django, was ich jetzt ja eben einsetze für die Serverseite, kann man ja auch auf einer HTML-Seite mehrere Formulare dann reintun und mit Präfixen das dann für auswerten und so weiter.

Thomas

Und es war auch, wenn ich mich da zurück erinnere, rechter Krampf irgendwie immer.

Thomas

Und hier ist es einfach entkoppelt.

Thomas

Ich kann ja auch auf einer Seite drei Formulare haben und die submitten sich eben einzeln individuell.

Thomas

Da brauche ich da nicht ein großes Formular machen mit drei Unterbereichen oder so.

Thomas

Das macht es auch serverseitig deutlich einfacher, das zu handeln.

Ja.

Jochen

Naja, und es ist ja jetzt tatsächlich auch nicht nur, also HTMX vielleicht zu der Geschichte, dass der Autor hatte vorher eine Bibliothek geschrieben als jQuery-Plugin.

Jochen

Das nennt sich irgendwie Intercooler JS.

Jochen

Daher, das hat auch mit jQuery relativ viel zu tun.

Jochen

Und das war halt dann quasi auch halt, äh, HTMX ist jetzt sogar der Nachfolger davon, der dann halt ohne JQuery rauskommt und diesen ganzen Kran nicht mehr macht.

Jochen

Und wo ich auch denke, das ist halt ein sehr breiter Trend, das macht es auch so interessant, weil es ist halt nicht nur diese eine Geschichte, es ist nicht nur HTMX, sondern diesen Ansatz verfolgen ganz viele Projekte in ganz vielen unterschiedlichen Sprachen.

Jochen

Und ich weiß nicht, in welchem Talk das war, ob das der von der Junge US war oder nee, es war auch, glaube ich, mit Talk Python to me Interview mit dem Entwickler von HTMX, sagte er einen Satz, den ich von unterschiedlichen Leuten aus unterschiedlichen Communities schon ganz oft gehört habe.

Jochen

Den habe ich auch schon gehört von Chris McCord von Phoenix Live View, der Alexia.

Jochen

Und ich habe den auch nochmal aber anders gehört.

Jochen

Und zwar, der Satz ist, ja, also ehrlich gesagt, dafür, dass ich kein JavaScript schreiben wollte, habe ich jetzt ganz schön viel JavaScript geschrieben.

Ja, krass.

Jochen

Und das sagen, und also das ist halt dieses Thema.

Jochen

Also ganz viele Backend-Leute, die eigentlich nie JavaScript schreiben wollten, schreiben, 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.

Jochen

Und das sieht danach aus, als hätte man da was gefunden, was tatsächlich gut funktioniert.

Jochen

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 bitte auch viel mit Ruby on Rails zusammenverwendet, gibt es halt nur Hotwire.

Jochen

Also Akronym für HTML Over the Wire und Turbo Links, wo halt dann quasi schon die Seite hinter dem Link gefatscht wird, sodass wenn man auf den Link draufklickt, das halt dann direkt da ist.

Jochen

Dann gibt es eben bei Elixier-Welt Phoenix gibt es LiveView, wo auch HTML-Snippets halt über den Websocket geschickt werden.

Jochen

Dann gibt es das in PHP, da heißt das irgendwie Livewire in Laravelle.

Jochen

Und ja, ich weiß es gar nicht, da gibt es also auf jeden Fall in vielen unterschiedlichen Communities machen Leute jetzt gerade sowas.

Jochen

Und ja, das scheint irgendwie ein sehr, sehr breiter Trend zu sein, ja.

Thomas

Ja, richtig.

Thomas

Das Schöne an dem HTMX ist halt, dass es sich da vollkommen raushält.

Thomas

Also das kann man mit jedem Backend-Framework nutzen, wie man möchte.

Thomas

Und die anderen, die sind halt oft backend-spezifisch.

Thomas

Also bei Ruby und Rails.

Thomas

Das ist Hotwire.

Thomas

Und darum 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.

Thomas

Das HTMX hat es, glaube ich, der Carsten Cross hat es da sehr, sehr schön nochmal reduziert von der Komplexität.

Thomas

Und das ist ja auch im Endeffekt sein Ziel.

Thomas

Sein Ziel ist es, die Komplexität zu reduzieren, dass es schön einfach ist.

Thomas

Und das hat er aus meiner Sicht sehr gut geschafft.

Thomas

Das sind eine Handvoll Attribute, die hat man schnell verstanden oder auch noch nachgeschlagen.

Thomas

Und dann kann man da ganz gut eine Menge Dinge machen.

Thomas

Man muss natürlich erstmal umdenken, überhaupt erstmal reinzukommen, aber wenn man es, das macht Spaß.

Thomas

Also das kann ich nur empfehlen.

Ja.

Jochen

Es gibt auch eine jetzt von Adam Johnson, der hat irgendwie ein Ding geschrieben, Django HTMX.

Jochen

Das ist eben als Integration jetzt auch ein Django als Framework, aber das macht auch fast nichts.

Jochen

Das macht ganz wenig.

Jochen

Das macht nur sozusagen, es ist eine Middleware dabei, die an den Request halt ein Attribut dran bappt.

Jochen

Ich weiß nicht, ob ist HTMX oder sowas, wo man dann einfach nachgucken kann, weil man muss auf der Serverseite halt unterscheiden können, war das jetzt ein Request, der von HTMX gekommen ist oder nicht.

Jochen

Und dann, je nachdem, rendert man eben die komplette Seite, das ist auch sowas.

Jochen

Wenn ein Browser kein JavaScript kann, ist es gar kein Problem.

Jochen

Das funktioniert einfach so weiter, weil auf der Serverseite rendert man halt, wenn man sieht, okay, es war kein HTMX-Request, dann rendert man einfach die komplette Seite raus.

Ist gar kein Problem.

Jochen

Und wenn es ein HTMX-Request war, gut, dann rendert man halt nur das Fragment raus, das halt ersetzt werden muss.

Jochen

Und das heißt, es funktioniert in beiden Fällen und irgendwie man hat halt diese Windowware dann, um halt da quasi sich nicht selber überlegen zu müssen, wie man jetzt erkennt, ob das jetzt ein HTMX-Request war oder nicht.

Jochen

Und dann hat das Ding auch noch so Teile drin für, damit diese Fehler-Views halt ordentlich funktionieren.

Jochen

Also wenn halt ein Fragment nicht ordentlich gerendert wird, dann ist, wenn man sonst nichts macht, ignoriert, also wenn er zum Beispiel ein 400 zurückkommt auf einen HTMX-Request, dann sieht man nichts, weil HTMX schmeißt einfach die Antwort dann weg.

Jochen

Und vielleicht will man die Standard-Django-Fehlermeldung aber haben mit einem Stackface oder so.

Und dafür ist

Jochen

halt auch noch so ein bisschen, das ist, glaube ich, eine HTMX-Extension in JavaScript, die in Django HTMX drin ist, die dann halt dafür sorgt, dass man eben die normale Django-Fehler-Seite sieht, wenn man auch wenn ein HTML-X-Request halt serverseitig schiefgegangen ist.

Thomas

Genau, also ich habe es mir auch angeschaut, die Bibliothek, habe eher das gleiche festgestellt wie du.

Thomas

Es ist relativ wenig eigentlich drin und es ist auch wenig notwendig.

Thomas

Und darum nutze ich es ja auch gar nicht, weil ich habe mir für mich dann nochmal überlegt, 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.

Thomas

Jahrhundert.

Thomas

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

Thomas

Also es gibt den ersten Seitenaufruf und der erste Seitenaufruf bringt eben eine ganz normale HTML-Seite mit einem HTML-Tag, Head-Tag, Body Tag und HTML wieder zu.

Thomas

Und dann ab dann werden eigentlich meistens Schnipsel ausgetauscht und die URLs, wo ich eben einen Schnipsel bekommen will, die liefern immer einen Schnipsel zurück und die werden immer über HTMX aufgerufen.

Thomas

So dass ich diese Fallunterscheidung serverseitig gar nicht habe, von wegen, ist das jetzt ein HTMX-Request oder nicht.

Dominik

Es gibt, glaube ich, auch von Django Forms, irgendwie Django Forms Dynamic oder sowas, dass man da quasi Django Forms nutzen kann, direkt als HTMX-Forms.

Jochen

Ah, okay.

Jochen

Das kann ich noch gar nicht sagen.

Das ist irgendwie auch ganz

cool dazu.

Thomas

Cool, ja.

Dominik

Das heißt man, also Django Forms kennt ihr ja vielleicht, da kann man das direkt so einbauen.

Das ist immer ganz hilfreich.

Jochen

Ja, ich habe letztens auch das immer gesehen, aber ich habe es mir noch nicht angeguckt.

Jochen

Interessant.

Jochen

Ja.

Dominik

Ja, jetzt haben wir, also wir haben so ein bisschen jetzt, glaube ich, über die Syntax gesprochen, über das Beispiel und das, was es alles schon gibt.

Dominik

Also man macht meistens halt mit diesem Swap-Target oder sowas, ja.

Dominik

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

Dominik

Also das heißt, wir sagen quasi, was getauscht werden soll, wohin das getauscht werden soll und wann es getauscht werden soll.

Genau, richtig.

Thomas

Das mit einem Trigger geht es sozusagen los.

Thomas

Also bei einem Form muss man den Trigger jetzt gar nicht angeben, weil bei einem Form ist es das Drücken auf den Submit-Button.

Thomas

Aber es gibt eben andere Trigger, wie du von Dominik angesprochen hast, den Revealed-Trigger zum Beispiel.

Thomas

Also ich kann so einen Infinite-Scroll implementieren, indem ich ganz unten eben einen HTML-Schnipsel habe mit dem Trigger Revealed und der feuert dann, sobald dieses Schnipselchen in den sichtbaren Bereich kommt im Browser.

Thomas

Und das ist natürlich dann relativ cool.

Thomas

Dann kriege ich das Event, dann hole ich mir neue Daten, dann kann ich 567 neue Einträge unten machen.

Thomas

Und wenn der Nutzer nach unten scrollt, kommt er wieder nach unten, kommt wieder das Revealed-Event, Schupp und er holt sich die nächsten Einträge.

Thomas

Und dann kann man, ohne eine Zeile JavaScript zu schreiben, so ein Endless Scrolling implementieren.

Thomas

Und das ist ja eine feine Sache.

Thomas

Hier haben

Thomas

wir Swap-Messer inner HTML tauschen, outer HTML, Target.

Thomas

Und Out of Band gibt es auch noch, also wenn man zum Beispiel, ich hatte bei mir so eine Art Warnkorb und wenn ich jetzt bei dem Warnkorb sage, ich möchte, oder ich kaufe irgendwas ein und sage, ich möchte jetzt davon jetzt mehr haben, mache ich sogar sozusagen ein Plus.

Thomas

Dann habe ich erstmal diesen Bereich aktualisiert, wo der Nutzer geklickt hat, weil ich dort will, ich statt eine 1, eine 2 anzeigen.

Thomas

Aber jetzt gibt es vielleicht rechts oben noch irgendwie ein Symbol mit Summe aller Waren im Warenkorb oder so.

Thomas

Und mache ich mit dem ersten, also mit dem eigentlichen Event durch diese eine Zeile austauschen.

Thomas

Und out of Band kommt dann noch dazu, bitte tausche außerdem hier das Element mit dem der ID aus und dann kommt dann dort die neue Zahl für diese gesamte Summe.

Thomas

Das gibt es auch noch, das Out-of-Band-Aktualisierung von Daten angekommen ist.

Thomas

Also man kann eben zusätzlich out of band, also wenn der Server weiß, hier ich möchte noch was aktualisieren, 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

Anwendungsfall war eben so eine Art Warenkorb.

Thomas

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 Einkaufswagen-Symbol und da will ich die Summe aller Waren anzeigen.

Thomas

Dann kann ich damit eben das auch aktualisieren.

Thomas

Also an zwei Stellen.

Thomas

Einmal diese unten bei der eigentlichen Ware und oben im Warenkorb.

Thomas

Das ist auch nur so ein ganz nettes Feature von einem HTMX.

Thomas

Ja, was gibt es sonst noch zu sagen?

Jochen

Ja, auch solche Sachen, dass man, da fand ich auch nett sagen kann, okay, lad mal dieses Element alle zwei Sekunden nach.

Jochen

Das ist halt auch so ein Anwendungsfall für Auto-HTML, dann könnte man sich auch fragen, wozu braucht man eigentlich Outer und Inner?

Jochen

Weil wenn man das komplette Element ersetzt, dann wird halt auch werden halt auch die HTMX-Attribute mitersetzt.

Jochen

Und man kann zum Beispiel dann von der Serverseite her steuern, wie lange irgendwas dann, also man könnte zum Beispiel, man hat irgendwie News-Ticker oder sowas und sagt halt alle zwei Sekunden werden da neue Daten geladen.

Jochen

Und dann kann man von der Serverseite aber sagen, wenn man das komplette Element austauscht, okay, man nimmt diesen Trigger raus, irgendwann nach zehn Minuten oder so und dann werden halt keine neuen, wird halt nicht mehr gepollt quasi.

Jochen

Und da fünf man oder dann komplett das komplette Element ersetzen.

Jochen

Dann braucht man halt Autar-TML.

Jochen

Ja, also genau, solche Sachen kann man auch sehr einfach machen.

Jochen

Hm.

Jochen

Was gibt es noch?

Jochen

Ja, genau, überhaupt diese Geschichten, wenn vom Server Sachen kommen.

Jochen

Da weiß ich auch noch nicht so genau, wie das dann.

Jochen

Gibt es Support für Websockets oder solche Sachen irgendwie?

Thomas

Ja, ja, Websocket Support gibt es.

Thomas

Habe ich aber selber jetzt noch nicht ausprobiert.

Thomas

Und es wird aktuell eben die Bibliothek aktualisiert, dass Websockets zu einem externen Paket wird.

Thomas

Dass man also das gar nicht mehr per Default drin hat, sondern dann sich selber nachladen muss.

Thomas

Ich persönlich finde es gut, es hält die Bibliothek klein.

Jochen

Die meisten Leute brauchen das halt nicht,

Thomas

denke ich mal.

Thomas

Genau, und dann kann man es auch auslagern.

Jochen

Ja, ich glaube, Server-Set-Events-Support dafür ist auch irgendwie drin.

Jochen

Da dachte ich auch so, habe ich jetzt, habe ich irgendwann letztens nochmal geguckt, was das denn wirklich ist, weil das habe ich nie so, das ist zwar schon uralt und gibt es total lange, aber ich wusste nie so richtig, was das ist.

Jochen

Aber ja, es ist halt auch eigentlich nichts Besonderes.

Jochen

Und vor allen Dingen es blickt halt auf den Server auch, man muss halt eine Verbindung offen halten, nur dass man halt vom Client aus nichts zurückschicken kann, sondern es ist halt eine Verbindung, die immer offen bleibt, wo man vom Server halt irgendwie Daten 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.

Ja, genau.

Thomas

Eine Sache fällt mir noch ein, zum mehr so einer allgemeinen Sache.

Thomas

Viele sind ja Freunde dieser JSON-APIs, weil sie sich dann denken, ah super, dann habe ich ja eine API.

Thomas

Und damit kann ich zum einen ein Webfrontend machen und zum anderen kann ich da eine API anbieten für eine Maschine-Maschine-Kommunikation.

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, die will ich täglich aktualisieren können, da will ich täglich deployen können und da sollen sich auch täglich kleine Änderungen ergeben können.

Thomas

Weil das den Nutzer in der Regel nicht stört, wenn es so ein kleines bisschen irgendwie anders ist und ein kleines bisschen verbessert wird, kontinuierlich.

Thomas

Will ich aber eine Maschine zur Maschinekommunikation haben, ist sowas wie AB-Testing vollkommener Schwachsinn natürlich.

Thomas

Ich werde ja nicht eine Maschine sagen, ha, du kriegst die API und der andere Klein kriegt diese APIs und diese Daten.

Thomas

Das ist ja vollkommen konträre, ganz verschiedene Anwendungsfälle.

Thomas

Und drum, das war bei mir anfangs bei Angular, wo ich dachte, oh cool, eine API und da kann ich dann GUI entwickeln und außerdem eben da eine maschinelle Zugriff auf diese Seite haben.

Thomas

Aber es sind eben zwei ganz getrennte Dinge, die auch ganz getrennt behandelt werden sollten.

Thomas

Und da könnte man ja dann auch sagen, na gut, wenn ich Maschine-Maschine-Kommunikation machen will, könnte man ja sowas wie GRPC einsetzen, was dann im Endeffekt auch mehr Datentypen unterstützt und insgesamt optimaler ist.

Dominik

Wir haben noch nicht genau RPC erklärt und jetzt kommst du vielleicht mit GRPC an.

Dominik

Das muss man kurz erklären, was das ist.

Thomas

Das GRPC ist eine Technologie von Google und das ist ein binäres RPC, also Remote Procedure Call Methode und das ist sehr effizient und schnell.

Thomas

Ist auch Arschima-basiert, also du musst klar, der Server sagt klar, was für Daten er austauscht.

Thomas

Und das wird im Kubernetes-Bereich oder so ähnlich dann auch stark verwendet.

Thomas

Aber halt bei den Webentwicklern ist GRPC noch nicht angekommen.

Thomas

Und das wird wahrscheinlich auch noch ein bisschen dauern, bis das da bekannt und verstanden wird, um was es da eigentlich geht.

Ja.

Jochen

Naja, da ist JSON schon so das Ding, was man.

Jochen

Also ich meine, es gibt ja im Grunde keinen großen, keinen wirklichen Grund, warum man jetzt irgendwie, außer dass man halt das JSON-Ig naheliegt, wenn man jetzt JavaScript macht.

Jochen

Aber ansonsten gibt es da ja gar keinen Grund dafür, dass man könnte halt auch irgendwie andere Datenformate halt benutzen.

Jochen

Ich meine, weil bei Jungle Rest Framework war das ja auch mal so, da konnte man halt auch, ich glaube, ich weiß nicht, ob das heutzutage noch jemand macht, aber früher war das halt durchaus auch wirklich üblich, da zu sagen, okay, ich rendere mein Kram nicht nach JSON, sondern nach XML.

Jochen

Oder wie heißt dieses?

Jochen

Es gibt auch einen Binär-JSON B-JSON?

Thomas

JSON-B gibt das.

Ja, nee, das ist.

Ach, ich hätte das.

Jochen

Ich habe es wieder vergessen.

Jochen

Ja, es gibt irgendwie auch eine binäre Variante davon, die man auch mit Jungrexframe ganz gut verwenden konnte.

Jochen

Da wurde es halt ein bisschen kleiner.

Jochen

Aber ja, tatsächlich benutzen aber auch irgendwie alle JSON letztlich.

Thomas

Ja, aktuell.

Thomas

Ich bin ja ehrlich gesagt ganz tiefen entspannt.

Thomas

Also um 2001 habe ich meine Diplomarbeit geschrieben und klar, was war das Thema XML?

Thomas

Also damals ging alles um XML und auch das HTML sollte XML werden und so weiter.

Thomas

Dann bin ich ja so froh, dass dann dort irgendwie die Vernunft gesiegt hat und das XHTML sich nicht durchgesetzt hat und eben, weil es ist am Endeffekt dann auch nur Krampf, wenn man das zu sehr in die Richtung treibt.

Thomas

Und wie gesagt, damals war alles mit XML, aktuell ist alles mit JSON und da bin ich auch ganz tief entspannt, dass da dann irgendwie auch nochmal was Neues kommt.

Thomas

So ist auf jeden Fall die Entwicklung aus meiner Sicht.

Ja.

Jochen

Naja, da ist noch nicht aller Tage Abend, was diese auf JSON geeinigt hätten, das sehe ich auch nicht so.

Jochen

Das ist halt, also, ich meine, ehrlich gesagt, ich finde es persönlich angenehmer, als XML war doch mal ein Stück schrecklicher.

Dominik

Das ist so ein Grund, wo ich sagen würde, den Computer will ich nicht anfassen.

Dominik

Das ist komisch, ganz komisch.

Wirklich.

Ja, klar, da

Thomas

gab es die größten verschiedenkomischen Sachen wie XML.

Dominik

Viel schlimmer als Assembly oder sowas.

Ja.

Jochen

Tja, ja.

Dominik

Aber wir haben doch einige Sachen nicht erklärt.

Dominik

Und zwar, ähm, wie hieß er nochmal, Carsten Gross?

Jochen

Carsten Gross, glaube ich, spüren wir sie, weil er möchte wahrscheinlich vermeiden, dass man ihn dauert Gross.

Sorry, gut ist es.

Dominik

Jedenfalls hat er so einen Talk gehalten, da hat er auch viel über Hateers gesprochen.

Dominik

Also Hateers, ich eigentlich.

Dominik

Entschuldigung, denn

Jochen

das Akronym ist auch ein bisschen unglücklich.

Sehr gut.

Dominik

Was ist denn das und worum geht es denn da?

Jochen

Da hatten wir eigentlich doch schon drüber gesprochen.

Dominik

Ja, weil da gibt es ja schon Beispiele auch auf der Seite von HTMX und mach.

Thomas

Ich persönlich kann dazu halt nur sagen, dass ich es nicht weiß und mich interessiert es auch nicht.

Thomas

Das ist ein Steckenpferd und er zeigt viel und redet viel.

Thomas

Aber mir ist das zu abstrakt.

Thomas

Also ich halte mich aus den Diskussionen da auch raus, was ist REST, was ist HDOS oder irgendwas.

Thomas

Ich will, für mich ist HTTP greifbar, HTML ist für mich greifbar und so weiter.

Thomas

Aber das ist mir dann zu abstrakt und kann ich nicht viel zu sagen.

Dominik

Ich glaube, also ja, wahrscheinlich haben wir tatsächlich darüber geredet, wenn das halt, also die Übersetzung von Hateers ist Hypermedia at the Engine of Application State.

Dominik

Also da geht es so ein bisschen darum, dass halt tatsächlich die Quelle der Wahrheit dann an der richtigen Stelle steht.

Und zwar im HTML und ich weiß halt nicht mehr, was er wird.

Immer Hypermedia meinst im Webkontext HTML.

Dominik

Ja, okay.

Thomas

Obwohl für Quelle für die Wahrheit ist für mich einfach Postgres.

Thomas

Das sind die Daten, da kann man Strom ausschalten, dann kann man den Strom wieder anschalten.

Thomas

Dann weiß ich, wo meine Daten sind, die sind im Postgres drin.

Thomas

Und ja, das ist dort, das ist eben meine Perspektive, ja.

Jochen

Ja, aber genau das gut, das sind dann halt deine Datenhaltung, aber der Application-State ist ja jetzt nicht unbedingt in der Da hast du ja auch noch andere Sachen, da hast du auch noch solche Sachen wie dein Cache oder du hast halt vielleicht irgendwelche Ques und du hast halt auch noch irgendwie eine Session und ganz viel Zeugs.

Jochen

Aber klar, natürlich, also ja, die Frage ist halt, ja, also bei alles, was sozusagen im Browser passiert, ist halt dann in dem HTML halt irgendwie drin.

Jochen

Das ist halt so Dinge, diese Hetty S-Geschichte.

Jochen

Aber ja, ich finde das auch ziemlich kompliziert und theoretisch und das ist sehr schwer, das zu erklären.

Thomas

Das ist ähnlich wie Dependency Injection, da kann man sich das hundertmal erklären lassen und dann sage ich immer, für mich ist es wie Konfigurierung.

Thomas

Aber keine Ahnung, das ist mir zu abstrakt dann einfach.

Dominik

Ja, weil man den Talk schaut und erklärt das halt so ein bisschen, das ist vielleicht ganz gut, wenn man so vielleicht so ein bisschen versteht.

Dominik

Aber den Talk müssen wir natürlich auch verlinken, der ist ja natürlich sehr beim Recht.

Dominik

Ja, okay.

Jochen

Ja, aber da am besten hört man sich genau den Talk dann an und nicht uns, wie wir da vorreiten.

Thomas

Ja, das ist dann wahrscheinlich.

Thomas

Ich kann da nicht mitreden.

Keine Ahnung.

Ja.

Thomas

Ja, da habe ich noch eine Frage irgendwo.

Thomas

Ich sehe da, wo sind die Grenzen oder irgendwas, wann sollte man tatsächlich auf React oder wie umsteigen.

Thomas

Kam nochmal vorher mal so eine Frage.

Thomas

Und da sehe ich aktuell eigentlich keinerlei Grenzen.

Thomas

Also es erinnert mich so, wie ich vor 20 Jahren mit Python angefangen habe und da war eben so eine Sache.

Thomas

In der Firma meinte ich, na, wollen wir das nicht lieber mit Python machen, anstatt aus einer Mischung aus C, C<unk> und Shell-Skripten.

Thomas

Und dann hieß es, naja, da konnte ich dann konnte ich ja bloß herausboxen, dass wir für den Prototypen Python nehmen.

Thomas

Aber danach muss es sozusagen dann mal richtig gemacht werden.

Richtig, richtig oder hat dann C,

Thomas

C<unk> 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, wir sollten es ja in C oder C<unk> machen, weil einfach die Kunden zufrieden waren.

Thomas

Es hat schnell funktioniert, war alles prima und da kamen rein, weil neue Wünsche von den Kunden, sodass dann das eben nie wirklich richtig gemacht werden musste, wo ich auch sehr froh drüber bin und so und ähnliches ist es jetzt auch hier.

Thomas

Jetzt könnte man sagen, ja, dann, wenn man es richtig macht, dann müssten wir es doch in Vue oder React machen, aber keine Ahnung, nee, ich sehe da jetzt keinerlei Grenzen.

Jochen

Ja.

Jochen

Ne, würde ich auch sagen, also es ist halt echt, man kann damit wahrscheinlich für die allermeisten Sachen ausreichend viel machen.

Dominik

Ja, das einzige Problem ist wahrscheinlich, dass man wieder wie immer von vorne anfangen muss und dass einmal alles wieder in schön mit der anderen Technologie bauen muss.

Dominik

Oder so, dass das Change immer das Pain ist.

Dominik

Das war wahrscheinlich auch der Grund, warum die Leute und die Menschen bei dir dachten, mit CNC Plus Plus schreibt man bessere Webanwendungen oder so.

Dominik

Wenn es eine Webanwendung war, ist

Jochen

das natürlich nicht.

Thomas

Ja, das war damals auch im Web-basiert, ja, aber auch viel, viel Backend, aber das war halt einfach so üblich.

Thomas

Es war unüblich.

Thomas

Und das Unübliche wird natürlich erstmal in Frage gestellt und da ist klar, es ist erstmal kein Vertrauen da.

Thomas

Es ist ja immer so, wenn irgendwas Neues ist, mal kein Vertrauen da.

Thomas

Und je schneller etwas hypt, umso schneller ist auch die Wahrscheinlichkeit, dass es dann eben in zwei Jahren doch wieder weg ist.

Dominik

Naja, aber so haben wir jetzt immer schon gemacht, dass er Teil des Problems als der

Lösung ist.

Jochen

Ja, aber ich würde auch sagen, das ist halt sehr, sehr mächtig.

Jochen

Also ich würde auch sagen, das ist halt vielleicht einer der Gründe, warum halt so viel, warum halt so viele Frameworks, ja, also Frameworks sind ja auch so sind ja auch schon so Dinge, wo man, wo ich jetzt als Entwickler ehrlich gesagt sage, sagen würde, das will ich gar nicht haben.

Jochen

Also ich will, also Frameworks sind nicht meine Freunde, das ist irgendwie, und das ist mir durchaus klar, ja.

Jochen

Also ich will eigentlich möglichst wenig mit Frameworks zu tun haben.

Dominik

Also eins, das du kannst dann, oder?

Dominik

Bitte?

Dominik

Eins, das du kannst.

Jochen

Nee, ich will eigentlich keine Frameworks verwenden.

Jochen

Weil das Problem bei Frameworks ist natürlich, dass ich da halt eine richtig fiese, harte Kopplung, äh, enge Kopplungen dran habe und dass ich davon nicht mehr wegkomme.

Jochen

Und deswegen finde ich als Entwickler das natürlich gar nicht so angenehm.

Jochen

Auf der anderen Seite gibt es halt einen großen Druck, die zu verwenden.

Jochen

Aber der kommt ja meistens nicht von den Entwicklern, sondern der kommt ja meistens dann halt, und ich würde denken, dass bei den JavaScript-Frameworks ist das halt so, da das ist halt, das sind halt irgendwie Firmen, die halt, die halt vorher eine Applikation haben, das habe ich jetzt auch aus der Nähe in letzter Zeit irgendwie oft bestaunen dürfen, jetzt gerade was irgendwie in dieser Pandemiezeit halt, irgendwie, die haben halt Applikationen so irgendwie halt tatsächlich in C<unk> geschrieben oder Java oder sowas, die auf Clients laufen, ja, also die

Jochen

auf irgendwie auf dem Desktop laufen und die dann halt irgendwie mit einem Server reden oder halt irgendwas, was auch immer die dann tun.

Jochen

Und das funktioniert aber nicht so gut.

Jochen

Weil irgendwie, wenn die Leute jetzt zu Hause sitzen, dann denen kannst du dann zum Beispiel einfach nicht mehr so gut, also das deren Rechner hast du nicht so richtig unter Kontrolle, dann irgendwie Netzwerk ist oft schlecht, irgendwie, das ist alles, das funktioniert alles nicht so super.

Thomas

Dann hilft bloß halt so ein Citrix oder irgendwas oder halt Desktop-Sache oder irgendwas.

Jochen

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

Jochen

Und im Zuge dieses Erkenntnisprozesses, dass dann viele sagen, oh, das ist ja alles ganz furchtbar, das funktioniert ja gar nicht, stellen jetzt ganz viele um auf webbasierte Geschichten.

Jochen

Weil mit webbasierten Geschichten geht das halt.

Jochen

Klar, wirklich.

Jochen

Und naja, wenn ich jetzt sozusagen irgendwie eine große grafische GUI-Anwendung umstelle, halt auf irgendwas Webbasiertes, naja, dann ist halt sehr naheliegend zu sagen, okay, ich habe hier mein Team mit irgendwie 500 Leuten, keine Ahnung, irgendwie, in ein paar Teams aufgeteilt und die haben halt ihren Bildprozess und, keine Ahnung, ihre Tools und die Architekturpatterns, die sie halt irgendwie verwenden.

Jochen

Gibt es da nicht vielleicht irgendein Enterprise-Web-Framework, das ich verwenden kann, wo ich das dann quasi genauso machen kann?

Jochen

Und dann greift man halt vielleicht zu Angular, äh, Angular irgendwie oder so, weil das halt so ähnlich ist.

Jochen

Und halt auch dieses ganze Framework irgendwie Sprech und Enterprise-Sprech halt da mit drin ist.

Jochen

Und das Problem dabei ist aber natürlich, dass man das nicht eben nicht machen kann.

Jochen

Du kannst nicht einfach irgendwie eine große Applikation nehmen, du hast halt irgendwie dann das in quasi genauso, wie du es vorher gemacht hast, halt mit JavaScript machen und dann ist es halt eine Webanwendung.

Jochen

Das funktioniert halt nicht, sondern du musst eigentlich dir überlegen, okay, die muss dann halt anders funktionieren.

Jochen

Weil Web-Anwendungen halt nun mal einfach anders funktionieren als diese klassischen Desktop-UI-Indeptungen.

Dominik

Ja, dann müsste jemand auf jeden Fall erstmal den Unterschied verstehen, was vielleicht schon eine Herausforderung ist.

Dominik

Und dann muss ja jemand, der den Unterschied verstanden hat, den Leuten, die das entscheiden, auch erklären, dass das auch die richtige Idee

Jochen

ist, das zu tun.

Jochen

Aber das Problem ist jetzt, stell dir vor, du bist derjenige, der zuständig ist für diese Entwickler und du weißt, die kennen jetzt aber ihr sonst was Framework halt und wie kriegst du die beschäftigt mit einem mit der Umstellung auf irgendwas Webbasiertes?

Jochen

Ohne, dass du die ein Jahr lang schulen musst oder keine Ahnung, wie der Produkt für mich zu beeindruckt?

Das geht nicht so einfach.

Jochen

Ja, aber wenn du halt dann ganz verzweifelt genug bist, denkst dir, vielleicht geht's mit Angular.

Jochen

Und dann ist das nicht.

Dominik

Ich würde sagen, ohne diese Schulung geht das nicht so einfach.

Jochen

Also es ist einfach eine schwierige Situation auch.

Dominik

Also du musst, also wenn du die Sprache wechseln musst, ist es natürlich schon mal schwierig.

Dominik

Das heißt, vielleicht ist es gut tatsächlich, wenn man irgendwie vor Desktop-GUI-Anwendung in Python geschrieben hat, dann kann man vielleicht auch Web-Anwendung in Python schreiben, obwohl ich auch schon finde, dass das Django schon sehr anders ist als GUI-Sachen in Python schreiben, was man ja bestimmt unbedingt machen will.

Dominik

Naja.

Dominik

Also ich glaube, diesen Plattformwechsel, den kriegst du nicht so einfach hin.

Dominik

Also ich wusste jetzt auch nicht so genau, wie ich jetzt eine Android-Anwendung entwickeln will.

Thomas

Ja klar, das ist nicht einfach, aber das ist eine Aufgabe.

Thomas

Aber langsam oder sicher geht alles Richtung Web.

Thomas

Also für mich ist der Chromium mein neuer Desktop, also ich schalte zwischen Tabs hin und her, die im Chromium drin sind.

Thomas

Und das Native GUI habe ich nur noch den PyCharm.

Thomas

Und ansonsten eigentlich nichts.

Dominik

Du bist auch einer ein bisschen PyCharm nutzen, okay, verstehe.

Jochen

Ach, finde ich, kann man schon machen.

Dominik

Du hast ja auch in letzter Zeit wie Pycharm benutzt, ja, ich hab's

Jochen

auch schon gemerkt.

Jochen

Ja, wobei, also ich meine, ich weiß nicht, wie dir das geht, also tatsächlich mich benervt bei PyCharm, dass es halt relativ langsam reagiert.

Jochen

Ja, das letzte, habe ich letztens irgendwo gelesen, hat jemand, David Beasley hat das, glaube ich, irgendwie in einem seiner README's zu irgendeinem anderen Software-Projekt, hat er da sehr bösartige Dinge über Java gesagt.

Jochen

Und zwar meinte er so, ja, Java, ach es gibt, er spricht nicht von Java, sondern er sagte, es gibt da so diese Programmiersprache, ihr wisst schon, sie reimt sich auf Lava.

Jochen

Und da ist das immer so, die erkennt man immer daran, dass also an diesem Moment peinlicher Stille, bevor die Lüfter dann losheulen.

Das ist halt.

Thomas

Obwohl PyCharm ist flüssig zu bedienen, also da kann man keine Frage.

Echt findest du?

Nein, da braucht man halt einen aktuellen SLD.

Thomas

So, und also doch läuft eigentlich schon.

Naja.

Jochen

Nee, also ich meine vor allen Dingen bei PyCharm solche Sachen wie, man drückt auf irgendeinen Button.

Jochen

Oder man macht halt eine Tassenkombination.

Jochen

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.

Jochen

Und ich habe immer das Gefühl, wenn ich das drauf drücke, das ist halt, da sind so 100 Millisekunden Verzögerung oder so, bevor da irgendwas passiert.

Jochen

Und das nervt fürchterlich, weil das halt, ja.

Jochen

Aber.

Dominik

Ich habe übrigens angefangen, Jochen, dieses Jahr, und das habe ich mir fest vorgenommen, mein VI einzurichten und mal zu gucken, ob ich den vernünftigsten Laufen kriege.

Jochen

Ja, muss man machen.

Dominik

Ja, es nervt

ein bisschen.

Jochen

Ansonsten, Python finde ich eigentlich tatsächlich, nachdem ich das jetzt eine ganze Zeit lang benutzt habe, ziemlich cool.

Jochen

Also von den Features uns her, finde ich das total super.

Jochen

Da ist das echt gut.

Jochen

Das ist ziemlich komplet und ja, ist alles durchdacht, aber irgendwie das ist halt so ein bisschen sich so ein bisschen hässlich.

Langsam anfühlt.

Jochen

Ja, gut, es ist halt eine andere.

Ja, persönliches Empfinden.

Dominik

Aber vielleicht kann ich das so stylen, wie ich meinen anderen Sachen style, dann macht das doch gar keinen Unterschied mehr.

Jochen

Aber tatsächlich, das mit Chromium ist halt neue Desktop.

Jochen

Ich meine, da auch da irgendwie VS Code.

Jochen

Ich weiß nicht, ob du schon mal VS Code ausprobiert hast.

Thomas

Ich habe es mal ausprobiert,

Thomas

aber ja, mehr kann ich nicht dazu sagen.

Thomas

Ja, ich habe

mein Tage auf

Dominik

der Produkte.

Dominik

Eigentlich gar keine Ahnung, ich muss das auch mal.

Dominik

Es wird auch auf der Liste, aber kommt nach VI drin.

Jochen

Ja, weil da ist das ja auch irgendwie krumm drunter und das funktioniert eigentlich tatsächlich auch ziemlich gut.

Jochen

Ich würde sagen, tatsächlich, ich habe jetzt auch eine ganze Zeit, wie es gut.

Jochen

Es ist nicht so komplett wie PyCharm, es ist auch nicht so durchdacht und so, aber es ist tatsächlich, wenn man da irgendwie Command B oder das ist schneller als bei PyCharm.

Jochen

Aber naja.

Thomas

Okay, ja, ja.

Thomas

Kann schon sein, aber auf beim Laptop und auch selbst auf meinem Vorgänger ging es eigentlich gut.

Thomas

Er hatte mal irgendwie Probleme, als er irgendein Verzeichnis indiziert hat, wo er eigentlich nicht reinindizieren sollte.

Thomas

Da hat er ganz schön zu tun gehabt.

Thomas

Aber das kann man dann auch exkluden, dass er da nicht reingucken soll, weil da eben zigtausend Dateien drin sind und dann hört er auch auf damit.

Kann ich erstmal nicht.

Jochen

Vielleicht habe ich auch irgendwas falsch konfiguriert, das muss man ganz natürlich auch sein.

Jochen

Oder was ich auch mal hatte, da hat sie mir immer den Akku leer gesaugt, da hatte ich die, habe ich die JVM für Intel auf meinem Arm Mac verwendet und das lief dann in der Emulation und das war irgendwie auch ganz schrecklich.

Jochen

Das hatte, da dachte ich mal so, hä, warum zieht denn das so viel Akku?

Jochen

Das ist ja irgendwie, und dann musste ich eine andere JVM nehmen und dann war es gut und dann funktioniert das auch.

Aber ja.

Thomas

Ach, ein, was fiel mir noch ein zu JavaScript und den ganzen Spaßsachen.

Thomas

Was ich ja schön finde, dass das HTML sich immer noch weiterentwickelt und vorangetrieben wird, sodass man im Endeffekt dann weniger schreiben muss.

Thomas

Also ich zum Beispiel ein Date-Picker irgendwas.

Thomas

Wenn man danach sucht, da gibt es tausend Implementierungen von Date-Pickern.

Thomas

Aber ich als Webanwender will einfach dann nur fertig werden und da ist es einfach schön, wenn ich sagen kann, Input-Type ist gleich Date zum Beispiel.

Thomas

Oder eben Input Date Time Local, um eben Date und Zeite zu picken.

Thomas

Und das finde ich spannend, dass sich da halt das immer noch alles entwickelt.

Thomas

Und die Spezifikationen gibt es und sicherlich ist es leider noch so, dass eben unter iOS kein richtiger Chrome verfügbar ist.

Thomas

Das ist ein bisschen schade, dieses Apple Browser Band.

Thomas

Aber kann durchaus sein, dass da die EU dem bald ein Riegel vorschiebt mit dem Digital Markt Act.

Thomas

Es wäre sehr schön, wenn da, weil das ist, da kannst du als einzelner Webentwickler auf- und niederspringen und vielleicht kommt auch doch mal von der Legislative da irgendwas, weil es ist einfach ein Markt, der Apple Play Store und es ist ein globaler Markt und das dann dort zu diskriminieren gegenüber anderen Browsern ist einfach nicht in Ordnung.

Thomas

Also hoffen wir mal, dass dort das vorwärts geht, weil dann ist nochmal mehr Druck da, dass die Safari-Engine mal vorwärts macht und dass die da nicht absichtlich blockieren können.

Thomas

Es wird ja absichtlich blockiert, damit sie weiterhin schön Geld verdienen innerhalb ihres App-Stores.

Thomas

Und darum hat Apple überhaupt keinen Bock drauf auf Progressive Web Apps.

Thomas

Das ist halt vielen Leuten nicht bekannt.

Thomas

Wenn man mit Leuten drüber spricht, die jetzt nicht aus dem Software-Bereich kommen, die verstehen das erstmal gar nicht, von was man da spricht.

Thomas

Und naja, hoffen wir mal, dass da irgendwie das in der Richtung auch weitergeht.

Thomas

Weil dann geht es eben Richtung ProGress Web App.

Thomas

Gut, okay, das ist natürlich wieder eine Sache.

Thomas

Aufhänger HTMX, also HTMX, es ist sozusagen auf keinen Fall offline first oder irgend sowas.

Thomas

Man braucht die Verbindung zum Server.

Thomas

Das ist sozusagen eine ganz zentrale Sache an dieser Stelle.

Thomas

Wenn man

Thomas

dann Richtung ProGrephis Web-App schaut, dass man sagt, okay, man hat eine offline-fähige Web-Anwendung, klar, dann ist es mit JavaScript natürlich besser.

Thomas

Aber 99% der Fälle braucht man das eigentlich auch gar nicht.

Jochen

Ja, nee, Offline-First war auch mal eine ganze Zeit lang, das kam irgendwie so aus dieser ganzen Couch-DB-Ecke und eigentlich finde ich den Ansatz ja auch ganz interessant irgendwie.

Jochen

Halt quasi auch 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, quasi so ein SQL-Lite, haben die meisten irgendwie drin, was man verwenden kann.

Jochen

Und dann synchronisiert man das halt wieder zurück irgendwie und so.

Jochen

Das ist eigentlich auch alles ganz nett.

Jochen

Aber ja, tatsächlich war das dann aber doch nie so nötig, weil inzwischen ist ja doch fast überall Netz und es funktioniert eigentlich auch ganz gut.

Genau, das ist

Thomas

verzehnfacht einfach die Komplexität und den Aufwand, dass und drum geht eigentlich alles Richtung ständige Verbindung zum Internet.

Thomas

Also es gibt ja ganz wenige Sachen, wo es eigentlich wirklich braucht, wenn ich will.

Thomas

Ich will, wenn ich in der Bahn bin und habe keine Netz, keine Netzanbindung, will ich eine WhatsApp-Nachricht schreiben können oder ich will eine E-Mail schreiben und lesen können.

Thomas

Aber für alle möglichen anderen Sachen brauchst du einfach auch den Server, weil der hat ja die aktuellen Informationen und du kannst ja nicht aus den Fingern saugen.

Thomas

Und brauchst du eben die Netzwerkverbindung.

Thomas

Und darum klappt es erstmal so eigentlich ganz gut, auch kann man ganz gut viel abdecken.

Thomas

Eine Frage habe ich mir noch aufgeschrieben, ganz zentral ist eigentlich gut, also wir erstellen jetzt HTML serverseitig.

Thomas

Und irgendwie bin ich persönlich da jetzt auch noch gar nicht glücklich, mit der Methode HTML serverseitig zu erstellen.

Thomas

Also das, 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 da dieses Save-String ausgewertet wird.

Thomas

Also da wird alles, was gequotet werden soll, wird automatisch gequotet, außer es ist eben ein Safestring, 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.

Thomas

Ich hätte gerne so eine Mischung, dass ich sage, also im Python will ich HTML erstellen.

Thomas

Also ich will das jetzt nicht auslagern.

Thomas

Ich will dann nicht immer zwischen zwei Dateien hin und her wechseln.

Thomas

Einmal mein Template-File und dann mein Python-File.

Thomas

Also ich würde gerne das HTML im Python erstellen.

Thomas

Und das würde ich am liebsten mit F-Strings machen.

Thomas

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 auch noch nicht so richtig die optimale Lösung gefunden.

Jochen

Ja, ne, habe ich auch noch nichts.

Jochen

Ich weiß nicht genau, ob das mit F-Strings.

Jochen

Also tatsächlich in JavaScript geht das wahrscheinlich.

Jochen

Da gibt es ja diese Template, Literal Strings, ne?

Jochen

Damit könnte man das wahrscheinlich machen.

Thomas

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

Jochen

Aber so im Entscheidung gibt es das echt.

Ja.

Jochen

Ja, ja, ja, ja, ja.

Jochen

Ne, weiß ich auch nicht.

Jochen

Aber ja, das stimmt.

Jochen

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

Jochen

Alle machen das jetzt halt über diese Template-Geschichten, ne?

Jochen

Aber ob das jetzt der beste Weg ist, weiß ich auch nicht.

Thomas

Ja, aber also im Kontext von HTMX ist es bei mir so, ich erstelle kleine Methoden, die kleine Schnipsel zurückgeben.

Ja, warum brauchen die?

Warum sind

Thomas

das eben sechs, sieben Zeilen und für diese sechs, sieben Zeilen dann dann nochmal eine extra Datei öffnen, das tut dann den Fluss beim Softwareentwicklungen, bei der Softwareentwicklung irgendwie behindern.

Jochen

Aber kannst du nicht auch einfach ein Django-Template quasi in den Spring reinschreiben und den dann rendern?

Jochen

Weil du musst es ja nicht in den Pfeil reintun.

Thomas

Könnte ich auch, ja, klar.

Thomas

Könnte ich machen.

Thomas

Aber dann muss ich dem halt auch wieder einen Kontext geben und dann muss ich immer wieder schreiben, Name ist gleich Name und Login ist gleich Login und ähnlichen Spaß muss ich dem Kontext reingeben.

Thomas

Kann man machen, funktioniert auch.

Thomas

Aber irgendwie muss er halt seine Variablen bekommen.

Thomas

Man könnte da vielleicht einfach Globals übergeben.

Thomas

Ja, aber dann weiß die Idee nicht mehr, dass diese Variable eigentlich verwendet wurde.

Thomas

Und tut die hellgrau anzeigen, so nach dem Motto, hey, die kannst du doch eigentlich wegwerfen, die Variable hier.

Thomas

Ja.

Thomas

Ja, auch nicht ideal.

Jochen

Naja, stimmt.

Thomas

Gibt es noch Entwicklungsmöglichkeiten an der Stelle.

Jochen

Ja, ich bin, ähm, aber genau, das hat, da habe ich gerade diese Offline-App-Geschichte drauf gebracht.

Jochen

Ich weiß gar nicht, ob das Leute machen, aber ehrlich gesagt würde ich das auch gerne mal ausprobieren.

Jochen

Im Grunde kann man ja auch, äh, man kann ja auch, ja, das ist wieder dann das Problem mit der Pakettierung.

Jochen

Man kann in Python nicht einfach ein Binary bauen, aber wenn ich mir jetzt überlege, SQL Lite ist ja, also klar, kann man nicht so Konkurrent drauf schreiben, aber ist auch sehr mächtig und kann wahrscheinlich irgendwie, das meiste, was man so braucht, wenn man jetzt irgendwie eine Datenbank für eine Webgeschichte hat, kann man nicht einfach die komplette Webapplikation schippen mit einer SQL Lite und den Daten drin.

Jochen

Und dann sagen, so, hier startet das Ding und dann geht das halt auf Localhost, hat man halt eigentlich sozusagen die eigene Seite und dann, wenn irgendwas geschrieben wird, kann man sie einmal in SQL Lite schreiben, aber halt auch nochmal irgendwie über das Netz oder so.

Jochen

Oder man synchronisiert die Datenbanken irgendwie.

Jochen

So könnte man.

Thomas

Natürlich viel möglich, prinzipiell kannst du das, also da wird sich ja noch viel entwickeln, nach WebAssembly alles kompilieren und kannst prinzipiell auch wahrscheinlich Python nach WebAssembly kompilieren.

Ja, das haben ja auch schon Leute gemacht.

Thomas

Sub-Wups alles pakettieren und dann haust du schon einen Postgres hinterher und dann lädt der Kunde erstmal hier 50 Megabyte runter.

Ja.

Thomas

Und ich meine, obwohl 50 MB sind auch schnell runtergeladen.

Thomas

Und dann hast du dort alles drinnen im WebAssembly aus.

Thomas

Ich bin gespannt, was sich da entwickelt.

Ja.

Ja.

Jochen

Tja, tja.

Jochen

Kann man sich auf jeden Fall sich auch noch eine Menge interessante Dinge überlegen, was man damit alles machen kann.

Dominik

Ja, ich glaube, im harten Weg sind wir so ein bisschen fast zurück.

Ja.

Dominik

Ich hatte aber beim Thomas noch auf seinem Repo noch so ein paar Sachen entdeckt, wie sein Working Out Loud Repo, wo er so ein bisschen dann Sachen verlinkt und dann auch die Parsentipps entdeckt und so, wo ich einige Sachen an Jochenphilosophie endet.

Dominik

Und was ich entdeckt habe, war du, den PDM, den kannte ich tatsächlich noch nicht.

Dominik

Was ist denn das?

Thomas

Nochmals habe ich den schlecht verstanden.

Dominik

Den PDM, das sind Python Distro Manager oder sowas.

Dominik

Oder was macht der eigentlich?

Ich muss nochmal gucken.

Thomas

PDM.

Dominik

PDM.

Dominik

Ja, also ein Paketmanager.

Dominik

Den entdeckt das als Alternative zu Poetry, hast du den beworben.

Das kannst du auch.

Thomas

Beworben habe ich den, glaube ich, nicht, aber wir müssen mal aufbauen.

Dominik

Also ja, ja, ja, genau.

Thomas

Genau.

Thomas

Nee, ich war einfach da unsicher.

Thomas

Genau, bei mir ist öfters so, oder geht ja wahrscheinlich vielen so, man steht da, nehme ich jetzt Tool A, nehme ich Tool B, nehme ich 0C.

Thomas

Und da ist, ähm, seit einer Weile mache ich das so, dann gehe ich zu GitHub, zu meinem Account, erstelle da ein Repository, was im Endeffekt aus einer REATME besteht.

Thomas

Und dann schreibe ich da auf, was für Möglichkeiten überhaupt existieren.

Thomas

Das hilft mir, um meine Gedanken zu strukturieren.

Thomas

Im Endeffekt ist es erstmal einfach ein Zettel für mich, dass ich dann da habe und wenn ich die Bebrecherche 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 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 im Schreibtisch oder so und ich bin dann da.

Bei GitHub finde ich es nicht.

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 so Paketierungssachen gesprochen haben.

Dominik

Über das PDM, also das heißt Python Development.

Jochen

Habe ich auch noch nicht gehört, keine Ahnung.

Dominik

Jetzt ist das M wieder weg, das ist nicht ein.

Thomas

Das hast du bei den Python-Tipps gefunden hast.

Dominik

Ja, PDM.

Dominik

Moment, ich muss jetzt wieder zurückschauen.

Dominik

Python Development Master heißt es.

Dominik

Als Alternative für Poetry, ich habe noch nicht genau verstanden, wo das ist, deswegen war ich neugierig, weil wir ja mit Poetry in letzter Zeit so ein paar Probleme hatten.

Thomas

Genau, richtig.

Dominik

Und ob das vernünftig funktioniert.

Dominik

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

Thomas

Nee, ich habe damals recherchiert an einem Abend, das mal so aufgeschrieben, aber ich kann da jetzt keine Details dazu sagen.

Thomas

Und genau, mir geht es genauso.

Thomas

Ich tue nämlich den Artikel jetzt hier mal kurz aktualisieren mit dem Poetry.

Thomas

Ich bin aktuell einfach bei Pip und das klappt auch soweit eigentlich ganz gut.

Thomas

Also das Poetry konnte ich nicht so richtig da.

Dominik

Also ich verwende es nach wie vor, ich würde nur, man muss ja die blöden Bugs fixen, die uns allen auf die Nerven gehen.

Jochen

Ja.

Dominik

Also ich bin, wie gesagt, mit den Pip-Tools werde ich auch nicht warm, dass das irgendwie

weiß ich nicht.

Jochen

Also ich finde vom User Interface her ist Poetry schon deutlich schöner.

Jochen

Das Problem ist nur halt, es funktioniert nicht.

Dominik

Ja, genau.

Dominik

Man muss ja nicht immer alles noch verdrekt wegschmeißen, wenn sie kaputt ist.

Dominik

Manchmal kann man sich auch gradieren.

Jochen

Aber hast du mal, hast du, ich meine, ich habe letzte Woche wieder war ich auf dem Repository bei Poetry, weil ich irgendwie bestätigen wollte nach irgendwie, ich weiß nicht, wie vielen Leuten, dass das auch bei mir nicht funktioniert.

Jochen

Und da habe ich dann, also wenn man da, ich weiß nicht, wie viele offene Issues da sind gerade irgendwie 1000 oder sowas.

Dominik

Und einen Corporate-Monat einlegt und alle gemeinsam an Poetry's Verbesserungen arbeiten und dann ist das Problem endlich alle mal aus der Welt geschafft.

Jochen

Tja, tja, ja, genau.

Jochen

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

Jochen

Und es ist halt nur ein einzelner Typ, der in seiner Freizeit macht.

Thomas

Ja klar, kann man ihm ja auch keinen Vorwurf machen, aber ich

meine nicht.

Alles prima, ne?

Dominik

Ja, ja, also ich meine, aber es ist halt halt so beliebt, dass halt so Sachen finden.

Dominik

Und dann braucht er eigentlich halt Hilfe, ne?

Ja.

Thomas

Ich habe hier Pip und dann für Sachen kann man auch Pip-Tools obendrauf nehmen.

Thomas

Reicht erstmal voll aus.

Jochen

Ja, Pip-Tools habe ich jetzt auch letztens, fand ich eigentlich, also das hat auch ganz gut funktioniert, das ist halt ein bisschen hakliger zu benutzen.

Jochen

Das ist so ein bisschen, aber weil man dann halt lange Kommandozeilen, mit denen man da irgendwie den Kram dann.

Jochen

Aber ja, aber es funktioniert tatsächlich ziemlich gut, muss ich auch sagen.

Jochen

Und es hat halt die ganzen Paketfunktionen, die Poetry hat halt nicht.

Jochen

Aber ehrlich gesagt, die brauche ich auch nicht.

Dominik

Ja, also was ich halt eigentlich nur brauche, sind eigentlich zwei Sachen.

Dominik

Poetry Add, Poetry Remove, Poetry, Poetry Update und Poetry Install.

Jochen

Ja gut, aber dann sollst du ja auch nicht halt bei dem, was Pip-Tools können, nur dass Pip-Tools das halt sehr unkomfortabel machen.

Ja, und ja, genau.

Jochen

Naja, gut.

Dominik

Aber irgendwie ist das noch nicht aller Tageabend, was das angeht tatsächlich.

Dominik

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

Dominik

Auf eurer Listisch stehen.

Thomas

Nö, ich bin durch.

Jochen

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

Dominik

Dann kommen die Picks der Woche, des Monats, der Folge jedenfalls dann.

Dominik

Was habt ihr denn da ausgesucht?

Dominik

Also ich fange vielleicht einfach an.

Dominik

Ich weiß nicht, ob ich schon mal gesagt habe, das vergesse ich, wie gesagt, immer, ich muss jetzt mal aufschreiben.

Dominik

Die Python Dev-Tools, kennt ihr die?

Dominik

Das ist so Python Dev-Tools, da kann man sich einloggen.

Dominik

Man kann einfach Sachen wie statt Print ein Debug-Statement in Python, was dann Pretty Print macht und so.

Dominik

Einfach so ein paar Kleinigkeiten.

Jochen

Nö, natürlich, nö nicht, nötig.

Jochen

Nö, kann ich ja nicht.

Jochen

Wo findet man das oder was ist das?

Dominik

Einfach Python-Heintop.

Jochen

Ach ja, ich glaube, ich hab's.

Was macht das?

Dominik

Ich glaube, das ist ein anderes.

Dominik

Guck mal kurz, dass das mal kurz auf die Doc Help-Manual.io irgendwie.

Dominik

Python-DevTools einbort.

Jochen

Achso, äh.

Dominik

Nee, ist das eine andere.

Wahrscheinlich mehrere.DevTools.Help-Manual.io.

Jochen

Nee, okay, kriege ich nicht hin.

Dominik

Ja, egal, auf jeden Fall, das sind nicht viele Funktionen, aber irgendwie fand ich es ganz nett und das sah ganz niedlich aus.

Dominik

Und ich mag ja so moderne Terminal-Sachen sehr gerne.

Dominik

Ah, den Lochenpick der Woche, ich habe meine Dot-Files mal ein bisschen aktualisiert.

Dominik

Die sind ja vor allen Dingen auch für viele Windows-Nutzer ganz gut geeignet, weil ich muss das ja auch auf der Arbeit nutzen und so.

Dominik

Und da kann man sich jetzt, wenn man das vernünftig installiert, unter einer PowerShell die ganzen Modern Unix-Commands ziehen und die alle reinpacken.

Dominik

Ist das nicht so Python-spezifisch?

Dominik

Aber auch Virtual Wrapper habe ich eingebaut, jetzt nur die Funktion, die ich nutze, dass es nicht viele sind.

Dominik

Damit es ein bisschen kompabler ist, weil Virtual Wrapper PowerShell irgendwie nicht so richtig

Jochen

funktioniert hat.

Jochen

Okay, da habe ich das doch eine sehr gute Überleitung.

Jochen

Was benutzt du denn zum Managen deiner Dot-Files?

Dominik

Tatsächlich Git.

Jochen

Ja, aber

Dominik

was meinst du mit Managen meiner Dot-Files?

Jochen

Naja, wenn du jetzt auf einer.

Jochen

Nehme mal, du hast einen neuen Account irgendwie auf einer anderen Maschine, logst dich die ein, setzt gerne deine Dot-Files da so wie überall sonst auch.

Dominik

Genau, ich habe in meinem Dotfiles-Repo für die jeweiligen Systeme, also im Moment ist es halt PUSIX und Windows und für Nix ist auch was, aber das funktioniert nicht richtig, das ist halt nicht public.

Dominik

Install-Skripte, das heißt, ich mache halt eine Admin-Shell auf und starte das Install-Skript.

Dominik

Dann clont er mir die eigentlich an die richtige Stelle, die meistens einfach Home Dot-Files ist.

Dominik

Dann im Install-Skript führt er dann das SIM-Link-Skript aus.

Dominik

Das heißt, der Link quasi von meinen Config-Files komplett auf die Configs vor dem Programm, die ich natürlich installieren musste, auch in dem Install-Skript.

Dominik

Das heißt, er installiert alle Programme als SIM-Link-T und fertig.

Jochen

Okay, aber und welches Skript ist das?

Jochen

Hast du es

Jochen

selber geschrieben?

Jochen

Ja.

Jochen

Ah, okay.

Jochen

Ja, weil da gibt es ja dann schon einige Sachen.

Jochen

Also ich habe bisher immer Dotbot verwendet dafür.

Jochen

Okay.

Jochen

Aber das ist mir letztens irgendwie, als ich, ich weiß gar nicht, weil was da anlass war, wo es mir dann kaputt gegangen ist.

Jochen

Und ich mir dachte so, 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 hat.

Dominik

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

Dominik

Vielleicht bin ich noch so.

Dominik

Ich habe alles noch ganz einfach selber geschrieben, weil so viel ist das ja nicht jetzt.

Jochen

Ja, ja, gut.

Dominik

20 Simlings oder was der ersetzt und dann einmal Software mit dem bei jeweiligen Systempaketmanager installieren, den du ja auch auf Windows installieren kannst.

Dominik

Da musst du halt nur zuerst den Paketmanager installieren.

Dominik

Und dann ist ja alles eh Open Source, das macht er ja 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 mittlerweile für die PowerShell geht.

Dominik

Und das ist, oh, das ist auch was ganz Tolles, das ist auch in den Dot-File schon drin.

Dominik

Es gibt seit November für die PowerShell einen Autocompletion, das so ein bisschen funktioniert wie das von Fisch.

Und das ist, ja, das brauche ich natürlich immer.

Dominik

Weil ich normalerweise mit der Fish-Shell da sehr dran gewohnt bin und sehr viel Zeit sparen kann.

Jochen

Ja, genau, weil, und dann, also das Ergebnis war dann, wäre dann mein Pick, was ich jetzt versuche zu verwenden.

Jochen

Also ich bin gerade dabei, das auszuprobieren und zu gucken, was ich da, wie ich das so hinbieten kann, dass es das tut, was ich gerne davon hätte.

Jochen

Und zwar das Tool heißt Chesmois.

Chemois.

Jochen

Ja.

Jochen

Chemois, genau.

Ja.

Jochen

Und das ist so ein Go geschrieben.

Jochen

Das ist also wie so ein auch eines von den, werden ja momentan ganz viele System-Tools.

Jochen

Das macht tatsächlich keine SIM-Link-Geschichte.

Jochen

Oder macht halt auch unter Umständen SIM-Links, ne, ich glaube aber eigentlich nicht.

Jochen

Das guckt sich an, wie der Zustand deine aktuellen Pfalz ist, wie es sein sollte, sozusagen auch aus dem Git-Repo und passt es dann halt an.

Jochen

Und das kann halt jetzt noch so ein paar Sachen mehr.

Jochen

Also einmal das Schöne ist halt, dass es halt, da es quo ist, kriegt man halt so ein statisches Binary, was keine Abhängigkeiten hat, relativ leicht auf jeder Maschine.

Jochen

Und das hat halt auch noch so eine Templating-Language mit drin, womit man dann halt sozusagen je nachdem, was auf der Maschine irgendwie gesetzt ist, halt Dinge anders machen kann.

Jochen

Also wenn halt so Umfeldzeit anders ist, dann müssen manche Dinge ja anders sein oder wenn der User anders heißt.

Dominik

Das sieht sehr schön aus.

Jochen

Das ist ziemlich cool und es hat halt auch Anbindungen an alle möglichen anderen Geschichten, wie zum Beispiel an irgendwie Passwortmanager und so, sodass du halt auch deine SSH-Keys irgendwie rüberziehen kannst und solche Sachen.

Jochen

Das ist ja geil.

Dominik

Oh, ich habe ein neues.

Jochen

Ja, und das ist halt ziemlich cool.

Jochen

Es gibt How-Tooster für alle möglichen Anwendungsfälle, wo man sich das, äh man sich da angucken kann.

Jochen

Also ich verwende es jetzt oder ich probiere damit so ein paar, seit ein paar Tagen irgendwie Dinge mitzumachen.

Jochen

Und ich bin eigentlich sehr angetan.

Jochen

Also ich glaube, das wird wahrscheinlich demnächst meine neue Lösung zum Managen meiner Dot-Files.

Dominik

Das klingt sehr, sehr gut.

Dominik

Ich hätte da noch eine andere Frage an der Stelle.

Dominik

Ich weiß nicht, ob das jetzt hier hinpasst, aber worauf ich gerade versuche umzustellen, ist, die ganzen Keys, weil du gerade von geredet hast, mit Key-Rebus und so, mit Yubi-Keys zu schützen.

Dominik

Also eine Zwei-Faktor-Authentifizierung da reinzubauen.

Dominik

Geht das auch einfach so?

Dominik

Weil ganz cool, weil ich hab, bei mir funktioniert es auch so Mittel gut.

Dominik

Also ich habe erst meine wichtigsten Applikationen da mit drin, aber das könnte.

Dominik

Das wäre natürlich noch richtig klasse, wenn ich dann einfach irgendwie an der richtigen Stelle den richtigen

Jochen

Stick habe oder so.

Jochen

Das müsste eigentlich funktionieren.

Jochen

Also YubiKey ist halt die Frage, wie man das, wie man.

Jochen

Ich meine, ich würde es sowieso, ich meine, ich verwende ja One-Passwort, auch wenn ich das natürlich irgendwie auch ein bisschen unangenehm ist, dass er so teuer ist und dass es so ein Subscription-Modell hat, aber das ist halt das einzige Ding, was ich gefunden habe, was halt zuverlässig auf allen Geräten funktioniert und halt auch irgendwie eine durchdachte UI hat.

Jochen

Und das funktioniert auch mit Chesmoir.

Jochen

Ah, Chemois.

Jochen

Meine Güte, Französisch.

Franz tatsächlich, ja.

Ich weiß jetzt nicht genau.

Ja, ich muss mir das einfach mal durchlesen.

Dominik

Das sieht auf jeden Fall sehr, sehr toll aus, weil genau das ist halt diese ganzen Skripte, dass ich mich alles nicht mehr machen muss, weil es alles von automatisch weißt.

Dominik

Muss ich mich an der Struktur halten von meinen Dot-Files dann?

Dominik

Irgendwie standardisiert oder so?

Ja.

Dominik

Wahrscheinlich, ne?

Dominik

Ja, mal gucken, vielleicht mag ich das.

Dominik

Das sieht auf jeden Fall sehr toll aus, dass man einfach sagt, Schemoir und dann gleiche Line mit Install, dein Username und dann einfach nur Trainer Update, das ist schon cool.

Jochen

Ja, ja.

Ja.

Jochen

Und du?

Äh, ich?

Ja.

Ich nutze da

Thomas

kein Tool.

Thomas

Also ich hatte da früher mal das wenigstens noch irgendwie weggesichert oder irgendwie so.

Thomas

Also speziell nochmal extra zu einem normalen Backup.

Thomas

Aber ansonsten habe ich da jetzt eigentlich nichts Spezielles, weil ich da auch nicht viel anpasse eigentlich.

Thomas

Also, ja.

Thomas

Ich nutze ja nicht den VI oder so, wo es so viele.

Jochen

Ja, ja, den muss man halt irgendwie ausgiebig konfigurieren.

Thomas

Vom E-Macs mal weggewechwechselt.

Thomas

Da war das auch noch beim E-Mac, musste man da eine ganze Menge machen.

Thomas

Aber jetzt habe ich eigentlich nur eigentlich nichts, was ich da groß verwalten sollte.

Dominik

Ja, aber dann musst du jetzt mit deinem Pick der Folge noch.

Dominik

Hast du einen?

Thomas

Nö, hab ich nicht.

Dominik

Okay, also kein PIS-Modul gestolpert, dass du sagst, das musst du die ganze Welt kennen.

Jochen

Äh, ganz kurz, zum Beispiel, also eine Sache, die man gerade auch, äh, die ich gerade gesehen habe, wo du sagtest, Sachen installieren.

Jochen

Wenn man das macht, also ich hab bei, das ist eine der Geschichten, die ich gestern, glaube ich, gemacht habe, bei Schimmer, ist wenn dann, wenn das, man kann Dinge, Skripte definieren, die ausgeführt werden sollen, wenn sich was geändert hat.

Jochen

Und wenn, ich habe dann zum Beispiel bei Mac gibt es ja Homebrew, nicht Chocolati, es ist bei Windows, bei Mac ist Homebrew.

Jochen

Da kann man ein Brew-File haben, wo die ganzen Pakete, die man so installieren möchte, drinstehen und wenn man das ändert, dann sagt man auf einer anderen Maschine irgendwie, genau.

Jochen

Dann wird dieses Skript ausgeführt, zieht sich das File rein und wenn sich das geändert hat, dann installiert es es halt direkt.

Jochen

Das ist ja cool, ja.

Jochen

Und das ist halt schon sehr nett.

Dominik

Ja, sowas muss ich halt alles noch manuell machen.

Dominik

Ich habe halt meine Listen, die dann unterschiedliche pakettierte Paket-Packages quasi installieren, wenn ich das dann will.

Dominik

Aber ja, ich finde das ganz interessant, weil ich finde, man wird vielleicht auf verschiedenen Maschinen auch nicht immer alle Pakete gleichzeitig.

Egal, dass das so ein bisschen.

Dominik

Müssen wir uns auf jeden Fall mal angucken, wie so der Use Case davon hast du hast.

Thomas

Mir ist mir noch was eingefallen.

Thomas

Ich habe das Tool Copy Q verwendet.

Thomas

Also wie Copy und dann ein Q.

Thomas

Und das ist ein Clipboard Manager und das finde ich ganz praktisch, weil der eben eine History hat von den Sachen, die ich eben in der letzten Zeit mit Copy und Paste und hergenommen habe.

Thomas

Und dann kann ich mit STRG Alt V eben gucken, was ist in der Liste drin und da hat er ja sogar auch Bilder drin und mit Formatierung und so weiter.

Thomas

Das ist, finde ich, super praktisch.

Thomas

Und dann kann man halt natürlich auch in der Liste super schnell suchen, indem ich mit Autocomplete halt eben hier die ersten Zeichen von der gesuchten Zeichenkette eingeben kann.

Thomas

Und das finde ich sehr praktisch, dass man das so eine Art Rucksack mit dabei hat, da kann man alles reingewesen.

Dominik

Also so ein Copy, also Buffer mit mehreren Buffern halt, ne?

Das ist das schon sehr schön.

Thomas

Genau.

Thomas

Das gibt es im Emacs, gibt es im PyCharm, aber im Endeffekt ist es ja cooler, wenn man es auf dem Desktop hat, überall Anwendungen hinbekommen.

Dominik

Ja, genau, gibt es halt auch in VS Code.

Dominik

Sogar auf Windows.

Dominik

Ich habe auch das mal gesucht für so eine Alternative für Windows und das funktioniert alles einigermaßen cool, ja.

Ah, schön.

Ja, genau.

Das ist ganz praktisch.

Ja, sehr gut.

Jochen

Ah, ich hätte noch, oh, ich habe auch noch einen zweiten.

Jochen

Da gab es jetzt letztens ein neues Buch von Adam Johnson, ein sehr schönes Schon geschrieben, nennt sich Speedup Your Django Tests.

Jochen

Da haben wir bestimmt auch schon mal drüber geredet, das ist irgendwie ganz toll.

Dominik

Kurz, ja.

Dominik

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

Jochen

Ach, wieso?

Jochen

Oder was muss man da?

Das ist nicht so schlimm.

Dominik

Also ich glaube, es gibt noch nicht so richtig gute Möglichkeiten, das zu testen.

Aber natürlich.

Jochen

Ja, du testest das wie jeden anderen View auch.

Ach so.

Da musst du gar nichts machen.

Jochen

Das ist ja halt das Toll.

Dominik

Okay, dann habt ihr nichts gesagt.

Jochen

Ja, das ist tatsächlich sehr nett.

Jochen

Also dieses Prozent auch los.

Dominik

Dann wollte ich dich nicht weiter bei deinem Buchpick und.

Jochen

Ja, ja, Moment, aber ich würde gerne abschweifen und nochmal über JavaScript herziehen, weil das noch nicht genug passiert ist.

Jochen

Also ich habe ja jetzt in letzter Zeit auch so ein bisschen View, so View ist halt das Framework, was ich noch vielleicht am interessantesten finde.

Jochen

Und Websockets und so gemacht und so und da halt auch dann Tests geschrieben.

Jochen

Und ja, also dann habe ich mit Jest ganz viele Tests gemacht und das ist echt, also das ist, das war, das hat wirklich keinen Spaß gemacht.

Dominik

Ist das Symbol von Jest nicht diese Clowns-Gauklamütze auf dem Kopf?

Jochen

Ich weiß es nicht genau.

Ich weiß nicht, guck mal kurz bitte nach.

Das würde sehr gut sein.

Jochen

Kann sein.

Dominik

Ja, ich musste auch Testmütze schreiben müssen.

Jochen

Ja, auf jeden Fall, das war halt echt, oh, also.

Das ist der Gauklarschuh.

Jochen

Also das ist jetzt auch quasi gar nicht mehr so neu und so.

Jochen

Und dann, ich bin mehrfach in Sachen reingelaufen, wo ich dachte, so das geht nicht oder, oh, das kann ich jetzt so nicht machen, okay, wie macht man das dann richtig?

Jochen

Und dann landet man halt auch irgendwie so in so Wüsten-Gitub-Issues, wo

Jochen

seit Jahren schon Leute sagen,

Jochen

das ist aber nicht so schön hier, was ist denn da los?

Jochen

Geht das nicht?

Jochen

Und dann geht es halt tatsächlich nicht, und zwar immer noch nicht.

Jochen

Und es ist halt auch, und dann die Integration mit Viet habe ich dann halt schwierig.

Jochen

Und also diese Developer-Experience war eher so mittelmäßig.

Jochen

Und genau, allen Leuten, die glauben, dass JavaScript-Entwicklung voll gut ist und dass das noch nicht zugüngt ist und dass man das unbedingt auf dem Server machen möchte, dann würde ich fragen.

Jochen

Also ihr kennt schon so ordentliche Web-Frameworks auf dem Server.

Jochen

Habt ihr schon mal verwendet?

Jochen

Habt ihr euch das mal angeguckt, wie das da so geht?

Jochen

Aber wenn nein, guckt es euch mal an.

Dominik

Aber auch das wird ja besser.

Dominik

Du hast ja letztens auch noch eine Sache gelingt, Pinya als Ersatz für VX, das

ist ja schon.

Jochen

Für den Verbesserung.

Dominik

Mit DevTool-Support und sowas ist da auch, ja.

Dominik

Aber das braucht man halt nicht, wenn man das so beim Server macht, weil das halt.

Jochen

Ja, naja, jedenfalls, genau.

Jochen

Da wollte ich nur kurz.

Jochen

Genau.

Jochen

Boost your, genau, Anim Johnson, der hat ein neues Buch geschrieben, Boost Your Developer Experience.

Jochen

Und genau, ich habe es noch nicht gelesen, weil es so frisch ist, es kam jetzt am Montag raus, dass ich es noch nicht dazu gekommen bin.

Jochen

Aber kann man sich ja mal angucken.

Jochen

Da ist auf jeden Fall wahrscheinlich eine Menge tolle Sachen drin.

Jochen

Also es geht halt um viele, auch jetzt eben solche Dinge wie halt Pre-Comet-Tox oder halt Pi-Upgrade und ja, auch viel Nicht-Django-Zeugs ist da halt auch drin.

Thomas

Aber ich kann es auch empfehlen, hab schon gelesen.

Jochen

Achso, ach ist ja gut.

Thomas

Ja, ich habe es zufälligerweise zugeschickt bekommen vom Auto her.

Thomas

Zum Probelesen.

Thomas

Und ja, es ist okay, genau.

Thomas

Also ich finde es auch schön, also auch das vorhergehende Buch von ihm, Speedup Python-Tests.

Thomas

Ich finde es schön, wie er schreibt, ganz pragmatisch, also ohne großes Blabla.

Thomas

Schön lohnt sich.

Jochen

Ja, ja, ja, ja, ja.

Dominik

Na gut, dann noch mit diesen Worten als Schlusssatz.

Dominik

Werdet es doch gewogen und haltet wieder rein.

Dominik

Das nächste Mal.

Thomas

Ja, klar.

Dominik

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

Dominik

Ich wünsche euch noch einen schönen Tag, Abend, Nacht, wo auch immer ihr seid.

Dominik

Und bis dann.

Dominik

Tschüss.

Dominik

Ciao, ciao.

Danke, Thomas.