Transkript: CSS / Markdown / Microservices

· Zurück zur Episode

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

Dominik

Ja, hallo und herzlich willkommen bei einem Python-Podcast.

Dominik

Heute Episode 40, Jochen im Jubiläum.

Jochen

Oh ja, herzlich willkommen, Dominik.

Jochen

Ja, 40.

Jochen

Das ist ja schon viel älter als wir sind.

Dominik

Ja, fast.

Jochen

Ja, zumindest teilweise.

Dominik

Ja, noch.

Dominik

So.

Dominik

Was wollen wir heute machen?

Dominik

Wir haben erst überlegt, ob wir irgendwas über Ensibel erzählen wollen, aber das müssen wir wann anders, glaube ich, nachholen, weil wir niemanden gefunden haben, der sich mit Ensibel so richtig gut auskennt, den wir ja gerne als Gast gehabt hätten.

Dominik

Wenn ihr also von Ensibel Ahnung habt und was erzählen wollt, dann sagt uns doch einfach mal Bescheid.

Das gilt

Dominik

auch übrigens für alles andere Feedback, was wir uns schicken wollt, an hallo im heißenpodcast.de.

Jochen

Genau, wenn ihr ein Thema habt, über das ihr gerne mal gesprochen haben wollen würdet, dann könnt ihr das auch gerne selber benutzt tun oder jemanden nennen, die wir mal fragen sollen.

Dominik

Wir haben zwar noch viele schöne Themen auf unsere Liste und so, aber wir lassen uns doch immer gerne bereichern mit neuen tollen Themen.

Jochen

Da müssen wir vielleicht nachher nochmal drüber reden, welche Themen das denn sind, damit Leute dann auch eine Chance haben, irgendwie zu sagen, ob sie jemanden kennen.

Dominik

Ja, die können ja einfach ihr Thema bringen, auf das sie besonders Lust haben und dann gucken wir.

Jochen

Okay, dann sagen wir das jetzt zuerst, wo noch so viele Leute dazuhören, dass sie das mal machen sollen und dann.

Dominik

Ja, ja, es gibt ja so eine Burn Rate, wenn man so funktioniert.

Jochen

Genau, und dann am Schluss ist ja keiner mehr übrig.

Dominik

Ja, aber was machen wir denn dann heute?

Dominik

Wir wollten einfach so ein bisschen mal wieder kunterbunt durcheinander reden, Talks besprechen.

Jochen

Eben so Metageschichten vielleicht tatsächlich mal wieder.

Jochen

Das haben wir jetzt auch schon länger nicht mehr gemacht.

Jochen

So eben über was man mal reden könnte oder ja, was wir so klar tun.

Dominik

Meta, ja, Meta über was, ja.

Dominik

Über Podcasts ist es nicht Meta, bei Python ist es nicht mehr.

Dominik

Ich glaube, das eigentlich so Webdev-Meta, oder?

Dominik

Also was man so alles benutzen kann an Tools

Jochen

oder so.

Jochen

Ja, ich bin gerade so machen.

Jochen

Wir machen ja relativ viel Webentwicklung oder ich mache gerade relativ viel Webentwicklung seit einer ganzen Zeit.

Jochen

Ich weiß auch nicht, warum das so ist, weil ich mache ja eigentlich auch viel Maschine Learning-Kram und so, aber hab auch mal viel gemacht, aber in letzter Zeit ist es irgendwie mehr Webentwicklung, obwohl das andere Ding ja auch gerade so halb, ich weiß nicht, woran das liegt.

Jochen

Ich muss ja vielleicht irgendwie einfach mehr Machine Learning wieder machen.

Dominik

Ich wollte gerade zeigen, ob wir einfach den Job wechseln jochen.

Jochen

Ja, das kann natürlich auch sein.

Jochen

Ja, ja, gut.

Vielleicht Webentwicklung ist eigentlich so ein bisschen Convenience Webentwicklung, wo man machen.

Jochen

Das kann man mal so ein bisschen dazwischen schieben, aber Teilzeiten ist nicht

so schlimm.

Dominik

Also Machine Learning auf Blockchain oder so.

Jochen

Oh mein Gott.

Jochen

Ja, das ist jetzt nur das, weiß ich jetzt nicht.

Dominik

Duo-Infernale.

Jochen

Aber genau, vielleicht fangen wir einfach mit News an.

Jochen

Okay, warte mal, ich war noch die Kapitelmarke.

Jochen

News.

Oh.

Jochen

So.

Dominik

Dafür musste ich jetzt aber ziemlich strecken.

Ja.

Dominik

Das müssen wir noch optimieren.

Jochen

Der Raum ist noch nicht ganz optimal, das stimmt.

Dominik

Okay.

Dominik

Also wir haben gerade ein Kapitelmarke.

Jochen

Ich sehe schon, dass die Kapitelmarke irgendwie am Anfang jetzt sitzt und nicht da, wo ich eigentlich sie haben wollte, irgendwie funktioniert das alles noch nicht so richtig.

Dominik

Ja, im Make-Produkt wird eh eine Laberfolge.

Jochen

Was ist denn da schon wieder kaputt?

Jochen

Okay, ich stelle jetzt hier mal das Ding im Ultraschall auf Follow, dem Ding da.

Jochen

Wir benutzen

Dominik

übrigens Ultraschall zum Aufnehmen.

Jochen

Ultraschall 5, sehr gut.

Dominik

Ein Plugin auf Reaper.

Jochen

Ja, genau.

Jochen

Wie produziert man Podcasts oder das müssen wir auch nochmal irgendwann machen.

Dominik

Das haben wir noch gar nicht, haben wir da schon mal gesagt, wie man Podcasts produziert.

Dominik

Wie wir online produzieren vielleicht.

Dominik

Also Kurzversion ist tatsächlich, wir nehmen das auf mit diesem Plugin für Reaper.

Dominik

Reaper ist eine Software, die eigentlich kostenlos, aber es ist nicht.

Nein, nein, nein.

Dominik

Ja, aber in der Testversion, also Evaluation-Version gibt es.

Dominik

Also erstmal zum Ausprobieren kostenlos.

Dominik

Ich wollte jetzt sagen auch.

Dominik

Und dann gibt es halt dann das Plugin-Ultraschall für Podcasts, was echt cool ist.

Dominik

Und danach machen wir noch so Post-Production mit Aufwonic.

Jochen

Ja, und Shownotes schreiben und so.

Jochen

Das macht man auch so leider nicht automatisch, sondern muss man irgendwie von Ort.

Dominik

Ja, aber Show Notes kann man ja einigermaßen gebrauchen, dann kann man nochmal nachschauen, was denn dafür für einen Quatsch irgendwann mal erzählt haben.

Dominik

Vielleicht ist dann ein bisschen Show Notes drin, wenn das denn jemand aufgeschrieben hat.

Jochen

Genau.

Jochen

So, jetzt kann ich auch die News-Kapitelmarke nochmal verschieben.

Jochen

Hier hat es kein schlechtes Gewissen haben, weil.

Dominik

Jetzt haben wir aber auch wirklich ein bisschen Meta über Podcasts, ist doch schon mal etwas.

Dominik

Aber das bestimmt auch bei anderen Podcasts gleich erzählen.

Jochen

Ja, aber vielleicht.

Dominik

Erstmal News, News, na gut.

Das ist ein bisschen Neues.

Jochen

Also ganz schick, Taskgroups gibt es jetzt in gerade gemerkt worden für Python.

Dominik

Okay, was ist Taskgroups?

Dominik

Fangen wir vielleicht erstmal damit an.

Jochen

Naja, also sagen wir so, es gibt ja irgendwie bei, also es gibt eine Schwachstelle bei Python-Async-Geschichten, die halt da schon oft irgendwie Leute irgend bisschen depressiv gemacht hat oder keine Ahnung oder geärgert hat.

Jochen

Ich weiß nicht, genau wie man es am besten.

Jochen

Also zum Beispiel Trio ist eine Bibliothek, die sich halt mit diesen ganzen Problemen bestellt.

Jochen

Es ist halt auch schwierig, ja, Trio.

Jochen

Nathaniel Smith hat die hat die geschrieben, also es gibt ja es gibt ja diverse Implementationen mit diesem Async.

Dominik

Ich habe jetzt ganz viel gehört, aber ich habe immer noch nicht genau verstanden, was denn das Problem dabei ist und warum.

Jochen

Das Problem ist halt, also sagen wir mal so, wir befinden uns, was dieser Async-Geschichten angeht, ja so ein bisschen in einem ähnlichen Stadium, wie als man irgendwann mal angeführt hat, strukturierte Programmierung zu verwenden, anstelle von Goto oder so.

Dominik

Das wird jetzt ein bisschen abstrakt.

Dominik

Es ist ja so, als wäre jetzt nebenläufig ein zweiten Gedanken losgelaufen, der aber nicht mit dem anderen wieder zusammengekommen ist, weil ich die nicht einsammel konnte.

Jochen

Ja, aber genau, also nachdem man strukturierte Programmierung, also mit Funktionen und so oder Prozeduren irgendwie eingeführt hatte, dann muss man sich auch erstmal sich umgewöhnen oder so, weil man das bisher mal anders gemacht hat.

Dominik

Also man strukturierte Programmierung bedeutet, man schreibt nicht von oben nach unten irgendwas durch und sagt dann, okay, geh wieder zu dieser Zeile und mach da irgendwie weiter.

Dominik

Sondern man kennt das in logische Blöcke.

Jochen

Die halt, wo man am Anfang weiß, was da reinkommt und am Schluss weiß, was da wieder zurückgeht.

Jochen

Und sozusagen, damit man das halt nur noch.

Dominik

Eine, nennt man das eine Closure?

Jochen

Nö.

Jochen

Enclosure ist eine innere Funktion, die halt Zugriff auf etwas hat, was ja, also du kannst zum Beispiel, wenn du eine Funktion innerfunktion hast und du gibst jetzt sozusagen die innere Funktion zurück, dann hat die ja noch Zugriff auf den Scope der Funktionen, aus der sie rauskommt.

Jochen

Und da kannst du jetzt Sachen drin definieren.

Jochen

Also zum Beispiel Closures ist halt das allgemeine Prinzip hinter wie man Dekoratoren in Python dann implementiert.

Jochen

Also Dekoratoren machen das.

Jochen

Die wrappen sozusagen die Funktionen, die man dekoriert, in eine innere Funktion rein.

Dominik

Bin ich mir gerade nicht ganz sicher, ob wir die Menschen, die uns zuhören, jetzt nochmal abhören dabei, was meistens Decorator sind.

Oder ob die das alle schon wissen.

Jochen

Da können wir mal eine, da können wir mal eine Episode zu machen, Dekoratoren, super Sache.

Dominik

Eigentlich schon, ne?

Dominik

Ja.

Dominik

Ja, okay, dann machen wir da eigentlich eine Episode zu.

Jochen

Haben wir schon mal wieder eine.

Dominik

Man rappt dann quasi die Funktion und dann, da die ja aufgerufen wird und das Funktionsobjekt da durch die Gegend gereicht wird, muss man da halt Objekte oder Dinge reingeben können, rausgeben können und kann halt vorher, nachher draus machen.

Jochen

Unter da irgendwelchen Kontext setzen, genau.

Jochen

Und ja, also es ist nochmal was Komplizierteres.

Jochen

Aber also Funktionen sind ja eigentlich relativ einfach, aber trotzdem, wenn man das halt nicht gewohnt ist, dann muss man das umstellen und dann ist die Frage, wie arbeitet man damit, was macht man jetzt eigentlich im Fehlerfall und so.

Jochen

Und all diese Probleme haben wir jetzt nochmal so ein bisschen, weil wir jetzt uns irgendwie überlegen müssen, okay, wie, wenn wir jetzt Async-Sachen machen, wie machen wir das denn richtig?

Jochen

Und zum Beispiel ein Problem, was jetzt halt den Leuten öfter mal auf den Fuß gefallen ist, vor allen Dingen, die Bibliotheken entwickeln, als Endanwender oder Weltbenutzer von diesen Geschichten, hat man das eigentlich gar nicht so oft, aber kann man sich ungefähr verdeutlichen.

Jochen

Also wenn man jetzt zum Beispiel, man hat halt so ein, also was man mit Async.io oft macht, ist sowas wie, hat zum Beispiel, also im einfachsten Fall, man halt eine Liste von URLs, die man abfragen möchte.

Jochen

Und dann sagt man halt irgendwie Async.io oder man sagt halt Gether, den ganzen Kram und kriegt dann halt das alles zurück.

Jochen

Was passiert denn mit.

Dominik

Was macht denn das Gether jetzt, genau?

Dominik

Das wartet, bis die alle einmal durch sind.

Alle awaiten.

Dominik

Gether macht await eins nach dem anderen.

Dominik

Und zwar in der Reihenfolge, wie die in der Liste drin steckt.

Dominik

Oder das letzte

Jochen

Reihenfolge gibt es so ja nicht mehr.

Dominik

Naja, aber die laufen ja liebenläufig und eins ist ja zuerst fertig.

Jochen

Ja.

Dominik

Und eins zuletzt fertig.

Dominik

Und Gether wartet, bis alle fertig sind.

Jochen

Genau.

Jochen

Das sozusagen, also man muss es halt noch awaiten, ne?

Jochen

Aber das wartet, bis halt alle fertig sind.

Dominik

Die Ergebnisse sammelt das auch?

Dominik

Oder gibt es da Ergebnisse?

Jochen

Ja, also man kann da durchaus auch, wenn das halt, wenn da halt Ergebnisse zurückkommen, jetzt weiß ich jetzt nicht genau, was mit all den anderen Dingern, wenn da jetzt unterschiedlich ist, also normalerweise hast du eine Liste von Sachen, wo das gleiche, wo Liste von Responses oder so zurückkommt, dann kriegst du halt die Liste von Responses dann halt zurück, denke ich.

Jochen

Wenn das jetzt unterschiedliche Sachen sein sollten, weiß ich gar nicht so genau.

Jochen

Weil ich jetzt gar nicht so sicher, was dann passiert.

Jochen

Wahrscheinlich kriegst du halt eine Liste der Frage.

Jochen

Ja, okay, aussieht, keine Ahnung.

Jochen

Aber das Problem ist halt eben, und das, was halt nicht so gut geht, wenn du jetzt sagst Async.io Gather und jetzt passieren aber mehrere Dinge.

Jochen

Jetzt hast du zum Beispiel einmal einen Connection-Error irgendwie, wenn du eine URL holst und dann bei einem anderen Ding hast du aber irgendwie einen, weiß ich nicht, not authorized und bei dem anderen hast du dann irgendwie Authentication Error oder was auch immer, du hast halt so unterschiedliche Fehlertypen.

Jochen

Du kannst jetzt aber im Interpreter kann, der kann immer nur eine Exception weiterreichen.

Jochen

Was passiert denn jetzt?

Jochen

Du kriegst die aber zu unterschiedlichen Zeitpunkten.

Jochen

Wenn du jetzt sagst, try irgendwas, gather, was passiert denn jetzt, wenn du Accept sagst?

Dominik

Ja, dann sollte die Exception, die zuerst rausfliegt, sollte rausfliegen.

Dominik

Aber eigentlich sollte man die ja vorher catchen, oder?

Dominik

Also innerhalb des Dekoro-Routine und nicht.

Jochen

Ja, willst du ja aber auch nicht.

Jochen

Also du willst ja die Exception an der Stelle fangen, wo du irgendwas mit der machen kannst.

Jochen

Also es hängt halt davon ab natürlich, aber ist halt so die Frage, wenn du die Frage gefangen hast, okay, gut, dann kriegst du sie ja auch nicht mehr.

Jochen

Aber wenn du jetzt mehrere Exceptions hast, die halt da auftreten, was passiert denn dann?

Jochen

Und ja, die Antwort momentan ist halt irgendwie, ja, ist doof, weil du kannst, es gibt zwar sowas wie Chained-Exceptions, das sieht man manchmal auch gerade bei so Webframeworks häufiger, irgendwie, dass halt irgendwas eine Exception wirft und dann dir sagt, ah, also das ist passiert, also oder in Tests passiert es auch häufig.

Jochen

Während ich versucht habe, diese Exception zu werfen, ist halt das passiert oder keine Ahnung, also sowas geht auch.

Jochen

Aber das bildet das halt auch nicht ab, was du dann eigentlich können müsstest, wenn jetzt irgendwie mehrere unterschiedliche Exceptions halt aufgetreten sind oder ein ganzer Baum, also im allgemeinen Fall halt ein ganzer Graph Baum von Exceptions, die halt irgendwie, so, das geht irgendwie nicht.

Jochen

Das kann auch tatsächlich der Interpreter nicht.

Jochen

Und ja, das ist halt ein Problem.

Jochen

Und dafür gab es ein PEP 654 Exception Groups und Accept.

Jochen

Und da der Code dafür ist jetzt irgendwie vor Woche oder so oder nicht, weiß ich nicht, ein paar Tagen, gemerged worden und alle so, juu.

Jochen

Und das kommt in 311 und das bedeutet halt, dass man jetzt quasi damit sauber umgehen kann.

Jochen

Also Trio habe ich deswegen angesprochen, weil das war halt so ein Ding, damit umzugehen.

Jochen

Also der nannte seinen Ansatz leider auch irgendwie Structured Concurrency und der hatte dieses Konzept von Nurseries, die man da benutzen kann, um halt damit dann sauber umzugehen.

Dominik

Das ist in der Asyn-Folge, glaube ich, schon mal erwähnt, was angehen.

Jochen

Und das hat in der Asyn-Folge und ich weiß nicht, ob wir das wirklich, also ich glaube, das hat damals schon niemanden so wirklich gesagt.

Jochen

Und wahrscheinlich ist das jetzt auch nicht anders.

Jochen

Aber ich finde es interessant und es ist aber auch ein kompliziertes Thema.

Jochen

Und naja, also sagen wir so, die Kurzfassung ist, es geht jetzt alles.

Jochen

Also ab 311 wird es deutlich besser, es gibt da diverse Leute, zum Beispiel auch der Juri Selibanov.

Jochen

Der mit EdgeQL und EdgeDB, der hat auf Twitter relativ enthusiastisch gesagt, so 3 Elf, das ist voll gut, dass das jetzt drin ist.

Jochen

Wir haben schon seit Jahren Probleme damit und jetzt ist es endlich sauber gelöst und damit ist quasi Python hat jetzt irgendwie sehr gute Unterstützung im Vergleich zu allen anderen Sprachen eigentlich.

Jochen

Spielt da jetzt ganz vorne mit und juhu.

Jochen

Also das kann man auf jeden Fall schon mal erwähnen, dass das irgendwie ziemlich cool werden wird.

Dominik

Jetzt muss ich nur noch verstehen, wie man halt so eine Exception Group, was das halt.

Jochen

Ja, da muss er den Pep angucken, da steht das dran, wie man das dann, wie man dann damit umgeht, dass da jetzt so eine.

Jochen

Du kannst halt auch, ich glaube, man kann das ganz normal, du kannst ganz akzeptieren.

Dominik

Einmal nochmal kurz verstehen ja, wir haben jetzt relativ viel, also ich habe zwei verschiedene Exceptions, fangen wir mal mit zwei an, die gleichzeitig auftreten.

Dominik

Also einmal, keine Ahnung, Autorisierung verweigert und einmal Connection abgebrochen.

Dominik

In zwei verschiedene Spreads.

Dominik

Was machen, du musst ja nicht Strets sein, kommst du.

Jochen

Es gibt keine Spreads, also ist ja auch egal.

Dominik

Die haben auf dieselbe API oder auf eine andere API zugegriffen, ist auch egal.

Dominik

Also Hauptsache, die schmeißen beide irgendwie Exceptions.

Dominik

Aber der Zeitpunkt ist egal oder nicht egal, wird das auch betrieben ist.

Jochen

Naja, du kannst jetzt nach einem Zeitpunkt ordnen, du kannst es aber auch irgendwie anders ordnen, je nachdem wie du willst.

Jochen

Also du hast halt eine Exception Group und darunter hast du jetzt dann halt unterschiedliche Exceptions.

Jochen

Also das, was das, und dann hast du halt quasi einen Baum.

Jochen

Also eine Exception Group kann halt wieder unterschiedliche Exception Groups drunter haben, die dann wieder Exceptions runter haben.

Jochen

Das ist halt ein Baum von.

Dominik

Und wofür brauche ich das?

Jochen

Naja, also wie gesagt, als Endanwender hat man da den Fall, dass man das wirklich braucht, gar nicht so häufig, aber wenn du jetzt halt irgendwie so eine High-Performance-Datenbank-Library-Dingsgeschichte baust, sowas wie zum Beispiel AsyncPG oder so, dann.

Also dann kann das durchaus passieren, dass dann dann halt dann dass du halt in solche Sachen reinläufst, wo du dann gerne irgendwie was gut, wo du zum Beispiel einfach nur einen ordentlichen Traceback werfen wollen würdest, wo man sehen kann, was passiert ist.

Jochen

Weil wenn du das auf eins runterdampfen musst und dann rausschmeißen und sagst, Datenbank-Error, sagen wir mal so, gibt es eine Zahl, Zeile zurück, Datenbankfehler, dann ist das nicht sehr hilfreich.

Jochen

Du musst halt, aber alle Sachen kannst du nicht angeben, weil du kriegst ja, du hast nur eine Exception.

Dominik

Also weil die erste, die quasi dann geraced wird, dann die rausfliegt und die anderen gehen dann unter.

Dominik

Das wäre das Problem sonst.

Genau, ja.

Dominik

Ja, okay, und ich will halt quasi, dass sie durchgereicht werden.

Jochen

Du willst die irgendwie behandeln können.

Jochen

Ob du sie jetzt rausprintest oder irgendwie drauf reagierst oder so, ist ja nochmal eine andere Sache, aber du kannst sie jetzt handeln.

Dominik

Also so wäre, das wäre quasi so, als müsste ich so eine Art Exception-Cache bauen und dann irgendwann alle Exceptions in diesen Exception-Cache zurückgeben.

Dominik

Anstatt die zu raisen, die quasi in diesen Exception-Cache reinspeichern und ganz am Ende alle Exceptions da drin sind, in eine Custom Exception zusammenfassen und raisen.

Jochen

Keine Ahnung, wie das jetzt dann Leute gerade machen.

Dominik

Also wie das damit umgehen.

Jochen

Da gibt es unterschiedliche Ansätze wahrscheinlich, aber jetzt geht es halt so, dass es cool ist und sauber.

Jochen

Ja, ansonsten hatten wir noch IPyth erste Major Release seit drei Jahren oder so.

Jochen

IPython 8.

Dominik

Ja, okay.

Jochen

Ehrlich gesagt, so wahnsinnig viel Neues ist da gar nicht unbedingt.

Jochen

Also außer Black ist irgendwie neu, da mussten sie auch noch ein bisschen zurückrudern.

Jochen

Das hat die Leute irgendwie auch böse überrascht teilweise.

Dominik

Das haben wir ja doch das mal noch gelobt.

Jochen

Ja, ja, ja.

Jochen

Aber im Prinzip ist es eigentlich schon richtig.

Jochen

Und ja, es ist viel deprecated worden von Dingen, die man nicht mehr braucht und so.

Jochen

Und ich glaube, ich habe es auch schon, es ist nur better, es ist noch nicht stable, aber ich habe es auch schon, also wenn man es einfach so installiert, macht halt keinen, man pinnt es nicht runter oder so, sondern man sagt einfach nur Pip Install iPython, dann kriegt man das halt.

Jochen

Und funktioniert bei mir auch schon super.

Jochen

Ich verwende es schon.

Jochen

Die paar Tage, die es veröffentlicht ist, auf jeden Fall und da hat es bisher immer getan.

Ja.

Jochen

Genau.

Jochen

Ja, ansonsten, so war es.

Jochen

Wir haben jetzt irgendwie super viele Episoden in letzter Zeit aufgenommen, wenn es gar nicht so viel passiert, weil gar nicht so viel Zeit vergangen ist.

Dominik

Ja, okay.

Jochen

Ich weiß nicht, hast du noch irgendwas oder haben wir noch irgendwie.

Dominik

Ja, wir machen nochmal Werbung, diese Episode.

Jochen

Oh ja, das ist genau, das müssen wir dann jetzt auch machen.

Jochen

Also, diese Episode kommt wieder mit der freundlichen Unterstützung von NordVPN.

Jochen

Ja, und schnapp dir den Exklusivdeal und ein Geschenk obendrauf zum NordVPN-Geburtstag.

Jochen

Geh auf https, nordvpn.com slash Python Podcast und sichere dir den Wahnsinnsdeal jetzt auch komplett risikofrei mit 30 Tagen Geld zurückgarantie.

Jochen

Also das ist eine Geschichte, die man durchaus mal machen kann.

Jochen

Also ja, NordVPN, VPN-Anbieter, da kann man sich zum Beispiel irgendwie im Urlaub auch drauf verlassen, dass man dann weiter Netflix gucken kann, was man ja sonst irgendwie, manchmal hat man also Probleme zu Geoblocking und so.

Jochen

Und damit kann man das irgendwie relativ einfach umgehen.

Jochen

Oder halt auch, wenn man irgendwie sonst Konnektivitätsprobleme hat, dann kann man aber auch irgendwie da was gegen tun mit.

Jochen

Und ja, hat viele Server in allen möglichen Ländern und so.

Jochen

Also ist auf jeden Fall irgendwie einer der größten Anbieter da in dem Bereich.

Jochen

Und ja, kann man ja einfach mal ausprobieren und auf HTTPS.

Dominik

Und dann warnt es die sichern, der jetzt auch komplett risikofrei mit der 30 Tage Geld zurückgarantiert.

Jochen

Wunderbar.

Jochen

Ja, worüber reden wir denn heute?

Die ganzen Tipps, Tools im Web und CSS-Frameworks und vielleicht fangen wir damit an.

Dominik

Was für ein TSS-Framework benutzt denn du, Jochen?

Jochen

Ja, irgendwie gar nicht.

Dominik

Ihr habt vielleicht gesehen, Python-Podcast ist zu unserer Schande in Bootswap, weil das Einzige, was wir gemacht haben für Styling, ist Import TDN vom, also Bootswap vom CDN.

Jochen

Ja, das weiß ich gar nicht mal.

Jochen

Ich glaube, das mache ich tatsächlich nicht, aber das mache ich.

Jochen

Oh Gott, das tatsächlich nicht schlecht.

Dominik

Ja, wir müssen das irgendwann mal anfassen.

Jochen

Weil ich würde sagen, das sollte man natürlich eigentlich auf keinen Fall machen, sowas.

Jochen

Aber weil, ja, das ist natürlich extrem unsicher.

Dominik

Das erinnert mich an was.

Jochen

Mache ich das wirklich?

Dominik

Ne, ist das nicht so?

Jochen

Ich meine nicht, aber ich gucke mal gerade in, ich mache hier gerade mal den das Netzwerk.

Jochen

Wo ist denn?

Jochen

Das steht doch immer unter Sources, ne?

Jochen

Und dann steht da drin.

Jochen

Oh ja, da sind diverse CDNs.

Jochen

Code jQuerie.com, oh mein Gott.

Jochen

Bootstrap CDN.

Oh nein.

Also, okay.

Jochen

Ja, okay, das war mir gar nicht so klar, dass ich das mache.

Jochen

Ja, ja, danke schön.

Jochen

Dann ist mir das jetzt auch bewusst.

Jochen

Ich dachte, ach, jetzt mal sowas mache ich aber nicht.

Aber doch, mache ich es schon.

Kacke.

Naja.

Dominik

Ja, also Bootschap ist raus.

Dominik

Also, also sagen wir so, das benutzt man halt natürlich dann, wenn man keine Zeit für irgendwas anderes hat.

Dominik

Dann macht man einfach Import-Bushware vom CDN und dann sieht alles irgendwie ein bisschen besser aus, als hätten wir es gar nicht gestylt.

Dominik

Aber auch nicht viel besser, ehrlich gesagt.

Jochen

Ja, vor allen Dingen ist es halt das, was in dem Jungwu Cookie Cutter-Template mit dabei war, deswegen habe ich das vor allem nichts.

Dominik

Also du benutzt starke Cookie-Cutter von.

Jochen

Jetzt, eigentlich seit einiger Zeit nicht mehr, aber ich habe es lange verwendet, ja.

Dominik

Ja, also ich habe auch mal ausprobiert, das war nicht so ganz mein Ding.

Jochen

Ja, also ich, ich, inzwischen würde ich auch sagen, also ich benutze inzwischen gerne irgendwie tatsächlich Start-Project oder halt auch das, das habe ich jetzt letztens wieder verwendet, das Project Template, weil man kann ja dem Start Project auch Project Templates mitgeben von Johannes.

Jochen

Das gefällt mir eigentlich tatsächlich auch ganz gut.

Jochen

Und Cookie Kata ist einfach, ist mir zu viel Zeug, dass ich irgendwie nicht brauche.

Dominik

Also ich habe eigentlich meine eigenen Skeletons einfach geschrieben, also so zwei, drei Templates für Sachen, die ich manchmal brauche.

Dominik

Django mit Postgres, Django Minimal, Farbapy.

Dominik

Und dann klone ich die einfach.

Jochen

Ja, kannst du halt auch machen, aber dann bleiben halt manchmal immer so Reste übrig.

Ja, aber das ist nicht viel.

Dominik

Also ich weiß ja dann wo und ich habe mir das ja so ein bisschen weggeskriptet.

Dominik

Dann kann ich einfach zwei Skripte ausführen und dann habe ich es einmal replaced und dann schmeiße ich drei Dateien weg, die ich nicht brauche und das ist gut.

Dominik

Also es ist halt mein Zeug, ich kenne mich da ja auch aus und das geht aber dann wirklich schnell.

Dominik

Und da ist halt aber auch dann das bei, was ich will.

Jochen

Ja.

Jochen

Ja, also es ist halt, ja, es ist halt irgendwie, also ich bin da noch nicht bei.

Dominik

Ja, andersrum ist, du fängst halt bei null an und dann musst du aus allen alten Projekten, wo du das so benutzt hast, erstmal reinkopieren.

Dominik

Das geht auch nicht schneller.

Jochen

Ja, aber genau, dafür sowas hast du ja normalerweise dann eben halt ein Template, damit du das nicht macht.

Jochen

Aber es ist wirklich, also ich habe auch, ich würde jetzt nicht sagen, dass es da irgendwie eine Lösung für das Problem gibt, weil das ist irgendwie.

Jochen

Ich hab inzwischen auch, also ich, ich am Anfang war, fand ich das tatsächlich hilfreich, weil es gibt ja so viele Settings in Django auch.

Jochen

Es ist halt echt eine Menge Zeug, dass man gar nicht weiß, wie man das alles setzen soll.

Jochen

Und wenn man vor dieser Aufgabe steht, ohne jetzt wirklich damit schon lange Erfahrung zu haben, dann ist man so ein bisschen, also jedenfalls hatte ich das am Anfang das Problem, du stehst halt wieder wie so ein Ochs vom Berg.

Dominik

Ja gut, aber wenn das jetzt von Figh Denny nimmt, also tatsächlich das Komplettprogramm mit Cookie-Cutter, das ist ja derselbe Typ, der auch Two Scoops auf Django

Jochen

das Buch geschrieben hat oder die diversen Bücher, die es zu einem Thema gibt, die

Dominik

Channel hatten und so.

Dominik

Aber da ist so viel Zeug drin.

Da hast du so viel Zeug drin.

Ja, die Hälfte brauchst

Jochen

du nicht.

Jochen

Ja, aber das ist halt die Frage, am Anfang weißt du halt nicht, was du brauchst und was du nicht brauchst.

Ja, das ist halt so.

Dominik

Aber ich würde dich genau da, gerade für Anfänger würde ich auf gar keinen Fall, klar weißt du noch nicht, was du nicht brauchst, aber das würde ich auf gar keinen Fall machen, weil ich würde Blank Django nehmen als Anfänger.

Jochen

Ja gut, also es gibt unterschiedliche, also für mich war das gar nicht so ein schlechter Weg, aber inzwischen mache ich das halt auch nicht mehr, weil ich jetzt sagen würde, okay, ich weiß jetzt, was ich alles nicht brauche und ich brauche den meisten Kram.

Jochen

Vor allen Dingen ein Ding, das mich von dem Cookie-Cutter Django-Kooty-Cookie Cutter komplett weggebracht hat, ist halt, dass die halt irgendwann, das war auch nicht so, das war am Anfang nicht so.

Jochen

Am Anfang war das komplett ohne Docker und dann haben sie irgendwann gesagt, okay, das jetzt für unterschiedliche Plattformen, das wird halt so stressig, das alles zu maintain.

Jochen

Wir konsolidieren das jetzt auf Docker.

Jochen

Und dann habe ich ja auch eine Zeit lang das mit Docker verwendet und jetzt würde ich sagen so, nee, ich will aber Docker gar nicht mehr.

Jochen

Also weg damit.

Jochen

Und ja, jetzt bringt es für mich sozusagen gar nicht mehr so viel, weil ja, das ist halt hauptsächlich Docker-Zeugs.

Ja.

Dominik

Okay, aber wir sind quasi jetzt ja dahingekommen, also warum Bootstrap bei dir.

Jochen

Genau, so ist das Bootstrap da irgendwie reingekommen.

Jochen

Und ich weiß auch nicht, ob das noch da mit drin ist bei den aktuellen Geschichten, aber ja, also genau, eigentlich ist das natürlich nicht so schön.

Jochen

Ich habe jetzt auch letztens gesehen, wie groß Bootstrap eigentlich ist, war mir auch nicht so klar, das ist ja irgendwie alles ziemlich riesig.

Jochen

Und dann eben hat das noch so Dependencies auf jQuery und so.

Jochen

Das sind ja alles Zeugs, was man heutzutage im Grunde nicht mehr wirklich haben will, braucht und so, aber es ist halt irgendwie dann alles immer noch mit dabei.

Jochen

Ist noch

da drin, ja.

Dominik

Ja, also von Foundation gibt es noch, das habe ich von Wannes mal.

Jochen

Ja, von Foundation ist so quasi so ähnlich wie.

Dominik

Ja, auch so, du musst halt eigentlich, du schreibst halt nichts, importierst halt einfach irgendwas vom CN oder kannst du es natürlich auch vom Lokal.

Dominik

Und es sieht halt ein bisschen hübscher aus.

Dominik

Man kann natürlich immer nass sein, wenn man will.

Dominik

Dann gibt es noch Materialize und UI-Kit.

Dominik

Und das sind alles immer so große klassenbasierte CSS-Sachen oder Post-CSS oder so, wo man halt dann seine Klassen, vordefinierte Klassen hat, die dann irgendwelche tolle Magie machen.

Jochen

Ja, oder Semantic UI habe ich jetzt auch gesehen, dass das viele Leute verwenden.

Jochen

Enddesign.

Das kenne ich nicht.

Jochen

Das ist auch total schräg.

Ja, ja, ja.

Jochen

Endpunktdesign.

Jochen

Das ist so, äh, das ist was Chinesisches.

Jochen

Das ist auch so, das irgendwie, es gibt das hat mehr Stars auf GitHub als Django.

Jochen

Und ist irgendwie in China verwenden, das Millionen Leute.

Jochen

Aber hier kennt man das Ding gar nicht so sehr.

Jochen

Ja, ist auch eigentlich.

Dominik

Wahrscheinlich verwendet es deswegen, was gute Dokumentation auf Chinesisch hat, man weiß es nicht.

Jochen

Ja, mag sein.

Dominik

Dann gibt es noch Bulma.

Dominik

Das benutzen zum Beispiel viel von den Vuejs-Leuten, also wenn man irgendwie jetzt auf Vemastery oder so Kurse macht.

Dominik

Da gibt es so ein paar Leute, die Bulma machen, fand ich es, hat mich nicht so ehrlich begeistert.

Dominik

Ist vielleicht eher so für.

Jochen

Ja, aber es ist glaube ich die gleiche Kategorie wie eben.

Jochen

Also das habe ich ja auch unter Utility First CSS-Frameworks genauso wie Tailwind.

Jochen

Das ja auch.

Dominik

Ja, genau, aber Tailwind würde ich sagen, so mache ich das.

Okay.

Dominik

Ja, also finde ich sehr, sehr toll.

Jochen

Ja, ich habe auch viel Gutes gehört und habe aber auch Leute schon schön gehört.

Jochen

Also ich weiß es nicht.

Dominik

Ja, also wir haben im Vorfeld jetzt kurz drüber gesprochen, du hast es gesagt, so oben Moment.

Dominik

Also ich habe es zwar nicht benutzt, aber ich habe ja gehört.

Dominik

A und B und C und die haben gesagt, das ist doof und.

Jochen

Ja, genau, aber das Problem ist halt immer so, bei diesen Entscheidungen, ich meine, wahrscheinlich ist einfach alles Unsinn, muss noch irgendwas anfangen.

Jochen

Aber ich habe ja halt keine Ahnung davon.

Jochen

Ich habe aber jetzt, jetzt reden wir da schon fünf Minuten drüber und ich habe ja auch eine Liste mir dann gemacht, weil ich dachte, irgendwie, vielleicht muss ich da mal irgendwie von 20 Dingern, die es hier irgendwie gibt, die ich mir alle mal angucken muss, ich denke so, ich habe noch überhaupt nicht angefangen, jetzt muss ich schon zwischen so vielen unterschiedlichen Sachen ausfüllen.

Jochen

Ich habe absolut keine Ahnung, was ich da machen soll.

Jochen

Oh mein Gott.

Jochen

Und dann eben, genau, sowas macht.

Jochen

Soll man jetzt das selber machen?

Jochen

Soll man ein BAM machen?

Jochen

Soll man irgendwie Utility First machen?

Jochen

Bam.

Jochen

Soll man ein Framework nehmen, soll man SAS nehmen, Lass nehmen, Post-CSS, irgendwie, was auch immer.

Jochen

Ich weiß es doch alles nicht.

Jochen

Und ich habe keine Ahnung.

Dominik

Ja, ich würde ja tatsächlich Tablet nehmen.

Ja, gut, dann fange ich mal ein paar.

Dominik

Aber du hast ja gesagt, das ist ja alles noch für Low-Budget.

Jochen

Und ich bin ja eher, ich bin ja eher so, ich persönlich bin ja eher so der High-Budget-Typ.

High Roller, ja.

Ja.

Jochen

Finde ich, ich muss sich da schon irgendwie so ein bisschen positionieren, ansonsten ist es da nicht, dass man da irgendwie.

Dominik

Nicht mehr falsche Reise kommt.

Jochen

Race to the Bottom irgendwie am falschen Ende rauskommt.

Jochen

Das wäre nicht gut.

Jochen

Ja.

Jochen

Aber ich, genau, also ich weiß es halt nicht.

Jochen

Und es gibt so andere Sachen, es gibt dann noch die ganzen Mini-Dinger.

Jochen

Habe ich jetzt gesehen bei, wie heißt er noch?

Jochen

Django high.

Jochen

Andrew Johnson hat das verwendet.

Jochen

MVP-CSS.

Dominik

Ja, das kenne ich auch nicht.

Jochen

Super minimal und davon gibt es dann halt auch wieder ein paar.

Jochen

Es gibt Mini-CSS dort.

Dominik

Da muss man immer CSS sein.

Dominik

Also ich muss jetzt nochmal Tavent nochmal loben, weil es sieht hässlich aus auf den ersten Blick, weil das das HTML so ein bisschen bloatet.

Dominik

Du hast halt in deinem HTML ganz viel mehr Klassen drin, die halt direkt das Styling machen.

Dominik

Aber dafür hast du halt eben keine extra CSS-File mehr mehr, musst nicht hin und her switchen.

Dominik

Und eigentlich steht es meiner Meinung nach genau da halt die Definition des Styles drin, wo es halt hingehört.

Dominik

Und zwar genau an dem HTML-Element.

Dominik

Und das finde ich super angenehm.

Dominik

Und da man eh, meiner Meinung nach, ja immer so wieder benutzbare Komponenten aktuell so hat, ist das mit der Redundanzie auch nicht so schlimm.

Dominik

Und ja, wenn du dann halt so ein Hot-Reloading-Wight noch nebenbei an hast, dann siehst du halt jede Änderung der Farbe, du schreibst halt Red als Klasse hin.

Und dann ist es rot.

Dominik

Und dann schreibst du, Red Rex machst blau und es ist direkt blau.

Dominik

Und das ist einfach, das ist so ein bisschen wie in den 90ern HTML-Koden.

Dominik

Da musste man das ja auch alles noch direkt hineinschreiben.

Dominik

Und ich mochte das.

Jochen

Okay, ich habe das weder in den 90ern gemacht, noch jetzt, oder nur da dazwischen irgendwann, aber gut.

Jochen

Naja, jetzt muss ich wohl doch irgendwie mal.

Dominik

Ja, das musst du ja auf jeden Fall mal angucken.

Dominik

Ja, wir haben ja auch eben noch über Winli kurz gesprochen, das ja auch noch gehabt.

Dominik

Da gab es ja eine lustige.

Jochen

Ne, ich hab, also über Tailwind, da gibt es eine neue Release, auch das hätten wir in die News packen können, ne?

Ja.

Jochen

Siehst du mal.

Jochen

Es gab eine Working Draft Episode letzte Woche oder sowas über Tailwind CSS 3, wo auch irgendwie der Tenor war, so eigentlich ist ganz gut und die Vorteile sind halt irgendwie, dass man jetzt nicht mehr, also früher war es so ein Default-File, hat es halt irgendwie immer die gleiche Größe an CSS ausgelegt.

Dominik

Ja, man muss halt manuell purgen die CSS-Dinge, die man nicht haben wollte, die musste man dann wegpurgen, dass der File nicht so groß wurde, ja.

Jochen

Genau, und das passiert jetzt irgendwie alles automatisch und man muss auch nicht mehr Node.js verwenden, sondern es hat irgendwie Standalone-Command-Line-Utilities irgendwie für all die Sachen.

Jochen

Und das ist ja schon sehr nett.

Jochen

Also da dachte ich auch so, oh, das klingt aber gut.

Jochen

Und dann eben hieß es ja auch, ja, das kommt aber von den Leuten von Winni oder so haben.

Dominik

Ja, also Winnie hat ja Tailmann geklaut und dann Sachen so ein bisschen halt faster gemacht, vielleicht oder so, so ein bisschen so mehr auf Winnipere.

Jochen

Und dann haben sich die Winnie-Leute beschädigt, dass sie sich, dass sie nicht gekreditet werden für diese Geschichten.

Jochen

Und dann hat irgendjemand anders gemeint, so, ah, aber ihr habt das auch nur von mir wieder geklaut.

Jochen

Keine Ahnung.

Dominik

Sonst verflüßt das auf einmal so, als wären das jetzt irgendwelche Geheiminformationen.

Jochen

Nö, sonst nicht, aber ich, keine Ahnung.

Jochen

Naja gut, also noch.

Dominik

Also ich mag tatsächlich auch die Betalsachen von Taylor ganz kennen.

Dominik

Es gibt ja so vorgefertigte UI-Komponenten, die man sich kaufen konnte.

Dominik

Und das Projekt zu unterstützen, ist von denselben Leuten, die das Projekt geschrieben haben.

Ich glaube, es gibt auch dabei.

Jochen

Es gibt ja auch so ein tolles Buch, irgendwie Refacturing UI oder so.

Jochen

Habe ich mir auch irgendwann mal gekauft, aber habe ich dann nicht gelesen.

Vielleicht sollte ich das auch mal machen.

Jochen

Vielleicht weiß ich da mehr, wie das mit den ganzen CSS.

Jochen

Vielleicht sollte ich damit immer starten und irgendwie mal ein Buch lesen oder so.

Jochen

Das könnte vielleicht hilfreich sein.

Jochen

Ah, eine Geschichte, die tatsächlich interessanter aussieht als diese Miriade an irgendwie unterschiedlichen CSS-Arten, Frameworks, Minimal-Dingern, die man so benutzen kann, die ich letztens gesehen habe, ist Missing.Style.

Jochen

Und zwar, weil das halt aus dem HTMX-Umfeld kommt.

Jochen

Und da Leute sich überlegt haben, okay, ja, es gibt, das fehlt halt noch.

Jochen

Also wenn man LGMX macht, das mache ich jetzt auch relativ viel.

Jochen

Und das, da bin ich eigentlich super, super zufrieden mit.

Jochen

Und ja, aber wie macht man das denn jetzt?

Jochen

Weil da sind ja auch viele Animationsgeschichten oder so drin, die dann Sachen verschwinden, wenn man irgendwo draufklickt oder auftauchen und so Transition-Effekte und so.

Jochen

Und ja, da haben sich überlegt, okay, dann brauchen wir eigentlich genau dafür eins, aber wir wollen vielleicht nicht so ein super, so ein All-in-One-Riesending haben, sondern nur für die Sachen, die wir da benutzen, irgendwie so ein CSS-Geschichten mitrahmen und sozusagen, der Missing-Link irgendwie soll das irgendwie so ein.

Jochen

Das kann man sich auch mal angucken.

Jochen

Also da werde ich auf jeden Fall auch mal drauf gucken, was die da machen.

Jochen

Und das klang auf jeden Fall interessant, weil das fehlt halt tatsächlich.

Jochen

Also bisher muss man dann halt diese ganzen Transition-Geschichten halt irgendwie in seinen CSS mit reinfrickeln dann.

Jochen

Und wenn das halt automatisch alles da wäre, wäre natürlich schon nett.

Ja.

Jochen

Genau.

Jochen

Ansonsten, tja, ich weiß nicht.

Jochen

CSS haben, ja.

Jochen

Ich muss mich damit immer auseinandersetzen.

Jochen

Ich komme nicht mehr drum rum.

Dominik

Ja, das erzählst du mir schon seit vier Jahren.

Seit Jahren.

Jochen

Und dann habe ich doch immer wieder was anderes gefunden.

Ja.

Jochen

Ja, es ist lässt sich aber, glaube ich, inzwischen echt nicht mehr vermeiden.

Ja, wie es ein bisschen.

Dominik

Also deswegen empfehlen wir immer noch Tailwind.

Habe ich das schon gesagt?

Ja, ich bin ja auch nicht.

Dominik

Ich bin ja kein Fan davon.

Ich weiß nicht genau warum.

Dominik

Es war so ein bisschen, also ich konnte CSS sehr, sehr lange überhaupt nicht leiden.

Dominik

Es war irgendwie mega hässlich.

Dominik

Und dann Tailwind fühlte sich es so an, wie ich es machen will.

Dominik

Das ist so wie bei Python, wo ich relativ schnell wusste, okay, so will ich es machen.

Jochen

Ja.

Dominik

Das ist immer dann, wenn man gar nicht weiß, wie es geht, und dann findet man was, dass es irgendwie cool ist.

Dominik

Ich weiß auch nicht.

Dominik

Vielleicht ist man auch völlig auf dem Holzweg, weil man keinen hat, der einem erklärt hat, wie es richtig ist, aber vielleicht ist es auch manchmal gar nicht so schlecht, wenn man da so ein bisschen seine Intuition folgt.

Jochen

Ja, am besten ist es wahrscheinlich, man muss irgendwas machen und dann schauen, ob man den Kurs korrigiert, wenn es irgendwie nicht mehr gut funktioniert.

Dominik

Ja, sollte man schon, er sollte schon möglich sein, dass man seine Meinung aufwechseln kann.

Das ist glaube ich schon.

Jochen

Ja, also wir werden, wir werden uns weiter Dinge angucken und dann sagen wir Bescheid, wenn wir irgendwie das perfekte gefunden haben.

Jochen

Ansonsten, ja, ich meine, keine Ahnung, ich konnte ein bisschen was erzählen zu den Sachen, die ich so mache.

Jochen

Warum gucke ich mir eigentlich CSS-Geschichten an?

Dominik

Ja, erzähl mal, warum guckst du dir CSS-Geschichten an?

Dominik

Ist ja langweilig auch und hat so nicht mehr

Jochen

zu tun.

Jochen

Ja, ich habe ja diverse Projekte, ja.

Jochen

Aber genau, momentan also eine Geschichte, die ganz interessant ist, HTMX, das beeinflusst halt so viele Sachen, weil das halt.

Dominik

Mit HMX nachher den nächsten Trinkspieljuchen.

Jochen

Wenn ich das sage muss.

Jochen

Ja, stimmt schon.

Jochen

Aber naja, also weil vieles, so gerade ich hatte, ich hatte mal irgendwann vor Jahren, also das ist zum Beispiel wieder eins von diesen Beispielen, so ein Bookmarking-Ding angefangen und das macht halt auch so viel mit Bootstrap und so und jQuery und ist halt alles ziemlich hässlich, was Frontend-Geschichten angeht.

Jochen

Und das letztens nochmal angefasst, wieder auf aktuellen Stand gebracht und da könnte man wahrscheinlich mit HGMX sehr viel machen.

Jochen

Und dann ist halt die Frage, kann man dann nicht den ganzen anderen Kram gleich mit rausschmeißen?

Jochen

Also sowas wie dieses ganze jQuery-Graffel und irgendwie Bootstrap und so.

Jochen

Das wäre doch eigentlich ganz nett.

Jochen

Und dann ist halt die Frage, okay, was macht man denn da an?

Was nimmt man denn dann ein CSM?

Jochen

Ja, genau, genau, genau.

Dominik

Weil genau perfekt, genau dafür auch super geeignet.

Dominik

Du hast ein Snippet, dass du per HMX rausrenderst und was schreibst du in deinen Snippet rein?

Jochen

Ja, ja, genau.

Jochen

Also das wäre natürlich nett.

Jochen

Das sind halt so Sachen, die Telbed machen, ist halt, dass es, wenn es im Artimal drin steht, dann kann man es eben auch direkt mit raus.

Jochen

Man muss halt nicht ein neues CSS mit ausliefern.

Dominik

Genau, und du musst auch nicht jedes Mal in irgendein großes CSS, den du schon ausgeliefert hast, genau die Sachen reintreiben, sondern schreibst halt genau das, was du willst.

Dominik

In dein Ja.

Dominik

Aber du hast eben auch gesagt, also ja, also die großen Designer, die sich die ganz tollen Konzepte überlegt haben mit ihren Style Guides, die könnten eventuell sein, dass du dann einfach doch Zinn-Button kleiner machst, obwohl das verboten ist im Style-Guide.

Jochen

Ja, ich weiß, ich habe ehrlich gesagt keine Ahnung noch, wie man das alles wirklich macht, aber naja.

Jochen

Ja, aber genau, das wäre, das wäre so, das war so einer der Gründe, warum ich da nochmal drüber nachgedacht habe.

Jochen

Dann, äh, genau, aber auch sowas wie ja, diese, dafür würde ich gerne so eine Landingpage bauen, halt irgendwie Podcast-Hosting, Software as a Service-Geschichte.

Jochen

Und da braucht man dann ja auch vielleicht ein bisschen mehr Design-Wumms und dann ist Bootstrap vielleicht irgendwie nicht das Richtige.

Dominik

Also was wir da machen, ist Designer fragen.

Ja.

Dominik

Dann machen die uns einen Entwurf, Design.

Dominik

Und dann machen wir das in Tabeln.

Jochen

Ah, okay.

Jochen

Ja.

Jochen

Ja, für irgendwie sowas, ne?

Ja.

Dominik

Da helfe ich dir gerne bei.

Was machst du noch?

Dominik

Du hast noch ein paar Sachen entdeckt, so ein paar Picks fast, ja, die.

Jochen

Ja, aber genau, kann man auch einfach mal raushauen.

Jochen

Da gibt es ja genug Gelegenheiten für andere Pics.

Jochen

Mermaid.

Jochen

Mermaid habe ich jetzt letztens gesehen.

Dominik

Ziemlich coole Sache, das kann ich noch nicht.

Dominik

Was man damit machen kann, ist Markdown enhancen, um sowas wie Diagramme.

Jochen

Ja, genau.

Jochen

Und das kann halt auch diese Diagramme, die Arten von Diagrammen, die man halt.

Dominik

Also rendern.

Dominik

Also das, was ihr von Draw.io vielleicht kennt, so ein bisschen oder so.

Dominik

Wenn ihr so, ich weiß nicht, ob das in der Komplexität gerät, aber richtig coole Sachen, die man echt gut darstellen kann, ERM-Diagramme, Flowcharts, sowas.

Dominik

Einfach als Markdown schreiben, so ein bisschen runterschreiben und dann könnt ihr das auch direkt rendern lassen.

Dominik

Auch von sowas wie GitHub.

Jochen

Ja, also ER-Diagramm habe ich oft irgendwie, da gab es so ein Plugin für, ich weiß nicht gar nicht, wie das hieß.

Jochen

Auch in Django konnte man das irgendwie mit einbinden und dann hat das halt als Management-Command und hat das halt irgendwie ein ER-Diagramm rausgerendert.

Jochen

Aber das Problem ist halt, die sind halt wenig konfigurierbar und wenn das halt groß wird, dann ist es halt irgendwie sieht man nichts mehr.

Jochen

Und wenn das klein ist, dann hätte man ja mehr Informationen nicht.

Du meinst Graphis.

Jochen

Und das hat mit Graphis oder Dot irgendwie hat das das dann gerendert, aber das ist alles nicht so.

Jochen

Also da ist.

Jochen

Ja gut, also für

Dominik

das ERM-Diagramm rausrennen lassen aus den Models, ist das natürlich schon nett.

Dominik

Also wir reden ja gerade über Mermade, dass das glaube ich nicht macht.

Jochen

Nee, da machst du es von Hand, aber du hast halt dann auch mehr Kontrollmöglichkeiten.

Jochen

Also insofern.

Dominik

Ja gut, aber ich will jetzt natürlich nicht jetzt irgendwie, wenn irgendjemand einfach kurz das ERM sehen will, dann exotique ich halt einfach aus meinem Dangemodel kurz das EM.

Dominik

Aber ja, du hast natürlich recht, viel schöner, wenn man das vorbereitet und am Anfang, bevor man die Models hat, kann man das ja vielleicht bauen.

Jochen

Naja, es ist eher so, die Frage ist, was willst du in deiner Dokumentation verlinken?

Jochen

Und ein automatisch generiertes Ding in der Dokumentation ist halt irgendwie nicht so gut.

Dominik

Die wichtigere Frage wäre, liest jemand die Dokumentation?

Jochen

Ja, das ist auch, vielleicht nicht.

Dominik

Ja, wenn nicht, dann mache ich es automatisch, weil dann brauche ich ja keine Arbeitszeit reinstecken.

Dominik

Wenn doch, dann sollte man es auch nicht machen.

Dominik

Aber das ist immer ein bisschen die Frage, einige Leute wollen die unbedingt haben, aber niemand guckt rein.

Dominik

Dann ist es halt nur für einen selber und dann weiß ich nicht, ob ich das dann.

Jochen

Ja, aber also was mich halt freut, ist, dass es jetzt auf jeden Fall ein Ding gibt, wo man.

Jochen

Also sonst habe ich mich mal gefragt, nehme ich ein Draw-IO oder nehme ich irgendein anderes Tool oder nehme ich halt irgendwie irgendein Desktop-Ding, was ich halt habe.

Jochen

Und dann mache ich das als PNG raus oder als SVG, nehme ich lieber ein SVG, aber weiß nicht so genau.

Jochen

Und dann, das sieht aber auch wieder ganz anders aus als alle anderen Diagramme, die ich sonst so gemacht habe.

Jochen

Also auf dem Hintergrund funktioniert das aber nicht.

Jochen

Halt diese ganzen Probleme.

Jochen

Und das ist man halt alles los, wenn man das mit Mermaid macht.

Dominik

Ja, also vor allem, das ist halt, wie gesagt, Maßstab.

Dominik

Und ihr könnt auch sowas machen wie verschiedene Projekte, wie lange wollt ihr denn schedulen und dann nebeneinander.

Dominik

Das finde ich echt sehr geil.

Dominik

Also ich muss mir das unbedingt angucken, weil ich halt diese Tasks, die halt hintereinander kommen, mit wie lange brauchen die denn quasi so ein Agent oder sowas, wer verschiedene Projekte bauen kann in Markdown.

Dominik

Und wir benutzen ja eh für alles jetzt Markdown, nicht wahr Jochen?

Jochen

Ja, ich weiß nicht so genau.

Dominik

Nein, zum Schreiben, nicht?

Jochen

Ja, meistens, also genau, ich habe ja jetzt auch Empadox mir dann angeguckt und damit geht das halt auch.

Schmal gibt es ein Plugin.

Dominik

Genau, Static Fate Rendering geht auch.

Dominik

PDF geht, sogar so Richtung Latex-Templates geht, es geht was noch, was brauchen wir noch?

Dominik

PDF natürlich, aber Präsentationen geht.

Jochen

Naja, oder Notebooks verwende ich halt auch Markdown viel.

Notebooks?

Jochen

Klar.

Jochen

Aber sagen wir so, also für Python-Dokumentation traditionell verwenden Leute ja dann Restructured Text.

Dominik

Ja, aber das ist so hässlich.

Jochen

Ja, es ist hässlich, aber es ist halt, es kann halt viel mehr als Markdown.

Jochen

Und es gibt halt, die Leute sagen halt immer so, ja, also Markdown nett, aber es kann halt nicht die Sachen, die ich brauche.

Jochen

Daher nehme ich lieber, also gerade was Links angeht und so.

Jochen

Daher nehme ich lieber Restructured Text.

Jochen

Ich glaube auch, dass das ist immer noch das, was am häufigsten verwendet wird.

Jochen

Also, wenn man irgendwie Dokumentation von Projekten anguckt, das ist meistens Restructured Checks.

Dominik

Aber ich habe es auch jetzt öfter mal Restructure-Tech mit Pfhinx oder so, ne?

Dominik

Ja.

Dominik

Versucht, aber.

Jochen

Ich verstehe, wo das Problem ist.

Dominik

Also es fliegt dann keiner mehr.

Dominik

Also Markdown kann man irgendwie besser.

Dominik

Ich weiß nicht, Restructure Checks wird es nicht schaffen.

Jochen

Keine Ahnung, aber.

Bin ich mir so nicht sicher.

Dominik

Also Markdown kann man so super viele Anlechungsfälle haben.

Dominik

Man kann das halt einfach sein GitHub hochladen, das ist direkt gerendert.

Dominik

Man kann, weiß nicht, es gibt so Typora oder so.

Dominik

Ich glaube, der ist leider, der war zwischendurch frei.

Dominik

Ich glaube, der ist jetzt leider auch proprietär, aber da konnte man wie so ein Schreibprogramm seine Eltern überreden, wenn die irgendwas schreiben wollen und kein Word brauchten, hey, schreib doch Typora, dann hatten die Markdown-Files voll toll.

Dominik

Und die haben es gar nicht gemerkt, weil das so ein Wolf Whisky-Editor für Markdown hat das.

Dominik

Richtig schön.

Dominik

Und so war es halt.

Dominik

Und ja, Obsidian vielleicht noch.

Dominik

Und das halt so eine grafische Visualisierung von deinen Markdowns macht, wenn du es möchtest und dann kannst du so ein bisschen sehen, woran du arbeitest oder wie die Team untereinander verknüpft sind.

Dominik

Die Links können machen.

Dominik

Kennst du das Zettelkasten-Prinzip?

Jochen

Luhmann ist das irgendwie, ne?

Dominik

Ich weiß nicht genau, wie heißt.

Zettelkasten habe ich.

Ach, jetzt können wir es nicht erklären, jetzt müssten wir hier vorliegen.

Dominik

Hier haben.

Jochen

Doch, ich glaube, ich glaube.

Dominik

Also du kannst auf jeden Fall Sachen da richtig einsortieren und hast die durch die Verknüpfung direkt viel schnellere Sachbehalte miteinander gebündelt.

Jochen

Ja.

Dominik

Ja, Luhmann kann sein, dass das richtig war, aber wie genau das ging, weiß ich jetzt nicht genau.

Dominik

Jedenfalls, auch Y unterstützt auch das, deine Ablage an dieser Methoden.

Dominik

Mein Notiz-Block, Simple Note, ich muss nur nicht sagen, jetzt auch Markdown-Renderable und so.

Dominik

Ja, also es sind ganz so viele Kleinigkeiten, die in diese Markdown-Welt reinspielen und diese Schlimmste sind alle interchangeable und das ist.

Dominik

Ich bin auch ein großer Fan von Markdown, habe ich ja schon gesagt.

Jochen

Nee, aber ich glaube, man kann das irgendwie durchaus so raushören, wenn man da ganz, ganz genau mit der Lupe drauf guckt.

Jochen

Ja.

Jochen

Ja, ja, es läuft momentan alles so ein bisschen auf Markdown hinaus.

Jochen

Mal schauen.

Jochen

Genau, auch schön ist, dass es halt auch in GitHub-Geschichten funktioniert.

Jochen

Da ist auch irgendwie Standardintegration, äh, standardmäßig die Integration an.

Jochen

Das heißt, wenn man das einfach so reinschreibt, dann hat man das halt auch in Issues oder halt in irgendwie Markdown, was halt auch von GitHub gerendert wird.

Jochen

Ja, überhaupt, aber das ganze Dokumentationsthema ist ja auch so.

Jochen

In letzter Zeit habe ich nicht, also gerade

schon ein paar Tickets.

Jochen

Genau, ein bisschen mit MacDocs beschäftigt, aber halt auch überhaupt mit diesem Ding, dass man das halt vielleicht mal tun sollte, weil, also Ansicht dazu, bisher war ja eigentlich immer so Dokumentation, ah ne, lieber nicht.

Jochen

Ist ein bisschen zweifelhaft vielleicht und inzwischen denke ich mir so, na, vielleicht ist es doch nicht so schlau.

Jochen

Und genau, da hatte Simon Willison auch irgendwie diverse Artikel jetzt in letzter Zeit in seinem Blog einmal irgendwie bessere Release-Notes schreiben.

Jochen

Da versuche ich mich jetzt auch so ein bisschen dran zu halten.

Dominik

Ja, das ist cool, das finde ich schwierig.

Dominik

Also bei mir steht auch in den meisten Commits nur Schrott drin wie Fixed Something oder Fixed Final oder Fixed Again oder Typo oder ja, also ich versuche es immer, also es gibt dann immer einen Commit, der ist ordentlich.

Dominik

Und 15 dann, die sind irgendwie so fixes davon.

Dominik

Ich glaube, man kann die irgendwie stacken.

Jochen

Du kannst sie hinterher squashen, genau.

Jochen

Wenn du das halt in einem Pull-Request ziehst.

Dominik

Ja, aber das mache ich zum Beispiel.

Ja.

Dominik

Ja, das würde man, den Pull-Request würde man machen.

Dominik

Das ist bei mir relativ egal, wenn ich der Einzige bin, der auf so einem Branch-Ack hat, dann ist das völlig wurscht.

Jochen

Ja, ja, klar, klar.

Jochen

Ja, würde ich auch sagen.

Jochen

Also normalerweise irgendwie mache ich das halt auch nicht, wenn ich da irgendwie alleine.

Jochen

Aber wenn man sich jetzt überlegt, eigentlich möchte man ja vielleicht irgendwie die Entwicklung auch skalieren können.

Dominik

Ja, das ist das sehr sinnvoll, dass man gute Commit-Messages hat, wo auch was passiert und nicht nur zwei Leerzeichen gemittelt werden.

Dominik

Dann müsste man auf jeden Fall seine Committees alles squashen und die ordentlich machen und so.

Jochen

Aber also Commit-Messages ist jetzt bei mir so, da die gehen eigentlich, finde ich.

Jochen

Die sind gar nicht so schlimm.

Dominik

Alle sind auch ganz okay.

Dominik

Ich habe mir mal über die Zeit mich mit euch unterhalten.

Dominik

Das ist auch schon ein paar Jährchen her, glaube ich.

Dominik

Und zwar, ob man die in Präsence oder in der Vergangenheitsform formuliert.

Jochen

Ja, weiß ich ja auch gar nicht mehr.

Dominik

Das Ergebnis war Präsenz wurde bevorzugt.

Jochen

Präsence, ja, kann sein.

Jochen

Ich weiß jetzt gar nicht, was ich meine, aber bei mir wird es nicht so gut.

Dominik

Dieser Commit fixt dies und jenes, anstatt dieser Commit hat das und das gefixt.

Jochen

Ja.

Jochen

Aber das ist ja nicht das gleiche wie Release-Logs.

Jochen

Release-Logs ist nochmal eine andere Geschichte.

Dominik

Ja, aber wann macht man das zum Beispiel?

Dominik

Also wann schreibt man quasi sein Ja.

Dominik

Die Fixliste, also das ist dann Plugs und Features.

Jochen

Wenn du eine Release machst.

Dominik

Also die, ja, aber auf Semantic Virgining auf welcher auf meiner.

Jochen

Semantic Virgining ist halt schon eine Sache.

Dominik

Braucht man das?

Dominik

Nein?

Dominik

Warum nicht?

Jochen

Naja, weil es ja auch nicht wirklich hilft.

Jochen

Also es ist gut, auch da gibt es eine Menge Leute, die mittlerweile halt irgendwie einfach fortlaufende Geschichten.

Dominik

Also wenn man zum Beispiel weiß, man hat jetzt nur ein bisschen was gefixt oder arbeitet an so ein paar Sachen rum, dann macht man immer so die Patchvision.

Dominik

Wenn man jetzt quasi ein paar neue Features eingebaut hat, würde ich sagen, schon Minor nach oben.

Dominik

Machen wir einfach Minor einem hoch.

Dominik

Neue Features, Minor.

Jochen

Ja, also genau.

Dominik

Und Major ist Breaking Change, also es geht irgendwas nicht mehr mit früher, dann ist Major.

Jochen

Ja, wenn man das so machen will, klar, aber die Frage ist halt, ob das jetzt sinnvoll ist oder nicht.

Jochen

Das ist halt nochmal eine andere Frage.

Jochen

Es gibt Leute, die machen es so, machen anders.

Jochen

Aber egal wie man es macht, also Release-Notes zu schreiben, ist wahrscheinlich immer eine ganz gute Idee, egal wie man es macht.

Jochen

Und ja, auch Daten-Datum zum Beispiel dazu zu schreiben und dann halt noch die, kann man sich auch die Artikel mal im Detail angucken.

Ja, sei ja, stimmt.

Dominik

Idealerweise sollte da die User-Story beschrieben sein, die gefixt wurde oder die für

dazu gekommen ist.

Jochen

Das Spiel ist auch nicht gut.

Es sollte so sein, dass...

Das kann man schreiben.

Jochen

Ja, gut, vielleicht ein Satz, okay, das ist okay, aber es sollte halt nicht irgendwie, genau.

Jochen

Man kann ja durchaus die Issues und so reinschreiben.

Dominik

Nein, aber der Titel vielleicht.

Dominik

Also der User kann sich jetzt auf unserem Backend einloggen.

Dominik

Oder sowas wie der User kann jetzt den Filter so bedienen, dass er alle möglich noch ist.

Jochen

Ja, das ist halt die Frage, für wen schreibst du das?

Jochen

Das sollte man sich vielleicht auch überlegen.

Dominik

In Devs.

Jochen

Ja, weil die interessiert das doch nicht, was die User-Story ist.

Jochen

Also ich würde sagen, aus einer technischen Perspektive sind ja User-Stories doch eigentlich komplett unentgleichbar.

Dominik

Aber das wäre ja die technisch Formulierung von, du kannst jetzt in diesem Formular das und das die Auswahl verändern.

Jochen

Technisch würde ich reinschreiben, was tatsächlich passiert ist, was man geändert hat.

Dominik

Oder so Mittel-Messages aneinander kleben.

Jochen

Nee, nee, nicht die.

Jochen

Aber halt sozusagen reinschreiben, was da passiert ist.

Jochen

Aber aus Business-Sicht ist das halt uninteressant.

Jochen

Aus Business-Sicht ist halt nur interessant, was ist mit dem, was ist denn jetzt mit unseren User-Stories passiert.

Jochen

Aber aus technischer Sicht sind die User-Stories halt relativ irrelevant.

Dominik

Das finde ich gar nicht.

Jochen

Nee.

Jochen

Okay, gut, interessant.

Jochen

Ich weiß es nicht so genau.

Jochen

Ich würde sagen, dass die meisten Open-Source-Projekte sowas gar nicht haben.

Jochen

Die haben gar keine User-Stories oder sowas.

Dominik

Ja, okay, aber das, was damit gemeint ist, vielleicht, weil tatsächlich ja das Feature, das so man baut, vielleicht das ist, was man dann umsetzt.

Dominik

Und wie man das, also das würde ich jetzt in so ein Release-Log reintreiben, welches Feature jetzt umgesetzt ist.

Jochen

Ja, wie gesagt, aber ich glaube, es würde sich, würde wahrscheinlich schon viel helfen, wenn man sich überlegt, an wen richtet sich das eigentlich, wer soll das lesen.

Dominik

Manager lesen oder Nutzer lesen oder die Devs lesen.

Jochen

Und zum Beispiel ein Ding, das mich jetzt gerade interessiert, deswegen beschäftigt mich damit auch so ein bisschen, eben wenn man jetzt Entwicklung skalieren möchte, dann ist es vielleicht gar nicht so schlecht.

Jochen

Also zum Beispiel eben auch andere Artikel, ich hatte es jetzt gar nicht mehr wie der Titel von dem war, dass Ivan Wilson geschrieben hat.

Jochen

Also, ja, also er schreibt immer, seit einiger Zeit immer macht er immer GitHub-Issues auf für alles, was er macht.

Jochen

Und einfach um halt einen Punkt zu haben, wo er alles sammeln kann, was zu einem bestimmten Ding gehört.

Jochen

Auch.

Jochen

Und zwar nicht nur.

Dominik

Was ich ganz gerne mache, ist, das muss man halt immer ein bisschen einstellen, ist To-Do-Kommentare im Code.

Dominik

Ja.

Dominik

Aber die mit GitHub Post-Assessing, dass ich halt einen Hook habe, dass er halt automatisch aus meinen To-Dos im Code-Issues erstellt, auf GitHub und die automatisch wieder zumacht, wenn das To-Do da verschwindet und dass sie die automatisch auch nummeriert und das dann halt auch in einem Commit mit ergänzt.

Dominik

Das heißt, er schreibt dann quasi an der To-Do die Issue-Nummer mit dran und dann kann man quasi darüber auch direkt sich linken lassen, wenn man das einstellt, auf den Issue auf GitHub und sich den angucken und die Diskussion dazu angucken.

Dominik

Und hat aber das im Code stehen und muss halt nicht zwei Sachen fliegen, sondern du kannst halt einfach im Code das dann bereinigen und dann ist er halt geschlossen und sowas.

Dominik

Und das finde ich.

Ja, wenn

Jochen

du eine Stelle hast an einem Code, wurde das hin, aber es gibt ja auch viele Dinge, die kannst du ja nicht an einer Stelle festmachen.

Jochen

Aber gut, ja, ja, wie man es macht, ist ja letztlich ganz.

Dominik

Du könntest natürlich auch ein Extra machen und dann halt referenzieren.

In einem Commit oder so.

Dominik

Aber ja.

Jochen

Genau, und das kannst du ja mit dem Issu auch super machen.

GitHub macht das ja gute.

Dominik

Also es hätte nicht niemand daran, noch extra Issues aufzumachen, wollte ich

damit sagen.

Jochen

Ja, ja, nee, klar.

Jochen

Also ich weiß gar nicht, also wie man es jetzt macht, das kann man halt machen, wie man will.

Jochen

Aber nee, was ich daran interessant fand, ist halt, also einmal sagt er halt irgendwie, aber er halt, was er, warum er das macht, ist halt, dass er einen Punkt haben möchte, sozusagen, an dem, an dem alles andere hängt und GitHub macht das halt automatisch für ihn, das alles zusammenzuführen, sozusagen, wenn er irgendwo dann halt die Issue-Nummer mit reinschreibt.

Jochen

Und der andere Punkt ist halt, er hätte gerne dann daraus einen Pull-Request und dann sozusagen einen perfekten Commit, der halt das dann halt irgendwie handelt.

Jochen

Wo er dann halt sozusagen alles zusammen hat, was an Änderungen an Dokumentation, Tests, Code gemacht werden muss, damit das halt irgendwie dann, damit er das Ding zumachen kann.

Jochen

Und dann ist der Issue sozusagen eigentlich auch so eine schöne Geschichte, um halt da reinzuschreiben, was denn überhaupt passieren soll.

Jochen

Auch eine gute Gelegenheit, um sich Gedanken zu machen, was man eigentlich machen will.

Jochen

Und allein, wenn man sich überlegt, okay, ich mache jetzt eine Issue auf und schreibt mir erstmal auf, was denn jetzt dazugehört, dann erledigen sich halt viele Sachen schon, weil man dann anfängt, so ein bisschen gezwungen ist, darüber nochmal nachzudenken und dann vieles sich dann auch schon wieder erledigt.

Jochen

Und so anfängt nachzudenken, ist ja manchmal so ein bisschen, ist ja nicht so schlecht.

Jochen

Oft ist es halt so, dass man das dann später merkt, wenn man irgendwie anfängt zu entwickeln und dann später merkt man so, oh, das hätte ich jetzt alles eigentlich gar nicht machen müssen.

Jochen

Aber also, das fand ich ganz, äh, ganz nett.

Jochen

Vor allen Dingen, ich habe das jetzt zum Beispiel für einen Ding, ich habe so einen Podcast-Client geschrieben.

Jochen

Ich weiß nicht genau, warum ich das jetzt gemacht habe.

Schreibt für diesen Ding Jagni.

Ich weiß nicht genau, ob ich das jetzt noch gemacht habe.

Jochen

Ja, Jagny könnte sein.

Jochen

Oder halt auch einfach so Standard-Jack-Shaving, könnte auch gut sein.

Ja, eben, ja, ja.

Jochen

Ich habe jetzt vielleicht nochmal eine Abschweife Richtung unternehmen.

Jochen

Aber genau, und da habe ich mir dann gedacht, okay, das war dann halt auch das Richtige.

Jochen

Das sind Issues, mache ich jetzt vielleicht mal auch mal so.

Jochen

Klicke einfach schon mal ein paar Issues an, weil jemand vorbeikommt und da drauf guckt, dann kann er das vielleicht einfach so machen, einfach damit Leute halt einen Ansatzpunkt haben.

Jochen

Weil wenn du halt einfach so eine Code-Basis hast, dann weißt du ja gar nicht, selbst wenn du dann irgendwas machen wollen würdest, was du dir jetzt sagen sollst.

Dominik

Die meisten Leute, die gehen ja nicht hin und gucken, oh, das gibt es denn schon für GitHubs für coole Podcast-Clients, oh, der ist auch total unfähig, das sieht doch cool aus, dann gucke ich mal in die Issues rein, was ich alles machen kann.

Nein.

Dominik

Sondern die fangen dann ihren eigenen Podcast-Client an.

Jochen

Ja, so wie ich, das stimmt.

Jochen

Ja, genau, vielleicht ist es ein bisschen zu enthusiastisch, optimistisch verblendet.

Jochen

Aber wenn man das denn machen wollen würde, dann ist es natürlich die Wahrscheinlichkeit, dass jemand vorbeikommt und was macht, vielleicht viel höher, wenn da schon sowas ist.

Dominik

Ja, ich würde sagen, das macht tatsächlich dann Sinn, wenn das Projekt schon so ein bisschen Drive aufgenommen hat und so ein paar Stars gesammelt hat und man dann denkt, so hey, es wäre jetzt vielleicht cool, so ein paar.

Jochen

Nee, ich mach das vor allen Dingen deswegen halt, um das zu üben, weil wenn man es dann braucht, dann ist ja immer schlecht.

Dominik

Wenn man das dann erst lernt.

Dominik

Genau.

Dominik

Man muss ja immer schon alles direkt perfekt können.

Jochen

Nicht perfekt, aber so ein bisschen besser als wie man vielleicht gerade vielleicht.

Jochen

Ja, das ist manchmal nicht so einfach.

Dominik

Ja, also immer auf jeden Fall besser als alle, ja, ja, ich verstehe das.

Ah, ja.

Dominik

Ja, das ist halt aber tatsächlich so eins der Probleme, die wir in unserer Gesellschaft, in unserer Kultur haben.

Dominik

Das sehen andere Leute aus anderen Ländern überhaupt nicht so, die verstehen das überhaupt nicht, warum wir da so völlig bescheuert sind.

Dominik

Und denen ist das.

Dominik

Also die, äh, die können das wirklich nicht nachvollziehen.

Dominik

Ich finde das auch ein bisschen anstrengend immer.

Dominik

Und die finden das auch nicht so produktiv.

Dominik

Und es ist tatsächlich nicht so business optimiert.

Ja, das mag sein.

Aber naja.

Jochen

Aber zum Glück muss ich auch nicht auf Business-Ziele optimieren.

Dominik

Ja, gut für dich, Jochen.

Jochen

Ja, genau.

Jochen

Ja, ich, genau, ich wollte einfach mal so ein bisschen über Issues schreiben und ja, das mache ich jetzt auch so ein bisschen.

Jochen

Und ich habe einen kleinen, und ich tatsächlich, ich finde eigentlich Podcast-Client ist, also habe ich schon erzählt, warum ich das interessant finde oder was mich da so dran angesprungen hat.

Jochen

Der Grund, warum ich das mache, ist, dass man das ja sowieso irgendwie braucht.

Jochen

Ich habe das Gefühl, ich muss es sowieso früher oder später irgendwann tun.

Jochen

Und der Grund, warum ich man das irgendwie tun muss, ist, oder ich das Gefühl habe, dass ich das tun muss, ist, weil da ja so viele schöne andere Dinge dran hängen, wie zum Beispiel, wenn du jetzt irgendwie Aussehen wissen möchtest, wie zum Beispiel ein Podcast aussieht in einem Podcast-Hosting, dann willst du den vielleicht importieren.

Jochen

Wie machst du das?

Jochen

Naja, du sagst halt, hier ist mein Feed, importier doch mal.

Jochen

Feed importieren irgendwo her und einen Client haben, der irgendwie sagt, das ist fast das Gleiche.

Jochen

Das ist fast das Gleiche.

Jochen

Also.

Jochen

Und überhaupt, ja, vielleicht willst du einen Katalog haben, vielleicht willst du irgendwie, da brauchst du, musst du auch die Dinger parsen können.

Jochen

Feeds parsen können, Podcast-Client haben, ist fast das gleiche.

Jochen

Ganz interessante Geschichte und dann wollte ich mal gucken, wie funktioniert eigentlich diese Feedparser-Library so, was muss man dafür eigentlich alles machen.

Jochen

Ja, dann habe ich das irgendwie gestartet.

Jochen

Und ich dachte, ach, Rich und so, das ist auch voll cool.

Dominik

Ja, Rich und ich ja tatsächlich, habe ich ja schon ein paar Mal gepickt.

Ja.

Dominik

Rich gibt es die Clea.

Rich Clee.

Dominik

CLI.

Jochen

Genau, das wollte ich eigentlich gleich nochmal picken, aber können wir auch jetzt machen.

Ist mir egal.

Dominik

Das wäre dann Pick gewesen, okay.

Dominik

Entschuldigung.

Dominik

Statt Bud, hast du gesagt, nimmst du Rich CLI, weil es so wunderschön Dokumente darstellen und Markdown-Rändern und Tabellen, CSU.

Jochen

Genau, also das, was ich bisher eigentlich immer verwendet habe, ist Bud.

Dominik

Das verwende ich auch immer noch.

Dominik

Ich finde

Jochen

das super.

Jochen

Ja, so ist.

Jochen

Ist auch ganz gut.

Dominik

Pars, Modern Unix.

Ja.

Jochen

Aber beim Konfigurierbar.

Jochen

Man kann es konfigurieren, aber in der Default-Konfiguration macht es halt irgendwelche Zeilennummern davor.

Dominik

Ja, das kann man nicht mehr Copy and Pasten, hast du recht.

Dominik

Das heißt, das kann man auch nicht mehr pipen, wie man das mit Cut gewohnt ist.

Dominik

Und deswegen muss man die Konfiguration anpassen.

Dominik

Das sind zwei Environment-Variablen, die man setzen muss.

Dominik

Und dann muss man machen, wenn man das so haben möchte.

Dominik

Also eine für den Style und eine für die Teilnummern und dann kann man das nach wie vor in einen Pipes einsetzen und kann das dann Aldiassen auch auf Cut und dann kann man Butt nehmen für mit Teilnummern.

Jochen

Ja, aber wie gesagt, wenn man Rich nimmt, dann ist das halt, also Rich CLI und auf der Kommanderzahl ist es dann einfach nur Rich als dann muss man das eben nicht machen, sondern es funktioniert einfach so.

Jochen

Und es kann auch ein bisschen mehr Syntax-Highlighting-Geschichten machen als Butt.

Jochen

Also insofern, ja, kann man ja mal ausprobieren.

Jochen

Also ich habe gewinnen.

Dominik

Das kann es auch natürlich.

Dominik

Also ich mag ja Rich auch, ich mache mit Rich auch Konsolenanwendungen teilweise.

Jochen

Ja, gibt es jetzt auch, naja, nein, nein, das sag ich jetzt nicht.

Jochen

Da müsst ihr jetzt warten bis zum Schluss, dann picke ich nämlich das, nämlich stattdessen.

Jochen

Na gut.

Jochen

Und genau, ja, und da dachte ich ja so, kommen halt ein paar Sachen zusammen, die das aus unterschiedlichen Gesichtspunkten interessant machen, deswegen habe ich jemandem angefangen.

Jochen

Ich hab, genau, also einige der Geschichten, also von diesem Bootstrap-Ding und Django Crispy Forms und so muss man irgendwie weg.

Jochen

Ich hab jetzt auch, das habe ich, das habe ich relativ aus anderen Gründen und dann das jetzt nicht meine privaten Projekte so viel mit zu tun gehabt.

Es gibt

Dominik

auch irgendeinen, ich weiß nicht mehr, ob das mit Crispy-Forms war oder sowas, wo man einen Hook reinbauen kann und dann halt die Forms mit Tablement benutzen kann.

Jochen

Ja, also ich würde sagen, das war auch interessant, wenn da jemand eine Empfehlung zu hat, wie man das, also ich hab mir jetzt Crispy-Form habe ich auch mal so verwendet, ich habe es nie so genau angeguckt, sondern immer nur so benutzt.

Jochen

Und es ist ja auch, es hat ja einige ganz nette Geschichten und es macht einige Dinge ja einfacher.

Jochen

Und jetzt habe ich da halt so mal tief reingeguckt und ich muss sagen, das muss alles weg.

Jochen

Das muss alles, das geht nicht.

Jochen

Das ist alles ganz schrecklich.

Jochen

Also, das ist halt irgendwie langsam, man kriegt es auch nicht schnell, weil es ist furchtbar.

Jochen

Und das ist alles so, also das ist, nee.

Jochen

Also ich denke, man sollte das anders machen.

Jochen

Ich weiß jetzt auch noch nicht wie, aber man muss das irgendwie anders machen, das geht so nicht.

Jochen

Und das war mir nicht so klar vorher, als ich da noch nichts reingeguckt habe.

Jochen

Dachte ich da, komm schon nehmen, ne?

Jochen

Aber jetzt, ja, okay.

Dominik

Irgendwas mit Forms muss man sich nochmal ausdenken, okay.

Jochen

Ja, wobei, wenn man halt irgendwie, da hast du jetzt wieder, das ist halt das Problem.

Jochen

Ich meine, wenn du das jetzt so machst, wie mit dass du die CSS-Klassen in eine HTML setzt und so, dann hast du halt beim Rendern ein Problem, weil dann musst du das nämlich alles irgendwie setzen unter Umständen.

Dominik

Wieso, du machst ein Template für einen

Jochen

Ja, weil also das ist ja genau das Problem, dass das CRISPR-Forms löst.

Jochen

Du hast halt eine Form, jetzt kommen die Formen Fehler zurück.

Jochen

Wie machst du das so, dass jetzt deine Fehler ordentlich gesetzt, dass halt so ein roter Kringel drumrum ist?

Dominik

Ja, du nutzt R den Default und den machst du also zum Beispiel mit CRISPR-Template, CRISPR-Table gibt es auch.

Dominik

Und dann, ähm, also kann sein, dass das auch langsam ist, ja, weil das dann auch Crispy Forms ist.

Dominik

Aber dann machst du halt einfach in dein Template, überschreibst dann halt den Default und hast dann deinen schönen Style.

Jochen

Nein, aber du musst es ja in das HTML rausrendern, weil die Klassen müssen ja im HTML drinnen.

Dominik

Das wird dann da reingerendert.

Dominik

Wenn du einfach deine Form erzeugst und die Form gibt es nicht mehr so.

Jochen

View.

Jochen

Also wie passiert das denn zum Beispiel, wenn da halt die Fehler zurückgegeben werden?

Jochen

Du hast jetzt eine Form, jetzt validiert das nicht, sondern da sind irgendwie Fehler.

Dominik

Dann nimmt die Fehlerklasse und im Fehlerklasse hängt ein HTML-Element mit dran.

Ja, aber das ist ja aber das.

Jochen

Das ist nicht einfach irgendwie eine Fehlerklasse.

Dominik

Doch, das ist nicht, das ist.

Jochen

Da wird ganz kompliziertes Zeug gemacht.

Jochen

Da werden diverse Klassen hinzugefügt, diverse Sachen geändert.

Jochen

Und das musst du auch machen, sonst geht das nicht gut aus hinterher.

Dominik

Ja, aber du kannst ja nicht, ja, du kannst ja beschreiben, glaube ich, anders.

Dominik

Ich hatte irgendwie mal ein zwei Sachen customized, das ging.

Jochen

Ja, man kann so ein bisschen customizen, aber naja, okay, keine Ahnung.

Jochen

Also wie gesagt, also dieses Problem hast du, wenn du das halt, wenn du das HTML verändern möchte, äh, verändern musst, wenn du jetzt den Fehler änderst, dann musst du das irgendwie machen, wie auch immer du machst.

Jochen

Aber du musst es ja irgendwie tun.

Jochen

Und das ist nicht so, dass da irgendwas in Django drin wäre, was dir dabei hilft, sondern da musst du halt dann irgendwie Crispy-Forms nehmen oder irgendwas anderes, was es halt für dich macht.

Jochen

Und das ist halt nicht so ganz einfach.

Jochen

Während wenn du jetzt, sagen wir so, du hast jetzt getrenntes CSS, ja, dann und du hast halt da definiert, wie dein Scheiß, wie dein ganzer Kram halt so aussieht.

Jochen

Und da setzt du halt dann, sagst du jetzt hier, Fehler, rennerst aber ganz normales, semantisches HTML raus.

Jochen

Ohne dass, dann hast du sozusagen in deiner Applikationslogik irgendwie kein Problem damit, dass du da irgendwie komische Dinge, äh, Klassen auf HTML-Geschichten setzen musst und so, sondern dann sagst du halt irgendwie nur, das ist mein Standard, ich weiß nicht, was von Django dann zurückkommt, was da für eine Klasse gesetzt wird oder wahrscheinlich irgendwas.

Jochen

Und dann zahlst du das in einem CSS und fertig.

Jochen

Das macht es dann halt deutlich einfacher, ne?

Jochen

Also, aber ich weiß es nicht, muss mal gucken.

Jochen

Ich hab keine Ahnung.

Jochen

Damit man beschäftigen.

Dominik

Dann muss man so ein Template wiederbauen für HTMX und Django dann.

Jochen

Also, eine Geschichte, die ist halt, ich weiß nicht, SQL-Model, sagt er ja vielleicht auch.

Jochen

Es gab jetzt auch letztens eine Episode zu irgendwie wieder auf Talk Python to me.

Jochen

Und das versuche ich ja gerade zu entfernen, zum Beispiel aus dem Fast Deploy.

Jochen

Und der Grund ist, weshalb ich das versuche zu machen, ist ja, ist, dass ich versuche, mal das so ein bisschen umzuorganisieren.

Jochen

Dass halt so ein bisschen Software-Architektur hinkommt.

Jochen

Ich weiß, das ist auch nicht unbedingt jedermann-Sache, ist auch, ich habe auch früher mal schon gedacht, so Software-Achiturguiert, das ist so ein bisschen.

Jochen

Das verschnürt mir schon, wenn ich das Wort ausspreche, irgendwie die Krawatte die Luft ab, irgendwie so.

Dominik

Architekt, feiner Herr.

Jochen

Aber vielleicht gibt es Situationen, in denen das doch nicht so verkehrt ist.

Jochen

Und ich wollte es einfach mal so ein bisschen ausprobieren und deswegen mache ich das da jetzt.

Jochen

Und genau, da ist ja immer so.

Dominik

Was ist denn Architektur, Software-Architektur überhaupt?

Jochen

Naja, es ist im Wesentlichen quasi die Beschreibung für die Tätigkeit, die man halt ausübt, wenn man Software versucht so zu modularisieren, also so in Teile zu zerlegen, dass man nur noch irgendwie, dass die Gesamtkomplexität nur noch dominiert wird von der Komplexität des komplexesten Moduls und nicht mehr alles mit allem zusammenhängt.

Jochen

Und die Art, wie man, was man macht, wenn man das jetzt tut und versucht, das klein zu hauen, das nennt man halt Software-Architektur, sag ich jetzt mal so.

Also Software-Engineering.

Jochen

Es gibt da, das wäre jetzt meine außer hohlen Hand Definition.

Jochen

Es gibt da Leute, die versucht haben, das ernsthafter zu definieren, wie so Martin Fowler und so, die würden sowas sagen wie, Softwarearchitektur sind alle die grundlegenden und schwer änderbaren Entscheidungen, die ich weiß nicht, ob ich die Definition richtig zusammenkriege, die Einfluss dann halt auf das Projekt haben und die dazu führen, ob man jetzt irgendwie Dinge schneller ändern kann oder nicht.

Jochen

Kann man auch kritisieren, es ist so wichtig, ob man, ob man Code hinterher ändern kann oder nicht.

Jochen

Was sind das denn eigentlich, wenn man weiß, dass es wichtig ist, dann hat man ja schon den Teil der Softwarearchitektur irgendwie erledigt im Grunde.

Jochen

Man weiß halt vor allem bei den Entscheidungen halt dummerweise leider vorher meistens nie, ob die jetzt wichtig sind oder nicht.

Jochen

Aber das ist halt eine Definition, ich glaube, ich habe die von, die haben auch andere Leute so ähnlich auch schon gebracht.

Jochen

Mir gefällt die irgendwie, wie zerlegt man eigentlich ein Programm in kleinere Teile ein bisschen besser.

Jochen

Aber ja gut, ist halt ein bisschen Geschmackssache.

Jochen

Aber im Grunde irgendwie so, man kann sich das auch vorstellen, ja, wie wenn man ein Haus da Architektur hat, dann kann man auch für ein Software-Ding Architektur haben.

Dominik

Also Microservices für so Häuserbreitstellen, also jedes Thema auf dem eigenen.

Jochen

Microservices wäre halt ein Ding, wie man, also aber Architektur bezieht sich jetzt nicht auf den IT-Teil, nicht auf das System.

Jochen

Sondern eher auf die Software.

Jochen

Also du kannst natürlich auch, also ich meine, das sind halt eher so die Dinge, wo ich das Gefühl habe, das geht dann halt schief.

Jochen

Wenn Leute das Softwareproblem, weil sie es irgendwie nicht lösen können, das sieht man übrigens ganz oft, also mir begegnet das häufig und es ist furchtbar.

Jochen

Meistens, also die Konsequenzen sind meistens furchtbar, dass Leute halt diese Modularisierungsding in der Software nicht gebacken kriegen, aus welchen Gründen auch immer, und dann hingehen und das versuchen auf einer anderen Ebene zu lösen.

Jochen

Also auf der Ebene zum Beispiel, was man häufig sieht, ist, dass die Leute dann versuchen, es organisatorisch zu lösen oder dass Leute versuchen, es mit IT-Geschichten zu lösen, ja, irgendwie, wir nehmen jetzt die Cloud.

Jochen

Oder dass Leute es mit Microservices versuchen.

Jochen

Und all diese Ansätze sind eigentlich immer, das scheitert immer ganz spektakulär.

Viel anders.

Jochen

An dem grundsätzlichen Problem ändert sich dadurch nichts und du hast dir das Leben halt irgendwie gerade nochmal irgendwie mit Größenordnungen schwerer gemacht, dadurch, dass du jetzt zum Beispiel.

Dominik

Andere Service, ganz viele Park, ein Zufuhrpark von einem Zoo.

Jochen

Ja, ja, ja.

Jochen

Gerade Microservice gab es auch letztens, habe ich auch letztens eine Podcast-Episode darüber gehört, mit dem es gibt ein Buch, das irgendwie alle immer referenzieren, was Microservices angeht.

Jochen

Und der sprach dann halt auch so drüber, der hat das Buch geschrieben und meinte so, ich bin ein bisschen unglücklich, ich geld jetzt immer als Experte für Microservices, weil ich dieses Buch geschrieben habe, na gut.

Jochen

Und der meinte, er macht halt viel Consulting irgendwie und wird eigentlich immer dazu gerufen, wenn irgendwelche Leute auf die Idee gekommen sind, wir müssen jetzt mal auf Microservice-Architektur umsteigen.

Jochen

Und dann holt man sich halt irgendjemanden dazu, der dann sagen soll, warum das irgendwie alles eine super Idee war.

Jochen

Und dann sitzt er dann immer und meint so, hm, ist vielleicht gar nicht so eine gute Idee in eurem Fall.

Jochen

Er macht ihn nicht unbedingt beliebt, aber er versucht das dann irgendwie so diplomatisch zu verpacken.

Jochen

Aber er meinte so, ja, das ist ganz oft ist es halt so, dass Leute das dann so probieren.

Jochen

Aber eigentlich sollte man vielleicht andersrum anfangen und eher Monolith nehmen und dann halt, wenn man dann auf bestimmte Probleme stößt, die man anders nicht mehr lösen kann, dann Microservice ist dann vielleicht eine Möglichkeit unter Umständen.

Jochen

Aber damit anzufangen, ohne zu wissen, was man jetzt eigentlich machen möchte, das ist vielleicht nicht so eine gute Idee.

Jochen

Und das ist eigentlich, also wenn man jetzt halt vorher schon ein Problem mit der Modularisierung hatte und dann auch noch Microservices dazu nimmt, dann hast du halt hinterher ein Distributed Ball of Mutt sozusagen.

Also das Problem schlimmer an Modularisierung kann sein, dass man verschiedene Stellen hat, an denen man Dinge fliegen muss.

Jochen

Ne, Modularisierung ist eigentlich eine gute Sache.

Dominik

Aber wenn nicht, du hast gerade ein Gebenbeispiel gesagt, du hast gesagt, wenn man Probleme da gibt.

Jochen

Das ist gut.

Jochen

Also wenn man das hinkriegt, ist es gut.

Jochen

Wenn man es nicht hinkriegt, ist doof.

Jochen

Also wenn du es nicht schaffst, sozusagen Modular.

Dominik

Dinge voneinander zu trennen.

Jochen

Ja, wobei jetzt auch nicht Trennung beliebig super ist, ja, so natürlich kann man das auch falsch machen, in dem Sinne, dass man halt das an den falschen Stellen trennt, irgendwie in der falschen Granularität trennt.

Jochen

Das ist natürlich nicht schlecht.

Jochen

Und wenn man jetzt sozusagen es aber gar nicht schafft, es zu trennen und sagt, wir machen jetzt aber Microservices, um die Sachen, wo wir es halt falsch getrennt haben, nochmal zu zementieren, indem wir es auf andere Rechner packen oder in andere Repositories und so, und dazwischen halt jetzt Schnittstellen haben, die wir schlecht ändern können und die, wo wir Fehlerbehandlung machen müssen, und das ist alles ganz, ganz schrecklich, dann ist es halt noch viel schlimmer als vorher.

Jochen

Also wenn du vorher das Problem hattest, du hast es nur in deinen Funktionsaufrufen nicht geschafft, das ordentlich zu trennen.

Jochen

Und jetzt hast du es halt irgendwie diese Funktionsaufrufe verteilt, aber du hast es quasi nicht wirklich modularisiert, sondern du hast ja Abhängigkeiten immer noch, dann hast du danach ein viel schwereres Problem als vorher.

Jochen

Du hast es nur dann eine ganze Zeit lang nicht mehr gemerkt, weil da warst du damit beschäftigt, irgendwie Kubernetes zu konfigurieren, ja.

Jochen

So ein halbes Jahr oder so.

Jochen

Und dann nach einem halben Jahr fällt ja auf, so das Problem ist eigentlich noch viel schlimmer als vorher.

Jochen

Und das ist halt dann, ja, da bist du in einer doofen Position, weil da kommst du dann auch nicht mehr so leicht raus.

Jochen

Und ja, das ist halt genau, ja, das ist halt ja, Architektur.

Jochen

Genau, also jedenfalls damit beschäftige ich mich halt auch gerade so ein bisschen.

Jochen

Ich meine, da müssen wir mal drüber reden, wenn ich da irgendwie mehr zu weiß.

Dominik

Ich glaube, da müssen wir auch eine eigene Folge zu machen zur Architektur.

Jochen

Aber, oder auch Microservice versus Modulit, ja, schreiben, ne?

Dominik

Auskennen.

Dominik

Sag ihr uns Bescheid, hallo ich weiß ein Strategie.

Jochen

Genau, was ich halt gerade versuche, ist halt mich mit diesem, was macht man denn eigentlich so üblicherweise, wenn man jetzt eine Architektur, wenn man überhaupt so ein bisschen Architektur haben möchte, wie macht man das denn?

Jochen

Und zum Beispiel, was ich, ein schönes Zitat, was es halt in dem Buch, diesem Software Architecture Patterns with Python-Buch, das ich da so lese, zulese, gibt es halt.

Jochen

Und ja, das fällt mir halt dazu, dann auch allen, wo man sagt, ja, super, weil das, ich kenne das, ganz viele Leute, ah, super, Microservice voll gut oder sonst wie irgendwie.

Jochen

Ja, der, der, das hatte mal, glaube ich, der Autor von Closure, der Programmiersprache Rick Hickey oder Rick Hickey, ich weiß gar nicht, wie viel IP ist da nochmal, hat das gesagt.

Jochen

Er meinte so, ja, es gibt immer unter Ökonomen den Witz, ja, so Ökonomen kennen irgendwie den Preis von allem, aber den Wert von nix.

Jochen

Und Softentwickler kann man das halt auch anpassen und sagen, ja, Software-Entwickler, die kennen halt irgendwie die Vorteile von allem, ja, oder die Features und die, aber sie kennen halt irgendwie die Trade-offs und die Nachteile von nix.

Jochen

Und das ist halt, das ist so ein bisschen, das ist halt, da ist was Wahres dran.

Jochen

Und zum Beispiel, eben, das ist, da, da, wir hatten ja das letzte Mal diese Fast API-Episode oder so.

Jochen

Also, das ist so, also ich weiß nicht, würde es, würde man, auch wenn ich das so, auch bei Talk-Python-Turmin oder so, wenn ich das höre, ich höre immer so, ja, das ist alles voll gut und so.

Jochen

Aber es gibt ja auch Nachteile, die das halt, wenn man das jetzt so macht.

Jochen

Also wenn man jetzt zum Beispiel sagt, man nimmt jetzt FastAPI, nehmen wir mal einfach ein Beispiele, du nutzt halt FastAPI, SQL Model und so und alles funktioniert mehr oder weniger automagisch.

Jochen

Was ist der große Nachteil an dieser Geschichte?

Okay.

Jochen

Tja, da würde ich sagen, eben, da bist du schon ein typischer Software-Entwickler.

Jochen

Die meisten würden sagen, ja, das hat doch keinen Nachteil, das ist ein Notfall.

Jochen

Das hat halt schon Nachteile und der Nachteil ist halt, wenn du halt von SQL-Model erbst, dann kannst du das nie wieder ändern.

Jochen

Wenn du jetzt auf die Idee kommst, hey, wir machen das oder du stellst halt fest, irgendwie du Mist hast, du hast viele kleine Sachen, die halt serialisiert werden müssen.

Jochen

Das ist halt zu langsam, das funktioniert irgendwie nicht.

Jochen

Und das ging dir besser, wenn ich das jetzt irgendwie mit einem Umpai machen würde oder keine Ahnung, dann das kannst du nicht mehr anpassen.

Jochen

Das ist halt einfach, dann hast du halt mehr oder weniger verloren.

Dominik

Naja, du könntest ja schon einen Export der Datenbank machen und einen Import an anderer Stelle, du musst ja eine kurze Downtime-Kauf nehmen und so, alle Conversion dazwischen schalten.

Dominik

Also irgendwie geht das ja schon.

Jochen

Wenn deine Business-Logik da drin hängt und du hast von SQL-Model geerbt oder von Pydentic irgendwie von den Base-Models, da kannst du nicht mehr viel machen.

Jochen

Das ist halt dann, das ist halt das Problem.

Jochen

Du hast halt, oder sagen wir mal so, nehmen wir es an, ich will gar nicht auf Fast API rumhacken oder so.

Jochen

Also ich meine, dieser Ansatz ist ja durchaus verbreitet, ja, der ist ja bei allen Frameworks ist es halt so, du erbst von irgendwas und dann hast du halt viel mehr Fähigkeiten und hast halt in kurzer Zeit sozusagen in Anführungsstrichen viel geschafft, aber du kannst es halt auch nicht mehr ändern.

Jochen

Wenn du das in Django machst, hast du das gleiche Problem.

Jochen

Wenn du in Django irgendwie erbst du ja von Models.

Jochen

Und hast da deine Fields und so, was ist denn jetzt, wenn das aus irgendwelchen Gründen nicht mehr gut auf deine Anforderungen passt?

Dominik

Jo, da musst du halt umziehen.

Jochen

Ja, aber das geht quasi nicht.

Dominik

Endpunkt pro Endpunkt.

Jochen

Funktioniert nicht gut, das kannst du praktisch nicht mehr ändern.

Jochen

Also da würde ich sagen, der große Nachteil, den du damit, also du kaufst dir eine Menge, du kriegst halt viel Magie, einfach so ganz schnell, und es funktioniert ganz viel.

Jochen

Der große Nachteil, den du dir einkaufst, ist, du kannst das nicht mehr ändern.

Wilde Magie.

Jochen

Du hast dich ganz eng an dein Framework gekoppelt.

Jochen

Das ist die engste Kopplung, die es überhaupt gibt, von irgendwas zu erben.

Jochen

Und jetzt eben sozusagen diese klassische Softwarearchitektur würde halt sagen, ja, Frameworks sind nicht deine Freunde.

Jochen

Sei vorsichtig, wenn du von irgendjemandem erbst.

Jochen

Das ist immer, du koppelst dich da ganz eng.

Jochen

Also all diese Sachen von Sachen erben, Sachen importieren, alles vielleicht nicht so gut, weil das lässt sich hinterher sein.

Dominik

Ja, aber alles selber machen ist halt auch irgendwie ein bisschen gerade.

Nein, musst du ja nicht.

Jochen

Du könntest zum Beispiel stattdessen Softwarearchitektur machen.

Jochen

Ist halt nicht.

Jochen

Du machst, also da könntest es halt so machen, dass zum Beispiel dein Kern, deine Applikation halt von überhaupt nichts abhängen.

Jochen

Von nichts erbt und auch nichts importiert.

Dominik

Aber es braucht einen Händler für Speichern von Daten.

Jochen

Ja, aber den kannst du reinreichen, sozusagen.

Dominik

Genau, aber das machst du, das ist dann eine Dependency-Injection.

Habe ich das jetzt richtig?

Jochen

Ja, ja, ja, genau, genau.

Jochen

Du würdest die Dependencies in umdrehen.

Jochen

Du würdest halt sagen nicht, der Kern meiner Software basiert halt oder hängt halt ab von anderen Sachen, sondern du würde sagen, man dreht das halt um und sagst, die anderen Sachen hängen halt von meiner Software ab.

Jochen

Und als Mittel, um das zu erreichen, könnte man Dependency Injection zum Beispiel verwenden.

Jochen

Aber das muss man ja auch nicht automatisch, also Dependency Injection oder Dependency Injection Frameworks, da würde, wird das ja quasi so ein bisschen automatisiert.

Jochen

Man kann das ja aber auch manuell machen.

Jochen

Also manuell heißt das eigentlich, du machst es so, dass du, äh, du hast halt dann quasi Schnittstellen oder irgendwelche abstrakten Interfaces, von denen du halt, die du halt sagst, okay, das ist halt das, was hier, der wird zum Beispiel so eine in eine Datenbank ein Repository, ja, das muss jetzt, sag gar nicht, was das für eine Datenbank ist, sondern wird halt reingereicht, ja, dass halt bestimmte Methoden hat oder eine bestimmte Schnittstelle.

Dominik

Also quasi Abstract-Base Class mit Methoden zu implementieren, die man dann verwenden muss als Insection und die man dann, wo dann klar ist, okay, das muss jetzt so und so implementiert sein, egal wie du das löstest, mir wurscht, aber Hauptsache du stellst diese Interface für mich bereit, die benutze ich dann einfach und Input, Outputs und Kodefinieren.

Jochen

Und man dependet dann eben auf diese abstrakte Schnittstelle und nicht auf eine konkrete Implementation.

Dominik

Das habe ich tatsächlich auch schon mal gemacht.

Jochen

Ja, dass er schon irgendwie so richtig so fertigt wurde, ja, genau.

Dominik

Kannst du mich jetzt Architekt nennen?

Jochen

Ich glaube, das darf sich jeder.

Jochen

Das ist gar kein Problem, was ich alles schon gesehen habe, welche Leute sich Architekt benannt.

Falls wir ist auch kein geschützter Begriff.

Jochen

Ja, Informatiker glaube ich auch nicht.

Jochen

Ich glaube, du darfst dich nicht Diplominformatiker nennen, aber Informatiker.

Die Titelchen.

Jochen

Ja, ist auch wurscht.

Jochen

Jedenfalls, wenn du halt auf diese Abstraktion dependest und nicht auf irgendwas Konkretes, dann kannst du halt das, die konkrete Implementation dieser Schnittstelle halt austauschen.

Jochen

Wenn du ein Repository hast, das halt irgendwie SQL Alchemy war, kannst du sagen, okay, ich nehme jetzt ein Django-Repository stattdessen.

Jochen

Und dann merkt deine Applikation gar nicht, dass das geändert wurde.

Ja, ja, genau.

Jochen

Der Nachteil ist halt irgendwie Django ORM und so, das ist ja schon nett.

Jochen

Du sparst ja halt viel Arbeit und.

Dominik

Du musst halt dann nochmal selber bauen, die ganzen Methoden, die es da halt gibt, quasi.

Dominik

Und dann halt quasi, du musst einer die abstrakte Cluster bauen, die musst du dann für deine Sache implementieren.

Dominik

Wenn du das mit dem Django OM nutzen willst, dann musst du quasi einen Händler dafür schreiben für deine abstrakte Cluster, die dann den Django ORM benutzt, damit die Methoden, die du dir bereitstellen willst, auch dann darüber gehen.

Jochen

Ja, also sagen wir mal so, du verlierst halt einen Großteil der, das sind der Gründe, warum man jetzt.

Jochen

Convenience.

Jochen

Der Convenience, die verlierst du tatsächlich.

Jochen

Das ist halt so.

Jochen

Dadurch, dass du halt Django austauschbar machst oder FastAPI austauschbar machst, ja, ich habe das, wenn man überlegt habe, zum Spaß könnte man eigentlich noch einen Flask irgendwie Entry Point davor hängen, sozusagen, wenn ich damit fertig sein sollte.

Jochen

Und das wäre praktisch kein Problem, das zu machen.

Jochen

Ich könnte halt Flask gegen Fast API austauschen oder umgekehrt oder Django, das wäre alles kein großes Problem, aber man hat halt auch die ganzen Vorteile dann nicht mehr.

Jochen

Das ist halt der Nachteil.

Jochen

Aber ja, ich wollte es einfach mal ausprobieren, deswegen habe ich da so ein bisschen mit angefangen.

Jochen

Und ja, aber man sollte sich halt, wenn man jetzt ihm diesen Weg geht und sagt, ah, ich nehme einfach ein Framework, dann ist alles schnell.

Dominik

Software-Architekturen nennen und so ein bisschen hochtraben.

Jochen

Ja, da muss es halt nur entsprechend verfangen.

Dominik

Ja, abstrakte Interfaces bauen, damit man so ein bisschen die Dependency Insection auslagern kann und damit man reduziert die Abhängigkeiten seiner eigenen eigenen Codes von anderen Dingen und die einfach austauschen kann.

Dominik

Also dieses Pattern der Dependency Insektion in diesem Fall mit diesem abstrakten Ansatz ist, glaube ich, eine richtig gute Idee, wenn man Skalierungen möchte in irgendwann.

Jochen

Ja, es ist halt auch so vor- und Nachteil.

Jochen

Also es hat halt den Vorteil, dass du dann eben flexible Sachen austauschen kannst und so und dann halt nicht davon abhängst.

Jochen

Also wenn, wenn irgendeiner von deinen Dependency halt sich als nicht so gut erweist und du willst was anderes machen, dann kannst du das halt tun.

Jochen

Auf der anderen Seite ist es halt, wenn du weißt, dass du das nie musst und dass es auch egal ist, ja, dann, also wenn du zum Beispiel eben klassische Crut-Geschichte hast, die relativ einfach ist, dann macht das keinen Sinn, da viel Architektur zu machen, weil das ist sowieso egal, ja.

Jochen

Aber genau, ich mache es jetzt auch nicht, weil es nötig ist, sondern einfach nur, um zu verstehen, wie es ist.

Dominik

Ich habe genug Zeit und mache da so schöne Sachen.

Ja, genau.

Jochen

Genau, das ist ja.

Ich mache das ja sowieso mal

Dominik

als Fahrzeug.

Dominik

Ja, und deswegen.

Jochen

Das ist auch irgendwo ein Selbstzweck.

Jochen

Ja.

Jochen

Vielleicht noch erzählen wollte, weil diesen dem, es tut mir leid, da ich immer so viel Webentwicklung mache, fehlt mir da halt dieser ganze Machine Learning-Teil so ein bisschen.

Jochen

Ich bin da momentan auch nicht so richtig auf dem Laufenden.

Jochen

Weil ich letztens wieder einen Podcast gehört, so, oh krass, was da alles so passiert, da wusste ich ja gar nichts von.

Jochen

Also ich kann auch sein, dass ich jetzt so ein bisschen Unsinn erzähle, weil ich da nicht mehr so richtig drin stecke, aber vielleicht ist er interessant.

Jochen

Also mich hat es auf jeden Fall überrascht.

Jochen

Also einmal gibt es halt jetzt die Bestrebung, also du das kennst du ja wahrscheinlich auch, es gibt so große Modelle, die trainiert werden, auf irgendwie selbst-supervised trainiert werden auf quasi im Internet zum Beispiel.

Jochen

Language-Modelle gibt es da diese GPT, GPT-Screen-State-Bark

Dominik

und sowas.

Jochen

Und die machen ja alles irgendwie so ein bisschen besser, wenn man jetzt irgendwie die verwendet, also und dann sozusagen das eigene Problem darauf feintuned irgendwie.

Jochen

Und das dachte ich auch immer, das ist der Hauptvorteil, den man da hat, wenn man den Kram verwendet, aber tatsächlich können die halt noch eine ganze Menge mehr und das war mir so gar nicht so richtig klar.

Jochen

Zum Beispiel bei GPT-3 ist es halt so, du kannst halt auch so Dinge machen wie Zero-Shot Learning oder Few-Shot-Learning, also gar nicht irgendwie, du feintunes es nicht mit ein paar hundert, tausend, was auch immer, Beispielen, sondern du sagst zum Beispiel GPT-3 einfach so, irgendwie, dein Job ist jetzt Übersetze von Englisch nach Deutsch.

Jochen

Und du tut es das einfach so, ohne dass du ihm irgendwelche Trainingsbeispiele gezeigt hast.

Jochen

Oder du sagst ihm, dein Job ist jetzt Übersetze von Englisch nach Deutsch und gibst ihm halt noch drei, vier Beispiele.

Jochen

Und dann geht das auch schon ganz gut.

Jochen

Und das ist halt schon krass so.

Jochen

Und für viele andere Tasks geht das auch.

Jochen

Deswegen glaube ich, da gibt es dann auch wieder die Frage, ist die Frage, wie man das nennt, dann Instruction-Based Learning oder Zero-Shot-Learning oder.

Dominik

Die KI von Conscious so ungefähr, ja.

Jochen

Ja, das weiß ich nicht, aber.

Jochen

Aber es ist auf jeden Fall beeindruckend, was damit geht.

Jochen

Und es gab dann halt so, tatsächlich, das wusste ich überhaupt nicht, dass es existiert gibt.

Jochen

Es waren Leute, die dann meinen, naja, also es gibt inzwischen so den Job quasi mehr oder weniger von Leuten, die sich halt überlegen, wie sie Anfragen an das Modell formulieren, dass da irgendwas, was sie dann hinterher verwerten können, dabei rauskommt.

Jochen

Weil man muss da auch so ein bisschen aufpassen und rumtricksen und welche Beispiele gibt man dann, um das halt noch ein bisschen zu verbessern.

Jochen

Und da kann man halt, kann man halt solche großen Modelle wohl dazu bewegen, Dinge zu tun, die ganz erschauenig sind.

Dominik

Genau, wie beim Copilot ist das auch so ein bisschen so.

Jochen

Copilot ist auch so, ja.

Dominik

Wenn du gute Beispiele gibst, also gute Methoden und so, gute Namen, gute Argumente, gute Docsprings, lernt er sehr gut draus.

Dominik

Also, wenn man das in einem Projekt mal so konsistent hat, da ist es echt Gold wert.

Jochen

Ja, genau.

Jochen

Und ja, habe ich jetzt auch letztens gehört.

Jochen

Genau, ist die Frage, wie nennt man das jetzt eigentlich?

Jochen

Weil all die Sachen, wie man das früher genannt hat, das trifft es eigentlich nicht.

Jochen

So Pre-Train-Modelle, das klingt irgendwie so ein bisschen, als wäre dann schon alles passiert irgendwie, aber das trifft es ja nicht, weil man muss ja jetzt mit dem Ding noch irgendwie so lange interagieren, bis man das dazu gekriegt hat, dass das macht, was man eigentlich möchte.

Jochen

Also einfach nur, was waren noch die Self-Supervised, ist halt auch nicht so ganz richtig, weil es ist nicht immer Self-Supervised.

Dominik

Wir müssen dazu auch noch eine Machine Learning-Folge machen, glaube ich.

Dominik

Das hört sich sehr

interessant an.

Jochen

Ja, aber da braucht man auch jemanden, der sich damit wirklich auskennt, nicht so der paar Professor wie ich.

Jochen

Und also unklar, es gab jetzt den Vorschlag, glaube ich, von Stanford oder so, wo sie gesagt haben, lass uns die Dinger doch Foundation-Models nennen.

Jochen

Weil das hätte, das macht das ein bisschen klarer, weil wir wissen auch nicht so genau, wie das jetzt, es wird es halt auch, also für Bilder gibt es das noch nicht so richtig, aber es sieht so aus, als ob das jetzt auch in die Richtung läuft, dass man das irgendwann mit Bildern und auch vielleicht mit Videos machen kann.

Jochen

Und dann werden dann auch, da werden auch mal sehr, sehr interessante Sachen gehen.

Jochen

Und vielleicht ist es eben auch nicht nur selbst-supervised, vielleicht kann man auch irgendwie bei ImageNet oder so hat man ja zwar rein supervised, irgendwie sozusagen.

Jochen

Kann man ja auch benutzen.

Jochen

Aber wir haben auf jeden Fall irgendwie so eine Klasse von Modellen, die sind sehr groß und mit denen kann man irgendwie interessante Dinge tun und es ist so ein bisschen unklar, aber das sind irgendwie die Foundation für alle möglichen anderen Dinge, die man damit macht.

Jochen

Also lassen sie doch Foundation-Models sind und sozusagen da irgendwie die ganzen Themen, die halt jetzt halt ranhängen, halt irgendwie mit Abfrühstücken.

Jochen

Und die Idee fand ich eigentlich gar nicht so schlecht.

Jochen

Ich bin mal gespannt, ob sich das durchsetzt.

Jochen

Ja, und genau.

Jochen

Ja, und dann ist es halt so, dass auch der Fortschritt in dem ganzen Deep Learning-Bereich war in letzter Zeit so stark, das konsolidiert sich jetzt auch alles so ein bisschen.

Jochen

Finde ich auch ziemlich cool.

Jochen

Da gibt es halt irgendwie Leute, die auf GitHub irgendwie jetzt die ganzen Sachen polieren.

Jochen

Also das hatte ich früher auch mal so, wenn man sich jetzt anguckt, so diese ganzen Leute, die in diesem Forschungsumfeld hält sind, wenn man sich einen Code anguckt, mh, so mh, ist halt oft theoretisch sehr avanciert und irgendwie Leute machen sich da viele Gedanken und so, sind sehr kreativ und machen irgendwie krasse Mathematik, aber irgendwie jetzt so den Code, den sie schreiben, ist manchmal schon so ein bisschen ruhig.

Also da geht auf jeden Fall noch was.

Also das ist jetzt noch nicht der letzte.

Das ist jetzt lieb ausgedrückt.

Jochen

Ja, ich meine, klar, man kann ja auch nicht in allem gut sein.

Jochen

Das ist halt irgendwie so, man muss sich ja auf irgendwas beschränken.

Jochen

Und aber da ist auf jeden Fall noch nicht so das Ende der Fahnenstange erreicht.

Jochen

Und was ich jetzt interessant fand, ist, dass es halt da Leute gibt, die aus dem Softwareentwicklungsbereich kommen, die sich das angucken und sagen, das ist ja alles, da kann man ja noch was machen und dann was machen.

Jochen

Und das hat jetzt wieder Einfluss auf die Forschung.

Jochen

Zum Beispiel eben aus der Kettelecke kommen da einige.

Jochen

So Competitive Machine Learning oder halt auch aus der Industrie.

Jochen

Also es gibt da zum Beispiel einen Ross Whiteman, der sich diese ganzen Image-Standard-Image-Modelle mal nochmal angeguckt hat und der dann im Wesentlichen herausgefunden hat, so, naja, also das, was ihr sagt, also es gibt der State of the Art sozusagen für den Score auf bestimmten Problemennetz, nehmen wir ImageNet oder so, ja.

Jochen

Der wurde ja ermittelt für bestimmte Modelle vor ein paar Jahren.

Jochen

So inzwischen hat es aber nicht nur Vorteile bei den, äh, Fortschritte bei den Modellen gegeben, also wie ist die Architektur der Modelle oder so, sondern auch bei den, ja, das ist aber, das spielt alles nicht so eine große Rolle, weil man kann eh nur keine kleine Bilder nehmen, weil irgendwie die Datenmengen halt sonst irgendwie schwierig für die Modelle werden.

Jochen

Aber nee, wo sich was getan hat, ist zum Beispiel sowas wie, wie trainiert man die Dinger eigentlich?

Jochen

Also wie sind die Hyperparameter, mit denen man, äh, die man benutzt zum Trainieren?

Jochen

Wie, äh, da gibt es halt auch eine Menge.

Dominik

Es klingt wirklich so, also das ist ja super interessant alles, aber ich glaube, wir sind jetzt in der Episode so oft hin und her gesprungen, dass wir da unbedingt nochmal genauer drüber reden müssen in einer eigenen Episode.

Dominik

Weil das, ähm, ja, also ich finde es sehr spannend und ich glaube, das war halt komplett oft.

Dominik

Ich glaube, die Leute, die vorher interessant fanden, bei CSS waren jetzt bei Machine nicht mehr dabei und andersrum waren die.

Ich bin gespannt.

Dominik

Ja, wir machen auf jeden Fall noch eine Episode, du hast es versprochen.

Dominik

Ihr seht, Jochen ist ja auch sehr beliebt und fand das auch super interessant.

Ich finde das super.

Jochen

Vielleicht nochmal kurz zum Abschluss zu bringen.

Jochen

Also es ist auf jeden Fall so, dass jetzt, dass man sagt, dass der quasi gesagt hat, also wenn man jetzt die ganzen Fortschritte, die es in anderen Bereichen gibt, jetzt nochmal mit den alten Modellen zusammennimmt, dann stimmt die Baseline nicht mehr.

Jochen

Es ist halt nicht so, dass die Modelle von damals schlecht wären.

Jochen

Es ist nur so, dass die Methoden, mit denen wir die trainiert haben damals, sind halt vielleicht nicht so gut gewesen.

Jochen

Wenn wir die heute mit den besseren Methoden trainieren, dann, upsala, für manche Probleme sind die doch wieder State of the Art.

Jochen

Also sehr, sehr coole Sachen und ja, da gibt es viel zu erzählen.

Ja.

Ja, ja.

Dominik

Ja, ich glaube, dann haben wir jetzt quasi, das war das letzte Thema, glaube ich, was auf deiner Liste stand, was du noch ein paar kleine.

Dominik

Ich glaube, wir haben heute genug Kuddelmuddelsalat aufgetischt.

Jochen

Na gut, alles klar.

Jochen

Ja, ich weiß nicht, genau, dann jetzt haben wir das Problem, ne?

Jochen

Aber jetzt bist du dran, jetzt muss ich mich erstmal meinen Pick wieder nachgucken, den du mir versaut hast.

Jochen

Was würdest du denn picken?

Dominik

Ich muss was picken in dieser Folge schon wieder.

Jochen

Ich weiß nicht, obwohl könntest

Dominik

du Ja, ich pick Critical Role.

Dominik

Das ist eine wunderschöne Serie, die auf Prime läuft über D<unk>D.

Dominik

Falls jemand sich für D<unk>D interessiert, es gibt einen Wodcast von Messie Mercer dazu, der Critical Role heißt und der hat eine Kampagne mit seinen SpielerInnen gespielt.

Dominik

Vox Machina und diese Vox Machina ist jetzt auf Prime Erschienen.

Dominik

Es war eigentlich gar nicht geplant als Fernsehserie natürlich, aber irgendwie sagt es, ach, total toll, was wir hier machen.

Dominik

Also das sind alles so Voice Actors und so.

Dominik

Macht total Spaß, eigentlich sollte mal jemand einen Comic draus machen.

Dominik

Dann hat irgendwie gesagt, ach, der hat kein Comic, ja, vielleicht doch.

Dominik

Ja, da brauchen wir doch irgendwie Geld für.

Dominik

Ja, dann lass doch einen Kickstarter machen, meint dann irgendwer.

Dominik

Ach, Kickstarter hat irgendwer einen Kickstarter gemacht, 48 Stunden später irgendwie 11 Millionen Dollar oder so eingenommen.

Dominik

Dann haben die gesagt so, hey yo, wir machen doch so eine Serie.

Dominik

Und dann hat Amazon gesagt, oh, wir kaufen es.

Dominik

Und hat direkt die Staffeln da veröffentlicht und die laufen jetzt tatsächlich auf Prime.

Dominik

Glaube ich, die erste Staffel gerade rum.

Dominik

Und das ist D<unk>D, eine Abenteurergruppe, die es live gab, quasi.

Dominik

Gibt es auf YouTube, kann man die echten Abenteuer nachholen.

Dominik

Also eine Folge ist, glaube ich, so dreieinhalb bis vier Stunden oder sowas.

Dominik

Und die haben, glaube ich, 150 Sessions abgehalten für diese Kampagne.

Dominik

Es ist also ein bisschen verkürzt dargestellt, aber ja.

Dominik

Wo wir eben bei Jagshaving waren.

Dominik

Was man alles verbessern optimiert kann und wie tiefer die Bald ist.

Dominik

Aber egal, nur ein kleines Punkt.

Dominik

Jochen, dein Pick.

Jochen

Ja, ich habe jetzt versucht, den gerade zu finden.

Jochen

Ich habe ihn nicht mehr gefunden.

Jochen

Aber ich kann ihn beschreiben und ich reiche den Link dann in den Shownotes nach.

Jochen

Es gibt Rich, also es gibt ja Typer, das macht auch schon eine Menge Command-Line-Geschichten.

Jochen

Es basiert aber auch auf Klick.

Genau, Typer.

Jochen

Und es gibt auch irgendwie Rich-Click oder ich weiß jetzt eben nicht, wie man es hinschreibt, aber wo man sozusagen Click und Rich irgendwie ganz nett kombiniert hat.

Jochen

Und das sah sehr gut aus.

Jochen

Und das war dann mein Pick.

Dominik

Interessant, cool.

Dominik

Ja, super, dann vielen Dank, dass ihr wieder eingeschaltet habt.

Dominik

Bleibt uns gewogen.

Ich hoffe, ihr habt auf diese Episode nicht ganz so verstört wie uns.

Dominik

Und beim nächsten Mal wieder ein.

Dominik

Und ja, wie gesagt, schreibt uns gerne alles, was euch beschäftigt an hallo.peisenpodcast.de.

Bis zum nächsten Mal und bis dahin.

Bis klar.

Jo.

Jochen

Wir bis immer.

Jochen

Tschüss.

Ciao.