Transcript: Python Entwicklungsumgebung 2020 Edition

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast in der 16., 17. Episode.

Heute geht es um eure Entwicklungsumgebung.

Ja, was machen wir eigentlich? Ich bin der Dominik, bei mir ist wieder Jochen.

Ja, hallo.

Wir sind diesmal wieder in der Raumschiffzentrale.

Genau, da sind wir ja eigentlich nicht so häufig, aber heute irgendwie, glaube ich, zum zweiten Mal.

Ja, zum zweiten Mal, genau.

Ja, sieht auf jeden Fall beeindruckend aus mit so drei Monitoren und vielen blinkenden Lichtern.

Ja, das hat vorblinkt.

Es gibt ja sogar auch einen Bonsai-Baum und einen Kaltus.

Wow.

Was auch immer die in der Zentrale hier machen, aber ja.

Ja.

Ja, Entwicklungsumgebung heute. Wir haben euch leider ein bisschen warten lassen mit der Episode.

Wir sind gerade sehr eingespannt gewesen in erster Zeit.

Ja.

Das tut uns natürlich sehr leid, aber ihr werdet nicht auf uns verzichten müssen.

Wir machen auf jeden Fall weiter und versuchen auch wieder regelmäßige Folgen aufzunehmen.

Ja, ja, ja.

Also seid uns nicht böse und folgt uns.

Und dann ist halt einfach irgendwie alles drauf.

Einmal, was so passiert.

Ja.

Ja.

Wie es immer so ist.

Ja.

Naja, wir lassen uns davon nicht abhalten.

Und sind weiterhin gute Dinge.

Ja, genau.

Also, ja, ich meine, wie kamen wir eigentlich auf das Thema?

Ich glaube, ah, ja, richtig.

Apple hat mal wieder, das kann jetzt vielleicht für Leute so ein bisschen langweilig sein,

die jetzt keine Apple-Hardware verwenden.

Ich erzähle gleich noch was zu was anderes.

Ja.

Apple hat halt Ende des Jahres.

2019 muss man sagen.

Neue Hardware rausgebracht.

Und diesmal ist es tatsächlich auch wieder irgendwie sozusagen Grund zur Freude.

Das war lange Zeit nicht der Fall.

Irgendwie viele Leute behaupten, so 2015 sind die letzten MacBooks rausgekommen, die man gut kaufen konnte.

Und da ist auch was dran.

Ich habe selbst irgendwann das 2016er MacBook Pro, glaube ich mal, gekauft mit Touch Bar.

Und das war es.

Ja.

Und das war ziemlich furchtbar.

Das war tatsächlich, muss ich sagen, so.

Also ich mache, ich verkaufe, ich verwende so MacBooks zum Entwickeln seit 2004 ungefähr, glaube ich.

Also schon eine ganze Weile.

Ja.

Also ich übrigens nicht.

Ich habe immer alle möglichen Maschinen hier stehen.

Ja.

Vorher war ich eher auf Linux.

Aber das Problem mit Linux ist dann halt irgendwie vor allen Dingen, wenn man es also damals auf Laptop-Hardware laufen hat lassen,

dann hat immer irgendwie...

Irgendwas nicht richtig funktioniert.

Das heißt, entweder Video oder Audio ging nicht so ordentlich.

Oder man schließt halt Monitor an und dann passieren seltsame Dinge.

Und irgendwie...

Wie heißt dieses?

ACPI?

ACPI?

Weiß ich nicht genau.

Dieses Einschlaf-Aufwach-Ding.

Ja.

Das hat auch nie so richtig toll funktioniert.

Ja, ja.

Und man muss halt irgendwie dauernd seinen Kernel neu konfigurieren und so.

Und das war irgendwie...

Ja, ich habe einige G-Versuche auch gemacht unter verschiedenen Linux-Distributionen, die jedes Mal mich nicht überzeugt haben,

dass außerhalb von Server-Eingriffen oder sowas einsetzen zu wollen.

Ich werde bei den Leuten im Computer-Club immer so ein bisschen belächelt.

Ich habe tatsächlich ein, zwei Windows-Maschinen hier.

So was.

Ja.

Ich meine, das ist ja auch nur wirklich sehr...

Also, das ist ja...

Wie kommt das denn dazu?

Na ja, gut.

Vielleicht...

Noobs unter sich oder so, ja.

Nee, gut.

Ich kann durchaus verstehen.

So, was ich auch immer höre.

Ich habe auch jetzt in letzter Zeit nochmal Windows auf dem Laptop gehabt.

Und was auch sonst Leute sagen, das ist alles nicht mehr so furchtbar schlimm.

Man kann also mittlerweile auch Windows ganz gut als Entwicklungs-Umbau...

...verwenden.

Da erzähle ich euch auch gleich, wie man das machen kann.

Ja.

Also, ja, Linux ist eigentlich schon toll.

Aber ich dachte mir jetzt, ich mache das den ganzen Tag auf der Arbeit schon,

irgendwie so an Linux-Kisten rumfrickeln.

Da irgendwie hat man dann vielleicht dann doch irgendwann,

wenn man mal ein Laptop auch zu was anderem verwenden will,

außer jetzt entwickeln oder irgendwie...

Multimedia.

Ja.

Oder, ja, so Dinge, die man halt auch machen kann,

ohne jetzt da irgendwie einen Kernel kompilieren zu wollen.

Dann ist das halt doof.

Und dann hat man auch keine Lust mehr,

drauf und dann dachte ich, na gut, da muss es doch eine Alternative geben.

Und, ja, aber das ist ja auch gerade im Klub im Feld sehr, sehr verbreitet,

dass die Leute da halt Macs verwenden.

Mein Hauptgrund für Windows ist tatsächlich die Spielerei.

Ich bin ein leidenschaftlicher...

spiele ich gerne rum mit irgendwelchen Spielen.

Und das geht natürlich auch nicht so wirklich.

Nee, das geht, glaube ich, nur unter Windows.

Oder ich weiß nicht, auch...

Ich kenne viele Leute, die da eher so halt dann Konsolen verwenden.

Ja, ich habe halt...

Ich nutze gerne Steam.

Wenn ich jetzt auch noch wieder...

Schon wieder Schleichwerbung.

Und da gibt es halt auch den Link und so.

Das kann man ganz gut kombinieren mit einem Windows-Rechner.

Und dann läuft der halt einfach auf deinem Fernseher zu Hause in einem Wohnzimmer.

Und dann kannst du da mit Controller mit deinen Kumpels vorsitzen

und irgendwelche Indie-Games zocken.

Okay, ja, das klingt tatsächlich ganz interessant,

weil ich meine jetzt so die...

Eben, also ich meine, man will es ja auch vielleicht mal gemütlich haben,

wenn man jetzt irgendwie was spielt.

Ja, genau, aber keine Sohle, nee.

Dann so einen lüftenden, lauten, blinkenden Kasten

irgendwie im Wohnzimmer stehen haben.

Das will ich jetzt vielleicht auch nicht sehen.

Aber ich möchte natürlich...

Die Modding-Fähigkeiten haben und die Rechner sind meistens immer wieder ein bisschen schneller,

es sei denn, die neueste Generation ist gerade draußen,

als irgendwie so eine Konsole und viel flexibler und so.

Von daher.

Ja.

Das kriege ich alles nicht hin.

Und ich habe auch keine Lust,

den ganzen großen Herstellern immer hinterher zu kaufen.

Aber na ja, das ist ja so eine andere Geschichte.

Wir wollten heute ja über Entwicklungsumgebung...

Genau, genau, genau.

Ja, aber ich bin aber noch gar nicht mit meiner Notebook-Story.

Deine Story ist eine Note-Story.

Ja.

Ich mache aber trotzdem noch einen kleinen Break.

Okay.

Weil eure Fragen an mir kommen, Kommentare und so weiter,

könnt ihr einen Hallo-at-Python-Podcast hier schicken.

Das wollte ich eigentlich auch noch sagen.

Okay.

Ach so.

Schlussgelegt, ja.

Ja, sorry.

Und wir wollten noch so ein bisschen angeben,

weil wir haben jetzt einige Abonnenten.

Vielen Dank dafür, dass ihr alle so fleißig zuhört.

Ich bin überrascht, dass immer wieder...

Also ich meine, das ist ja nicht so wirklich regelmäßig,

was wir machen.

Und lang und langatmig und weiß nicht.

Und trotzdem irgendwie sieht das so aus,

als ob es da irgendwie tatsächlich Leute gibt,

die das interessiert.

Ich war jetzt auf dem letzten PyDDF-Treffen,

da war auch jemand da, der meinte...

Ah, schon im PyDDF.

Ich hatte den PyDDF-Treffen erfahren über den Podcast.

Cool.

Das konnte ich leider nicht.

Aber...

Das hat einen guten Grund.

Ja.

Also, ja.

Genau.

Das war eine erfreuliche Entwicklung.

Ja, aber wir erwarten genau News aus der Szene und so,

bevor wir jetzt in der Szene kommen.

Ach so, okay.

Ja.

Gut.

Ich mache mal so ein Chapter-Markt.

Ja.

Ja.

Ich weiß gar nicht genau,

ob es da irgendwas Besonderes gab.

Ich habe jetzt...

Ich...

Ich...

Ich...

Ich...

Ziemlich unvorbereitet.

Ja, also die Chapter-Markte haben gerade irgendwie überhaupt nicht funktioniert.

Ja, hat nicht so richtig funktioniert.

Ja, ich habe auch immer das Problem,

dass das nicht so richtig klappt.

Also entweder man muss da reinklicken

oder man muss da irgendwie noch was anderes konfigurieren oder so.

Aber bei mir funktioniert das auch nicht so richtig.

Ja, ja.

Ja, egal.

Naja, muss man halt hinterher noch machen.

Nacharbeiten.

Genau.

Also, nee, so wirklich interessante, tolle Neuigkeiten.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Falsch.

Wir sind doch jetzt im neuen Jahr.

Wir haben doch jetzt die erste Folge dieses Jahres.

Ja, ja, ja.

Ja, Python 2 ist weg.

Stimmt.

Und das ist ja eigentlich auch eine sehr gute Geschichte.

Es gibt jetzt nochmal ein Release im April.

Aber das ist halt nur sozusagen für die Änderungen,

die bis Ende des Jahres irgendwie dazugekommen sind,

um das halt noch releasen zu können.

Und das war es halt dann, ne?

Ja, da können die ganzen Leute endlich...

Support ist jetzt schon weg.

Ja, man könnte jetzt anfangen,

seine Python 2 auf 3-Aug-Umstellung mal.

Ja, ja, ja.

Gänge zu machen.

Jetzt haben so ein paar andere einen,

die das tatsächlich gemacht haben,

die dann nochmal umgestiegen sind.

Jetzt zeitig.

Ja.

Naja, wie auch immer.

Ja.

Also, das war übrigens auch auf dem letzten

Python-DDRF-Treffen ganz interessant.

Da gab es von Marc-André halt einen Vortrag dazu,

wann denn jetzt nur wirklich richtig Schluss ist.

Weil ich meine, man kann jetzt,

selbst wenn man sagt,

okay, Support ist mir eigentlich egal.

Ich mache einfach weiter.

Ja, ich meine, was soll schon passieren?

Alles egal.

Ich bin da gar nicht darauf angewiesen,

dass ich da jetzt offiziellen Support von irgendjemandem habe.

Dann betreibe ich meine Systeme einfach weiter.

Aber es gibt da so Dinge,

die dann irgendwann tatsächlich kaputt gehen werden.

Unter anderem halt deswegen,

weil Setups, Tools selbst nicht mehr

unter Python 2 funktionieren werden.

Ab jetzt einer relativ aktuellen Version irgendwann.

0.45, 0.45, irgendwas.

Oder eins drunter, keine Ahnung.

Und das bedeutet halt,

wenn, sobald das nicht mehr richtig geht,

wird halt auch PyPI nicht mehr richtig gehen.

Und sobald das nicht mehr geht,

ist halt irgendwie vorbei,

weil dann kannst du halt nichts mehr installieren.

Nativer Python-Interpreter.

Ja.

Naja.

Also, man sollte sich tatsächlich...

Selbstgeschriebene Skripte könnten ja noch gehen.

Nee, du kannst tatsächlich nichts mehr installieren.

Nee, du musst nicht installieren.

Du hast ja selber geschrieben.

Ja gut.

Ja, aber...

Also, die keine Abhängigkeiten sonst irgendwas haben,

das ist schwierig.

Also...

Ja gut, die Standardbibliothek ist groß.

Vielleicht geht da ein bisschen was an.

Ja, wir sind durch.

Python 2 ist endlich weg.

Ja.

Könnt ihr endlich für immer weglassen.

Alles neue, alles Python 3.

Guckt euch gar nicht mehr an,

was in Python 2 irgendwann mal Legacy war.

Es ist egal.

Ja.

Ja.

Ansonsten, genau.

Ich weiß nicht, wie lange jetzt 381 raus ist.

Auch schon eine ganze Zeit.

Also die erste meiner Version von 38.

Also 38 verwende ich jetzt auch...

Äh...

Tatsächlich schon bei den meisten Sachen, die ich so mache.

Und das funktioniert gut.

Die meisten...

Also hat man ja immer noch so Probleme,

dass es gewisse Bibliotheken gibt,

die so ein bisschen hinterherhinken.

Und die ganz bösen Bug bei 38 und Jupiter und Tornado.

Ich habe noch gar nicht geguckt,

ob bei 38 ein Track ist.

Ich habe das nämlich manuell gepflegt.

Man konnte nämlich die Jupiter-Notebooks

dann einfach nicht mehr laufen lassen.

Zumindest jetzt in Windows hat das nicht funktioniert.

Das war immer sehr anstrengend.

Aber ja, wenn man in Tornado eine Teile eingefügt hat,

das war ein Bug bei Async oder irgendwas,

dann ging es wieder.

Also das konnte man manuell beheben.

Aber ja.

Ja.

Genau.

Also wenn das jetzt tut...

Also ich habe jetzt tatsächlich sonst nichts gemerkt,

außer dass halt ein paar Pakete noch ein bisschen gebraucht haben.

OpenCV und so sind immer so Kandidaten,

die dauern ein bisschen.

Aber inzwischen funktioniert alles und super.

Also kann man tatsächlich inzwischen gut benutzen.

Ähm...

Ja.

Haben wir noch irgendwelche Dinge, die so...

Gehst du zur Europython?

Ja.

Gute Frage.

Ich denke darüber nach.

Ähm...

Ich überlege auch...

Also die Frage wäre halt entweder nach Porto,

halt zur Django-Con Europa fahren,

oder halt Europython.

Dublin.

Ja.

Auch interessant.

Aber auf jeden Fall irgendwie auf eine von den beiden.

Ja.

Vielleicht gehen wir ja zusammen hin.

Auf eine von beiden.

Also dann...

Ja, das würde natürlich auf die Europython besser passen.

Und dann...

Ja.

Okay.

Ach, ich muss aber irgendwann auf die Django-Con.

Naja.

Ja.

Das werde ich auch nochmal irgendwie schaffen.

Aber ja, das ist auf jeden Fall...

Es gibt eine Menge interessante Konferenzen.

Ja.

Dieses Jahr.

Ich glaube, ich werde auch auf der PyData oder PyCon.de auch sein.

Dieses Jahr, denke ich, wieder.

Ja.

Ja, das ist eine gute Idee.

PyData oder PyCon.de.

Die sind ja zusammen.

Ja.

Ach so.

Ich dachte, die sind parallel.

Ja, halt in einem Gebäude.

Ja, okay.

Das heißt, man kann jetzt herlaufen.

Nee, das sind keine getrennten.

Das ist eine Konferenz.

Ach so.

Ich dachte tatsächlich, das wären zwei.

Nee, nee.

Wieder aufgeklärt.

Und dann...

Keine Ahnung.

Na gut.

Ähm...

Ja.

Ja.

Äh...

Das ist...

Äh...

Äh...

Wir sehen uns noch am Python Barcamp.

Oh ja, das ist jetzt demnächst in Köln, ne?

Ja.

Ähm...

Genau.

Das ist eine tolle Veranstaltung.

Ist jetzt halt schon wieder so ein bisschen ausgebucht.

Ja.

Ich glaube auch eine in Leipzig, glaube ich.

Die soll ganz gut gewesen sein.

Oder war die schon eigentlich?

Oder ist die noch in Planung?

Ich weiß nicht.

Aber das war das erste Mal, dass da was ist.

Ich weiß auch nicht, ob da noch Plätze frei sind.

Aber falls ihr da in der Ecke immer seid, dann schaut doch nochmal danach.

Ja.

Äh...

Genau.

Aber ich glaube, auch bei dem Python Barcamp...

Python Camp in Köln ist es so, dass halt immer noch so ein bisschen Kontingente freigegeben

werden.

Glaubt das.

Zweite Kontingente ist schon freigegeben.

Ich glaube, es ist durch.

Ich könnte mal kurz gucken, ob die noch Plätze frei sind für alle Menschen, die das jetzt

noch hören.

Ja.

Wir nehmen jetzt übrigens gerade auf am 3. Februar ist heute, glaube ich, ne?

Äh...

Ja.

Ja, okay.

Ja, dann.

Ja, das ist natürlich ein bisschen doof dann, ne?

Wenn man eine Veranstaltung guckt.

Kann ich mir nicht sagen.

Aber das in Leipzig ist übrigens am 19. Januar gewesen.

Ja, gut.

Ah, okay.

Gerade eine Woche her.

Ja, gut.

Ja, ich glaube, es sind keine Plätze.

Ich weiß nicht mehr, wie ich das sehe, aber...

Naja.

Das nächste Mal.

Genau, muss mal schnell sein.

Ja.

Aber jetzt vielleicht doch dann unser Thema.

Ja, Thema.

Entwicklungsumgebung, genau.

Und ich würde natürlich irgendwie...

Du hast deinen Fall mitgegeben.

...von Multinavs-Tricking kommen und ganz unten anfangen bei Hardware.

Ja, okay.

Ja, und zwar...

Genau.

Ja, ich bin irgendwann mal auf dem Mac umgestiegen.

Kann ich ja nicht so ganz verstehen.

Ja, ich meine, ich habe halt dieses Problem mit dem Spielen nicht so.

Ich mag das einfach nicht.

Ich habe das irgendwann mal wieder versucht.

Ich habe als Kind und so fand ich das auch toll, aber dann irgendwie...

Weiß nicht, irgendwie...

Habt ihr das gehört?

Als Kind?

Ja.

Mit dem Zaunfeier.

Verstehe.

Ja.

Das war jetzt auch nicht so schlimm, dass...

Ein Erwachsenen-Stammtisch, wo die Leute alle hinkommen.

Ah, okay.

Ja, das...

Ja.

Nee, habe ich nicht.

Und es gibt ja andere, die dann auch sowas sagen wie, ich bin als Kind irgendwie den

Topf mit den Spielen gefallen, deswegen darf ich das heute nicht mehr.

Das ist bei mir gar nicht so.

Also, ich hatte...

Das war schon...

Das habe ich gerne gemacht, aber so extrem war das alles nicht.

Und ich habe irgendwie die Lust daran verloren.

Und später das aber auch nochmal versucht zu reaktivieren und habe mich dann auch so

mit Freunden abends vor eine Konsole gesetzt und bin eingeschlafen immer.

Das hat nicht funktioniert.

Echt nicht.

Ich weiß nicht, warum.

Du hast das falsche Spiel gespielt.

Ja, oder ich war einfach zu schlecht.

Ich habe keine Ahnung.

Auf jeden Fall...

Das soll es auf jeden Fall gewesen sein.

Ja, das hat einfach überhaupt nicht mehr funktioniert und jetzt habe ich es inzwischen aufgegeben

und denke mir, naja, egal.

Aber man kann ja auch...

Du hast das Spiel nicht gewonnen.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Ja.

Und genau, insofern ist das für mich mit Mac nicht so ein Problem.

Und was halt an den Dingern sehr nett ist, ist halt, ja, die funktionieren halt eigentlich

einfach so und sie haben halt eine schöne Shell, so wie in den Nukesystemen halt auch.

Und...

Welche Shells haben wir?

Wir machen jetzt mal noch ein bisschen...

Kann man beliebige Shells verwenden, aber das, was halt sozusagen damals standardweise

ist eine uralte Bash und dann

war es über 10 Jahre lang

weiterhin eine uralte Version

einer Bash. Also

muss man auch damals schon irgendwie was anderes

installieren, wenn man eine ordentliche Stelle haben wollte.

Für alle Leute von euch, die Windows nutzen, bitte

nutzen nicht CMD, sondern nutzt die

PowerShell. Die ist übrigens auch mittlerweile für

Linux gibt. Das heißt, auch unter Linux kann man sich eine PowerShell

installieren und die weiter nutzen.

Ich weiß nicht, wer das macht, aber

es geht wohl gut.

Also genau,

PowerShell habe ich auch schon gehört,

gute Sachen darüber gehört,

aber habe ich jetzt auch noch nie wirklich Bedarf gesehen,

das auszuprobieren. Aber ja,

muss ich mir vielleicht mal angucken. Also es ist

Bash war die Standard-Shell auf dem Mac

lange Zeit und

ist dann aber ersetzt

worden durch die ZSH.

Jetzt eigentlich gar nicht so lange her.

Und das ist natürlich

eigentlich auch schon eine tolle Shell. Und ich habe eigentlich sonst

auch schon ganz lange, wenn ich die ZSH

eigentlich immer auch als neue Standard war.

Das ist auch deine Lieblingsshell?

Ja, doch, kann man sagen.

Eigentlich stimmt das schon.

Das ist schon meine Lieblingsshell, aber

momentan verwende ich nochmal eine andere.

Weil ich dachte ja,

wo macOS

auf ZSH als Standard-Shell

gewechselt ist,

dann ist das

irgendwie nicht mehr hip genug

für mich. Da muss ich mal was Neues gucken.

Und tatsächlich,

ich habe dann jetzt einfach mal mit dem

neuen Rechner

halt dann auch eine neue Shell genommen.

Und zwar Fisch-Shell.

Sollte ich nämlich gerade auch sagen.

Es ist auch, glaube ich, von einem

Apple-Mitarbeiter geschrieben worden.

Auch tatsächlich so mit Mac im Hintergrund.

Ich mag Fisch. Also manchmal Sachen funktionieren auf einmal nicht.

Warum nicht? Ach so, oben ist es die Shell.

Aber sonst ist Fisch echt cool.

Ja, ich muss auch sagen, es gefällt mir tatsächlich

ziemlich gut. Es funktioniert noch nicht alles so rund

wie bei der ZSH früher mal.

Aber es sieht schon

alles sehr, sehr gut aus.

Du benutzt Fisch tatsächlich dann auch für den Mac.

Also ich benutze tatsächlich Fisch nur

für meine Server und für

mein WSL, also Windows-System.

Und sonst eher

nicht. Also auf dem Windows funktioniert das noch nicht

leider nicht so richtig. Also auf nativen Windows.

Da benutze ich dann tatsächlich

meistens PowerShell.

Okay.

Ja, also eigentlich nur PowerShell sonst.

Ja.

Das geht übrigens auch unter Windows. Ihr könnt euch unter Windows

superschöne Terminal-Programme benutzen.

Es gibt sogar eins, was neu entwickelt wird, gerade von

Microsoft, das gar nicht so schlecht aussieht.

Ich finde, das ist noch ein bisschen früher entwickelt.

Da fehlen mir noch so ein paar Features. Ich mag immer so

Guarke-Style-Terminals, diese von oben.

Einscrollen oder so. Und da gibt es dann

zum Beispiel Commander oder so, den ihr

euch besorgen könnt. Ja, das ist so das

eine, dass man so ein Terminal braucht. Auf jeden Fall.

In der Entwicklungsumgebung ist es absolut Pflicht. Also das solltet

ihr ja schon wissen. Kann natürlich

auch schön im Jupyter bleiben, aber

normalerweise Terminal, ohne Terminal

kommt man nicht viel weit.

Ja, ich sehe

auch Leute, dass die dann halt einfach die eingebaute Shell

von ihrer IGE verwenden oder so. Aber das ist schon

so ein bisschen, also geht natürlich,

aber... Auch das ist ja meistens

dann eine System-Shell irgendwie,

die eingebaut ist.

Ja, also

genau. Hast du ein Lieblings-Terminal-Programm?

Ja, auf dem Mac auf jeden Fall.

Da ist es

iTerm2.

Und

ja, das eingebaute

Terminal von macOS X ist nicht mehr so

schlecht, oder jetzt muss ich mich dran gewöhnen, macOS

ist nicht so schlecht,

oder war früher, ist besser geworden,

sagen wir mal so. Aber

tatsächlich ist es nicht so

wirklich vergleichbar mit dem, was iTerm2 alles kann.

Die kann halt auch so tolle Sachen wie

Shell-Integration

zu ZSH oder auch

Fischshell oder auch Bash ginge.

Und dann kann die

eben solche Dinge UI-mäßig

abbilden, wie man sieht die History

oder kann halt sagen, okay,

kopiere mir mal

ein File irgendwie

irgendwo hin oder so.

Das geht halt, also man kann halt

Rechtsklick machen, man macht LS

und sieht halt,

ein verzweifeltes Liste, man sagt halt irgendwie

Rechtsklick da drauf, kopieren wir das mal irgendwo hin oder so.

Wenn sowas geht. Oder

eben

ja, diverse,

man sieht halt, welche Maschinen, auf welchen Maschinen

man ist und so. Also

das unterstützt

einen auf so einem UI-Level halt

bei vielen Dingen, die jetzt

Bundesstelle selbst ein bisschen blöd wäre.

Oder man kann halt Bilder direkt drin anzeigen und so.

Also

das Ding ist schon sehr nett. Und es hat auch eine sehr

schöne TMAX-Integration.

Und das kommen wir vielleicht auch noch

später drauf. Aber genau, ich wollte

eigentlich, bevor wir jetzt nochmal so da in die

was verwendet man eigentlich für Programme

Richtung gehen, nochmal kurz auf die Hardware

eingehen. Kurz bevor du das machst, müssen wir das

Konsolenthema kurz abschließen.

Also vielleicht für Windows nochmal. Also Commander

kann ich tatsächlich sehr empfehlen. Ich finde es auch nicht ganz ideal.

Und da sind noch so ein paar hakelige Sachen drin.

Vor allem mit Schriftsätzen kann er nicht immer alle Zeichen darstellen,

wie er gerne hätte. Also bei Fischstell hat er da ein, zwei

hakelige Sachen. Aber ich finde es

immer noch die beste Variante

für Windows für mich. Dann gibt es noch

HyperJS. Das war immer ganz lustig.

Aber ich fand es ein bisschen langsam

und es hat ein bisschen rumgebackt. Aber es hat so

tolle grafische Effekte.

Ich weiß nicht, ob du sowas kennst. Man kann das alles in bunt machen und dann

redet irgendwie ein Pokémon mit dir,

wenn du tippst oder so.

Ich weiß es ja nicht.

Ich benutze es nicht.

Und ansonsten, das Neue von Windows ist relativ

gut, das Windows-Terminal. Aber wie gesagt, das ist noch

Entwicklung. Das ist, glaube ich, erst ein Jahr,

anderthalb Jahre jetzt

überhaupt da. Und mal gucken,

Ende des Jahres wollte ich auf jeden Fall ihm nochmal eine Chance

geben.

Spätestens dann, wenn es einen Guake-Modus hat, dann

switche ich.

Ja, ich bin mal

gespannt, wie sich das unter

Windows so entwickelt. Also offensichtlich

ist es ja irgendwie so, dass

man bei Microsoft irgendwie verstanden hat,

dass es

da eine interessante Zielgruppe gibt,

beziehungsweise unter Umständen so

gewisse Akzeptanzprobleme.

Ich weiß nicht, ob ich das hier schon mal erzählt habe, aber

gab es auch einen Podcast

mit dem, ich glaube,

Produktmanagement,

und Cheffe oder so,

ich weiß nicht mehr genau, von

VS Code.

Der hatte,

genau, der war als Interviewgast im

Talk Python to me Podcast.

Ah, das habe ich auch gehört.

Und erzählte da halt irgendwie so,

ja, also wenn man auf Konferenzen geht,

also wenn man jetzt

die nackten Zahlen anguckt,

wie viele Leute, wie viel Prozent der Entwickler

verwenden eigentlich Windows, dann verwenden das ganz viele,

sonst über 90 Prozent oder so.

Wahnsinnig viele. Wenn man jetzt aber auf Konferenzen

geht oder auf irgendwie

Treffen von irgendwelchen User Groups oder solchen

Dingen, dann sieht man da praktisch

keine Windows-Rechner. Da siehst du halt relativ viel Mac,

relativ, also nur noch eine relativ große

Gruppe Linux irgendwie,

mit ihren Lenovo

Thinkpads. Und

das war's. Windows sieht man fast nie.

Oder halt, ist deutlich in der

Minderheit. Und das ist ja irgendwie

so aus einer eben Produktmanagement-

Perspektive unter Umständen sehr problematisch.

Wenn ich denke so, okay, also

hm, ja,

warum ist das denn so?

Und bleiben diese

90 Prozent irgendwie noch bei uns,

wenn irgendwie alle die, die sie dann

eventuell um Hilfe fragen werden oder so, dann halt

den Zellenwechsel mal in ein System?

Das könnte ja ein strategisches Problem

geben. Ja, genau, deswegen

geben die, glaube ich, gerade Gas.

Das ist ihnen auf jeden Fall aufgefallen und das ist einer der Gründe, warum es

wie es Code überhaupt gibt. Ja, und das Neue, also

WSL2, also Windows-Tablet für Linux 2, das ist ja

ein nativer Linux-Kernel jetzt

im Windows mit drin. Das ist schon echt krass,

was sich da so getan hat im Laufe der letzten Jahre.

Also auch seitdem finde ich Windows erst ganz gut.

Also vorher fand ich es auch immer scheiße, also muss ich auch

gestehen. Aber seit 10, das

machen wir nicht. Ja, da passieren wohl auch Dinge, ja, oder

dass sie jetzt irgendwie

GitHub gekauft haben oder so. Das hat wahrscheinlich auch viel damit

zu tun. Also

Microsoft bewegt sich da in eine interessante Richtung.

War das ein geheimer Aktientipp?

Naja, ich weiß

nicht, ob das jetzt... Wir machen heute eine

Gleichwerbung, habt ihr schon gemerkt? Alle relevanten Dinge am Aktienkurs

sind da schon passiert. Ja, wir müssen eigentlich mal

gesponsert werden. Also falls jemand von Microsoft oder

von Apple oder von

einer anderen

Firmen, die wir schon genannt haben, zuhört, also wir

nehmen eure Spenden natürlich gerne an.

Also dann reden wir nochmal... Und eben auch gerne

halsbrecherische...

Du wolltest über Hardware reden, Entschuldigung,

wir haben es jetzt so viel...

Ja, keine

Aktientipps von Programmierern ernst nehmen, bitte.

Ja, genau.

Ich wollte eigentlich kurz auf die Hardware eingehen,

weil, ja, also ich meine,

genau, was ist eigentlich an

Mac-Hardware jetzt aus Entwicklerperspektive?

Also, interessant, und da ist das Schöne eigentlich,

dass man

ja, halt ein System hat, das auf der einen Seite

so eine gewisse Convenience bietet,

dass man halt nicht irgendwie selber

Kernel kompilieren muss und so, und halt auch die ganze

Peripherie und das mit dem Einschlafen und Aufwachen und so,

das klappt eigentlich immer.

Und zwar auch recht zuverlässig, sodass man

eigentlich den Rechner praktisch nie ausschalten muss, sondern

man klappt ihn halt auf, er ist an, man klappt ihn zu, er ist

in einem Modus, wo er

praktisch keinen Strom mehr verbraucht.

Und

ja, trotzdem hat man halt eine

ordentliche Unix-Shell

und ein ordentliches Unix-System darunter, das so

ein bisschen BSD-mäßig ist.

Ja, und das ist halt eine

sehr, sehr nette Kombination,

weil man halt auf der einen Seite eine ordentliche UI

hat und auf der anderen Seite irgendwie aber auch

irgendwie mit Shells Dinge tun

kann, so wie man das halt so von Linux

gewohnt ist. Also das war,

ich bin gewechselt irgendwie, glaube ich, 2004 mit dem

Power...

Das Ding hieß irgendwie PowerMac

G4 oder nicht, weiß es nicht genau, oder

PowerBook G4, PowerBook G4 hieß es, glaube ich.

Und das hat wirklich sehr, sehr viel Spaß

gemacht. Also auch gegenüber, ich hatte ja vorher

schon eine Menge Linux-Laptops gehabt

und so, und die waren immer so,

man klappt sie auf und dann

irgendwie, man hat so das Gefühl, ich meine, gefühlt

der halbe

Monitör biegt sich so durch.

Das ist halt nicht irgendwie so ein

Bildschirm, sondern das ist mehr so wie so ein Blatt

im Wind. 2004.

Ja, das biegt sich so durch, das

Plastik quietscht komisch, man hat so Angst,

dass da so Teile rausfallen, dann guckt

man so da drauf und dann sind da halt irgendwie

50 komische bunte Sticker drauf, die

alle extrem hässlich sind. Da hatte ich noch einen dicken

Röhrenmonitor. Ja, irgendwie die Unterseite

von so einem Laptop sieht aus wie so eine Mondkrater

Landschaft. Ja, ich keine Ahnung, warum?

Warum ist das so? Ich meine, das ist einfach nur

äh, ja und

es ist halt so wie die Unterseite

von so einem Bartalker, ja, so

wo dann offenbar niemand damit rechnet,

dass man jemals runterguckt, aber bei einem Laptop

das dreht man schon mal um und dann ist halt

äh, und

allein so die Netzteile.

Ich mag Mac lieber, weil

wenn man den Laptop umdreht

und drunter guckt, sieht es aus

wie ein Barthocker.

Nein, nein, die

Plastiknotebooks vorher sahen so aus.

Wenn du

ein MacBook umdrehst, sieht das

relativ sauer aus.

Das ist ein ästhetisches Komponente.

Ja, aber es ist auch, das macht

irgendwas. Also wenn man halt die ganze,

wenn man so ein Ding hat, das halt so,

ich weiß nicht, das ist so wie so gute Küchenmesser

oder so, wenn man das halt so

äh, hat irgendwie eine andere Art

damit umzugehen, wenn man das, äh,

wenn das halbwegs stimmt oder wenn man die ganze Zeit

stumpfe Messer hat oder, weiß ich nicht, äh,

irgendwie scharfkantige Laptops, die

komische Geräusche von sich geben, wenn man sie aufhört zu klappen

und nicht irgendwie so richtig funktionieren.

Das ist, äh, das ist halt schon mal was anderes.

Also war für mich auf jeden Fall so ein Ding,

danach habe ich nie wieder, äh, irgendwie

auch nur überlegt, das irgendwie zu wechseln.

Das ist aber auch so ein Premium-Anspruch, Jörg.

Ja, das mag sein. Das ist, äh,

aber,

ich meine, wenn man den ganzen,

Tag davor sitzt, dann ist es halt, äh,

wenn man sich sozusagen überlegt, wie viel mehr, äh,

muss ich jetzt ausgeben

pro Minute oder pro Stunde,

dann ist das alles egal im Grunde.

Dann will man eigentlich, dass das am besten funktioniert.

Macht natürlich nur Sinn,

wenn man das jetzt, äh, wenn man da halt wirklich viel Zeit

mit verbringt. Ja, wenn man das am Wochenende eine halbe Stunde

mal aufklappt, dann ist es ja auch egal, dann kannst du ruhig quietschen.

Aber, ähm,

ja, also für jemanden, der professionell entwickelt,

dann, äh, für den sollte

eigentlich, wenn er sich das überlegt,

oder ich meine, gut, vielleicht hätte ich,

vielleicht habe ich mir das auch,

schön rationalisiert, aber ich denke...

Dann hast du dir so schön deine Fanbase aufgebaut, Jörg.

Alles versaut.

Äh, dann, äh,

sollte man, sollte man eigentlich gucken,

was, was ist das, was man, äh, was am besten

funktioniert. Und, ähm,

ja, weil es lohnt sich dann eigentlich

immer. Ähm, und, äh,

genau, umso, umso härter hat es mich getroffen,

dass Apple seit, äh, 2015

eigentlich keine ordentliche, äh,

Laptop-Hardware mehr hergestellt hat.

Ja, das fand ich, das war schon,

das war schon wieder, also Touch Bar war ein echtes,

ein Schiefschlag. Also, das war,

vor allen Dingen, weil ich halt, äh...

Die F-Tasten sind weg, es gibt eine Touch Bar.

Also, F-Tasten, das ist mir eigentlich alles, das ist mir alles

egal. Aber die Escape-Taste,

das war für mich, das war für mich

ein Riesenproblem, weil ich bin ja...

Meines gelb, mit einer Ente drauf.

Ja, tatsächlich.

Warum eine Ente?

Okay.

Hm.

Geht das jetzt auch gar nicht als Ente erkannt, ehrlich gesagt. Aber, ähm,

ja, Escape-Taste,

wie alle User, sehr wichtig, weil, äh,

äh, man, man,

man kann viele Dinge nicht, also,

das ist, das schaltet um zwischen Kommandomodus

und, und Editiermodus.

Und so ein, so ein Touch, äh,

Taste ist halt nicht das gleiche, weil die gibt einem

kein Feedback darüber, ob man die jetzt gedrückt hat oder nicht.

Das heißt, man haut da drauf,

man weiß nicht so genau, hat man jetzt getroffen oder nicht, hat das jetzt

einen Druck ausgelöst, oder hat das jetzt

irgendwie doppelt Druck ausgelöst, und man ist wieder im gleichen Modus

wie vorher. Also, es funktioniert überhaupt

gar nicht. Also, es geht einfach nicht.

Und, ähm, das heißt, ja,

also, die einzelne Alternative ist

halt dann, die Escape-Taste umzubelegen.

Ich hab die dann halt auf, ähm, auf

Caps Lock gelegt. Aber

das hat mir halt so meine sonstige,

äh, äh,

Benutzungserfahrung halt kaputt gemacht, weil,

äh, ich hab ja teilweise, sitz ich ja auch

an einem stationären Rechner

mit einer externen Tastatur.

Und auch da war ich, ist eigentlich total toll, dass man da die gleichen

Tastaturen verwenden kann, wie auf dem Laptop,

auf dem Desktop. Man hat immer das, die gleiche Umgebung,

man hat immer ein Track-Tap-Erterleben, und das ist überall

gleich. Voll gut.

Nur jetzt halt leider nicht mehr, weil jetzt hast du halt

auf dem einen irgendwie die Escape-Taste auf Caps Lock

und auf dem anderen die Escape-Taste auf der Escape-Taste.

Super scheiße. Und, äh,

ja, das, also,

Wie kriegst du denn sowas aus? Ja, das war,

Hat irgendein Designer das cool und

fancy? Ich weiß nicht, das, äh, nutzt der überhaupt

so eine komische Taste? Ja, ja, ja, wahrscheinlich.

Aber das, das, äh, das war... Keiner der Menschen,

die Multimedia machen? Ja.

Äh, das, das, äh,

Das war schon schlimm. Da hatte ich schon überlegt, okay,

wenn das so bleibt, da muss ich vielleicht doch mal drüber nachdenken,

irgendwie die Plattform zu wechseln, weil

einfach nicht. Und, ähm,

ja, äh, jetzt

2019, Ende 2019 kam halt

ein neues MacBook und es hat wieder eine

Escape-Taste, zum Glück. Ja.

Es war immer noch eine Touchbar, ist mir auch

egal. Ich meine, benutze ich halt nicht. Ich weiß nicht,

ob es dafür irgendwelche sinnvollen Anwendungen gibt, aber, äh,

die Escape-Taste ist wieder da und

damit geht es wieder. Und auch sonst,

ach, das Ding hatte ja auch sowieso so, also,

dieses 2016er MacBook, was war echt so eine,

das war so eine, so eine,

weiß auch nicht, also, das hatte auch

Tastaturprobleme.

Wie du schon mal erwähnt. Ja, du hast auf jeden Fall mal eine

Service-Einheit einlegen müssen, hast du mir erzählt,

Junge. Schrecklich, schrecklich, ja.

Aber du hast den Leserbrief auch geschrieben, seitdem haben die

jetzt wieder geändert, oder? Ja, ich weiß nicht,

ob das...

Ja, äh, genau, die Tastatur hat sich auch geändert

und es sieht auch gut aus, ne. Also, die, ähm,

alte Tastatur war zwar sehr flach und so, aber

hat, äh, irgendwie...

Wird mit den Dingern ja überhaupt nicht warm, ne?

Also, ich muss ja auch dazu sagen, ich schleppe auch immer eine

manuelle Tastatur mit zum Laptop, wenn ich

den irgendwo mit hinnehme und hab die dann immer in der Tasche.

Einfach, weil ich dieses haptische Feedback von

den guten

mechanischen Tastaturen sehr gerne mag.

Ja, kann ich verstehen. Ich hab auch lange

an einem Hackbrett gesessen,

irgendwie diese alten IBM-Tastaturen,

wo so

hinten drauf noch handschriftlich notiert war,

wer die Qualitätskontrolle gemacht hat.

Ja, Cherry-Clicks, ne?

Aber, äh,

aber ich find die eigentlich

auch gar nicht so schlecht. Vor allen Dingen find ich daran halt

gut, dass man da irgendwie

die gleiche, ja, wahrscheinlich

höre ich...

Ich bin mal gespannt, ob auch Vodick das Klappern

rausschildert oder nicht.

Ja, also,

was ich vor allen Dingen

gut finde, ist halt, dass man dann halt

überall die gleiche Tastatur hat

oder überall

die gleiche Bedienungsumgebung, weil

man hat ja auch Mausgesten sozusagen oder Gesten

auf dem Trackpad und die sind halt dann überall

gleich, sowohl

mobil wie auch am Desktop.

Und das ist halt

schon sehr nett. Und ja,

irgendwie das Tastatur kaputt

und

Escape-Taste weg, das war alles schon ziemlich

ätzend. Aber...

Jetzt haben wir 2020.

Jetzt haben wir 2019 einen neuen Mac gekommen und jetzt ist er

wieder approved, darf man kaufen, ist okay.

Funktioniert ganz ordentlich.

Und, ähm, ja, hat auch,

also, ja,

genau, ich meine, ich will

eine MacBook-Werbung hier machen, aber es ist wirklich

macht Spaß. Ja, du bist ein kleiner Fanboy.

Ja.

Und, äh, genau, also das macht gerade auch so ein bisschen

den Anschluss dafür, überhaupt dieses Thema

aufzugreifen, weil, äh,

ich habe jetzt in kurzer Zeit hintereinander

zweimal irgendwie ein MacBook neu einrichten müssen.

Und, ähm,

dachte ich mir so, als ich das zweite Mal

gemacht habe...

Das Kino einrichten ist ja sowieso schon immer kein Spaß

gewesen, ne? Mir macht das Spaß tatsächlich.

Also ich sage mal, wenn man das oft

und viel machen muss. Ach so, wenn man das viel machen muss, ja.

Ja, beim zweiten Mal

dachte ich mir so, okay, ähm,

warum mache ich das eigentlich nochmal?

Und vor allen Dingen, warum muss ich das alles nochmal googeln?

Kann ich mir das nicht einfach irgendwo hinschreiben?

Und haben dieses Problem nicht vielleicht auch andere

Leute und, ähm, kann das für die,

für mich auch hilfreich sein? Und, äh,

vor allen Dingen,

mache ich das eigentlich?

Das, was ich hier tue,

ist das eigentlich irgendwie sinnvoll?

Ich muss gerade einen Schluck was nehmen.

Ja, bitte, bitte. Ja, ich glaube, es ist tatsächlich

einigermaßen sinnvoll, wenn man das aufschreibt.

Da gibt es ja eine ganz tolle Erfindung, zu der hast

du mir auch damals gerade, als ich angefangen habe, meine Windows-Kisten

neu zu machen. Und zwar macht man

Dot-File-Repositories.

Ja, das ist ziemlich cool, weil dann könnt

ihr einfach eure Einstellung, eure Konfiguration

ähm, in einem,

ähm, zum Beispiel GitHub-Kit-Repositorium

ablegen und jedes Mal

auf deiner Maschine einfach klonen und habt dann eure

Einstellung wieder parat.

Ich weiß nicht, wie das bei dir ist. Bei mir

ist das so, ähm, ja, ich habe, da liegen die ganzen

Dot-Files drin und, ähm, da ist dann

halt so ein kleines Python-Skript, gibt's,

ähm, das heißt

irgendwie Install oder so, das ruf ich dann auf und das

verlinkt dann halt die echten

Dot-Files sozusagen in das Repository.

Ja. Äh, sodass ich

halt, äh, quasi, äh,

ja, auch wenn ich ein Repository oder was andere,

äh, und pulle, das sind automatisch die Änderungen halt, äh.

Ja, also so ähnlich habe ich das auch. Ich habe

leider die Skripte alle noch nicht ganz fertig. Ich habe

tatsächlich sogar auch, also auf deinen Rat hin, eins gemacht.

Das ist noch sehr, ähm, Anfänger-lastig

und hat, äh, noch kein Review erfahren

und ist noch ziemlich, äh,

zusammengebaut und, ähm, da sind

auch viele Fehler drin und das ist alles nicht fertig.

Aber falls euch für Windows und solche Sachen

interessiert, da sind so ein paar PowerShell-Skripte drin, die man

irgendwie im Alter nutzen kann und so ein paar

Python-Sachen und, ähm, so ein paar

Basic-Tutorials, wie man so die ganzen Sachen vielleicht

installiert über VSL und, ähm,

äh, ja, auch Pakete, also das ist ja das Nächste, ne?

Also für eine Entwicklungs-Entgegenbruch brauchst du ja einen

vernünftigen Paketmanager und der ist ja unter Windows eigentlich, äh,

das größte Problem, würde ich jetzt mal

behaupten, so, und, ähm, da gibt's halt

Gott sei Dank mittlerweile Chocolaty.

Kann man nicht überstreiten, ob alle Pakete jetzt so super

sicher sind immer, aber, ähm, der hat eigentlich

alles, was man so an Open Source

und auch anderer Software, äh, haben möchte, ähm,

im Reposit. Das heißt, er macht dann wie auf

einem Linux-System einfach Choco-Install-

Software-Name

und hast das Paket dann drauf und das ist, äh, super

praktisch und so will man das ja eigentlich machen.

Und

da kann man auch Skripte verschreiben und deswegen

ist halt quasi nach der Windows-Installation das erste

PowerShell-Starten, äh, die neueste

PowerShell-Version installieren und dann wird der

Paketmanager benutzt für alles Weitere

und das läuft auch dann manuell, also

mit diesem DotFi-Repositorium und zieht dann alle Sachen,

man muss das Repo klonen und, ja, man kann

sich auf seinem neuen Rechner super schnell

wieder einrichten und hat alles so, wie man es gerne möchte und das

ist echt ein Riesenvorteil und spart

Zeit und, ja, vor allem

ganz ein Bein, was man alles bauen will.

Ne, das freut mich, dass das jetzt auf Windows

halt auch so häufig geht. Ja, auf Mac war das auch lange

Zeit.

Das war in der Zeit irgendwie so ein bisschen problematisch und man

wusste halt nicht so, was hier die richtige Antwort ist auf

was für einen Paketmanager soll man denn da

verwenden, irgendwie Fink oder

irgendwie, keine Ahnung,

Portage oder,

äh, ja, aber

mittlerweile hat sich dann doch herauskristallisiert, was da,

äh, was man da...

Ja, Homebrew, genau.

Und, ähm, ja,

äh, da ist eigentlich alles,

was man so relevanten Dingen man

benötigen könnte, mit drin

und, äh, funktioniert super.

Ja.

Ähm,

genau, man muss halt noch so,

bei einem Mac muss man halt noch so ein paar Sachen

anpassen, die nicht richtig gut, äh,

funktionieren.

Also, äh, zum Beispiel,

äh, die, die Keyboard

Repeat Rate und, äh,

wie, also

sozusagen, wenn man eine Taste gedrückt hält, wie, wie stark

die dann wiederholt, wie schnell die wiederholt wird.

Also, für meine, für meinen Geschmack

muss man das deutlich runtersetzen und das geht auch nicht über

eine UI, also man muss dann halt tatsächlich,

äh, das ist halt über eine, aber man kann

mit, mit, äh, mit, äh,

auf der Kommandozeile kann man das halt setzen,

muss sich dann einmal ausloggen und wieder einloggen, aber

das geht und, ähm, dann, äh,

sind halt auch, irgendwie, wenn man

Sachen löscht, dann ist das halt wieder schnell.

Weil, äh, wenn man das nicht ändert,

dann ist das halt unerträglich langsam.

Das ist halt, äh, irgendwie so kann man...

Das kann man bei Windows tatsächlich auch machen. Du kannst halt ein PowerShell

schreiben, indem du die Einstellungen in die

Windows Registry schreibst,

einfach, und dann änderst halt, überschreibst mit deinen Custom

Vorlieben. Ja.

Also auch für so eine Maus-Einstellung, oder es gibt ja ganz viele Einstellungen.

Die man da irgendwie machen möchte.

Privacy aktivieren und sowas.

Genau, ja.

Ja, und man muss halt bei, auch beim Mac halt noch

so ein paar Umgebungsvariablen setzen und, äh,

irgendwie, äh, diverse

Xcode-Command-Line-Duals installieren

und so was machen, damit man auch Sachen kopieren

kann, äh... Spannende Sache.

Und zwar, ähm, was machst du mit

privaten oder geheimen Umgebungsvariablen?

Wie, ähm, händelst du die?

Gibt's sowas bei dir überhaupt, oder?

Ähm...

Was wäre...

Ähm...

Welchen anderen? Also ich wüsste jetzt nicht.

So ein API-Key oder sowas.

Aber gut, das wäre jetzt eher so für Projekte.

Ja, eventuell.

Also es gibt ja auch Sachen, die vielleicht nicht unbedingt

Projekte sind. Also, beispielsweise

benutze ich ganz gerne die, ähm,

Google-API. Ja.

Ähm, einfach, weil man da als, mit dem Dev-Zugang,

weiß ich nicht, YouTube und, äh,

irgendwelche anderen, ne,

Skripte, die Google irgendwie so benutzt, direkt

über seine Konsole verfügbar hat, ähm,

Suche oder so. Und da

braucht man zum Beispiel ein API-Key. Und der ist halt,

dann in meiner normalen Umgebung schon drin und nicht

irgendwie nur pro Projekt, weil ich den halt immer

verfügbar möchte. Ah, okay. Und sozusagen,

und das kannst du natürlich dann nicht gut einchecken.

Also jedenfalls nicht im Klartext.

Nee, genau. Also das heißt, was ich mache,

ich, also ich hab's ja zugelöst, ich hab ne, äh, verschlüsselte,

äh, Sache, die einmal kurz aufgemacht wird,

dann wird diese Secret in ne End geladen

und dann wieder decrypted.

Ist natürlich nicht ganz so toll, weil das halt eigentlich in meinem Speicher hängt.

Aber gut, es ist auch nicht, äh,

sicher kritisch, aber... Ja, wenn das, wenn das lokal,

äh, in deiner Umgebung ist, ist das ja okay.

Es ist halt nur so, dass es die Frage ist,

kriegst du's verteilt auf alle Maschinen und, äh...

Nein, also diese Secrets, die werden nicht

gesynct, sondern die muss ich dann... Ach so, du musst sie von Hand machen.

Genau, ich hab aber ein Folder

gemacht, ähm, was halt Secrets heißt

und das automatisch geladen wird, alles was da drin ist, wird halt

automatisch dann in die Umgebungsvariablen reingeladen.

Ah, okay. Da muss ich dann halt

die Sachen reinpacken. Du musst einfach nur diesen Folder kopieren.

Genau, der Folder wird auch automatisch erzeugt

von meinem Skript und so und dann muss ich da halt

einfach dann die Sachen, die halt in Viren

geladen haben möchte, da reinpacken und dann werden die

Encrypted, Decrypted und, ähm,

ja, beim Start geladen,

quasi, ja.

Ja, ja, das ist tatsächlich noch so

ein Problem eventuell, also hab ich mir noch keine Gedanken.

Also ich würd's wahrscheinlich in das

Install-Skript, in den

.files mit reinpacken

und dann halt irgendwo

eben so ein,

ja, die verschlüsselt irgendwie einen,

äh,

mit einchecken,

ja, und dann

halt beim Install muss man halt eine Passphrase

eingeben oder so, aber ich weiß nicht genau, ob ich

das wirklich, so, ja, muss man, muss man,

da hab ich noch keine Gedanken dazu gemacht, weil den Fall hab ich

tatsächlich nicht, glaub ich.

Noch eine andere Sache, die ich ganz spannend fand, wenn du

verschiedene Maschinen benutzt, beispielsweise

ein Desktop-System und ein Laptop und noch ein

anderer Laptop und da sind leicht unterschiedliche

Konfigurationen notwendig.

Ähm, wie würdest du sowas lösen?

Also ich hab zum Beispiel so gemacht, ich hab dann immer

einen Maschinen-Folder quasi,

dass er liest und da werden halt, ähm,

die Files nur ausgeführt, die

den Namen des Computers tragen, wenn ich drin bin.

Das heißt, ich muss halt da so Custom-Skripte

streibe ich halt rein in den Namen, die Computername,

wird halt dafür benutzt.

Ja, das ist wahrscheinlich keine blöde Idee.

Das Problem hatte ich in gewisser Weise schon,

oder hab ich, äh, weil

ich, äh, unter Umständen etwas

unterschiedliche Umgebungen habe, also nicht,

die Macs sind eigentlich alle gleich, aber

ähm, ich hab ja auch

Server irgendwo rumstehen.

Linux ist halt so ein bisschen anders teilweise

und, äh, das ist alles noch nicht sauber,

da ich muss das auch mal...

Aber Linux geht auch wunderbar mit diesen Dot-Files. Ich hab tatsächlich

für mein Cobra-System beispielsweise auch so ein

schönes kleines Repo dann angelegt mit den Dot-Files.

Die wird dann auch gezogen, installiert und dann

funktionieren zumindest meine Bash-Aliase

oder sowas, wie ich die haben will.

Das geht schon, aber ich hab halt eben in manchen

Skripten dann halt eben Fallunterscheidungen,

ob welche Stelle das jetzt ist und so, ne, und das ist

halt, ähm, ja,

oder welches System das ist, weil halt einfach

bei Linux manche Sachen einfach liegen einfach woanders.

Also da, da muss ich nochmal...

Ja, ja, da muss man tatsächlich Fallunterscheidungen machen, ne, man muss halt schon

ein bisschen gucken, welches System möchte man denn jetzt dann

in seine Config installieren. Aber ja, also das

wäre auch spannend, wenn das insgesamt skripten könnte

einfach nur git clone repo install

und dann macht er alles, egal was man tippt.

Aber gut, ob man so viel Arbeit machen will, aber

macht Spaß, das ist so ein kleines...

Ja, genau.

Äh, ja.

Ja, wir sind ja hier beim Python-Podcast und deswegen

wollen wir jetzt vielleicht noch ein bisschen darüber erzählen, wie das denn

mit der Python-Entwicklungsumgebung dann aussieht, wie man

das dann irgendwie da am besten für die

Projekte vielleicht auch, oder?

Ja, ja, ja. Da gab's, ähm,

einen ganz netten Artikel, äh,

von einem der, äh,

sozusagen Django, äh,

mit Begründungsschrift,

von Jacob Captain Moss,

der hat, äh, glaube ich,

äh,

äh, my Python,

äh, Django Python, äh,

Development Environment

2020 Edition oder so ein Blog,

äh, Post geschrieben.

Ah, die hast du gesehen, ja, okay.

Äh, genau, das, äh,

äh, da,

also ich hab den gelesen und dachte mir so,

oh ja, das ist, vieles kommt mir sehr bekannt vor,

weil ich das auch so mache.

Ähm, und ein paar

Sachen,

kann ich halt noch nicht.

Und dann hab ich halt auch noch so ein paar Sachen geändert,

äh, wo ich dachte so, okay, das war mir jetzt gar nicht so...

Und, ähm, ja, ähm,

tatsächlich, ja,

was braucht man für so eine Python-Umgebung?

Also, was einem halt, äh, äh,

zunächst mal halt, ähm,

äh, sozusagen

als Problem sich darstellt, ist halt,

wie kriegt man jetzt eigentlich, wo kommt man eigentlich an,

äh, wie installiert man Python halt eigentlich, ne?

Und das ist ja schon so ein bisschen

nicht so ganz einfach.

Ich hab lange eben auf Mac, äh,

Homebrew einfach nur so verwendet

und dann halt je nachdem unterschiedlich,

also bei Data-Science-Projekten hast du ja,

äh, also, das ist halt auch wieder

sowas Blödes, äh, du hast ja halt bei

Python, äh, mehrere Arten,

wie man jetzt Pakete installiert, äh,

halt PIP, äh,

bei Web, also ich, das ist im Grunde so,

ich glaub Entwicklungsprojekte installieren

ihren Kram, äh, ähm,

bei der Requirements-Datei bei PIP, oder?

Ja, Requirements-Datei,

äh, kommt vielleicht gleich noch zu, äh, eigentlich nicht,

nicht mehr, bin ich jetzt fast von weg.

Äh, PIP-Log?

Äh, ne. Sondern?

PIP-Projekt-Tommel. Aha, okay.

Ähm,

und, ähm,

die Data-Science-Geschichten, äh,

gehen eigentlich, äh, haben alle Conda-Environments

und dann halt so eine Environment-Jammel.

Ähm.

Hässlich. Ja, und,

äh, eben, da hat man halt auch nochmal

einen anderen Python-Interpreter, also üblicherweise

hatte ich da mal Mini-Conda.

Ähm, aber, äh,

das mach ich jetzt alles nicht mehr so, sondern

inzwischen verwende ich

PyEnv dafür.

Was ist das denn jetzt schon wieder?

Also es gibt ja PyEnv, Env, Env, äh,

Python-Environments. Ja, es gibt PyEnv,

es gibt Python-V-Env, es gibt

Virtual-Env, es gibt Virtual-Env-Wrapper,

äh, es gibt, äh,

ähm,

Conda-Environments, die so ähnlich sind

wie Virtual-Env,

aber doch nicht so ganz.

Äh, ja, also es gibt ein Problem offenbar

an der Stelle. Also ich benutze immer noch irgendwie

ganz klassisch irgendwie mein, äh, ja,

äh, Env mit, äh, Virtual-Env-Wrapper-Power-Shell.

Ja. Äh, hab ich dann irgendwie noch so

ein Ding gefunden, das funktioniert, also auch in der Shell gut,

aber ich bin jetzt gespannt, was du erzählst, wie man

das jetzt heute in der Lage macht. Also das Problem, ja,

also ich, äh, weiß nicht, ob das jetzt, äh,

so ist, wie man das machen sollte. Es ist halt so, wie ich das jetzt

grad mache und ich, äh,

habe jedenfalls subjektiv das Empfinden, dass es

eine Verbesserung gegenüber dem Zustand vorher ist,

aber, äh, ist es auch,

ist es leider relativ kompliziert alles.

Also, äh, ich würde mir natürlich auch wünschen, dass es

irgendwie einfacher geht, aber... Also diese, diese

Virtual-Env-Wrapper-Ansatz, den finde ich total toll.

MK-Virtual-Env-Name,

NS-Virtual-Env für alle Anzeigen,

RM-Virtual-Env für wegmachen und Work-On-Projektname,

fertig. Ich finde das auch nicht so schlecht

und für Web-Entwicklungsgeschichten habe ich das lange so gemacht,

aber, also ein, ein Problem,

das du dabei hast, ist zum Beispiel,

dass immer das System

Interpreter verwendet wird.

Das ist zum Beispiel ein Riesen-Achteil.

Welcher System Interpreter wird verwendet?

Du kannst auch bei, wenn du ein neues Virtual-Environment erzeugst,

sagen, minus, minus Python und sagen, welche

Python, also welchen Pfad der erzeugen soll.

Ja, aber sozusagen,

also, du kannst nicht

einen Spezial-Interpreter für dein

Environment festlegen, sondern das muss irgendwo hin installiert sein

und dann kannst du

das halt sagen, nimm das.

Das geht natürlich, aber

üblicherweise nimmst du dann halt dein

System Python oder halt eines der

System Pythons, die du irgendwie installiert hast.

Das heißt, ich installiere einfach alle System Pythons

parallel und dann muss ich eins davon auswählen?

Ja, aber das ist natürlich alles schrecklich.

Also, und

ja, also ich meine, du kannst halt mit,

also du hast dann zumindest Python 2

schon immer mal drauf, weil

das wird wahrscheinlich für diverse Geschichten

auch im System benutzt. Das heißt, das hast du

auf jeden Fall. Wenn du jetzt nicht aufpasst und einfach nur

im K-Virtual einfach sagst und dann

kein Parameter mitgibst, dann macht er dir ein Python 2

Environment. Das ist halt schon mal, äh.

Also bei Linux jetzt oder bei Mac?

Bei Mac ist es so.

Ja, okay.

Bei Linux wahrscheinlich auch so, weil ganz viele

Distributions-Skripte

oder so,

das ist alles, also egal,

praktisch egal, welche Distribution, das ist alles Python.

Also bei Windows kommt es auch an, welche in deiner Pass-Variante

gesetzt ist.

Ich weiß nicht, ob bei Windows

überhaupt ein Python mitkommt, sozusagen.

Nein.

Du musst es über die Webseite installieren im Worst-Case oder halt

über Toko install Python, aber.

Ja, okay, dann ist man da in gewisser Weise sogar

ein bisschen besser dran, aber in den meisten Python-Distributionen

kommt Python auf jeden Fall immer mit, weil

sozusagen die Distribution

selber Python braucht, um halt

viele Installationsgeschichten zu machen. Das Dumme ist

halt,

das ist alles Python 2. Das heißt, die liefern

alle irgendwie Python 2 aus.

Wir haben ja eben gesagt, das ist tot.

Und das ist ja jetzt eigentlich schon tot.

Aber trotzdem hat man es dann halt drauf und wenn man

nicht aufpasst, weil es halt vielleicht noch der

Default-Nachreder ist, macht es einem halt

so ein uralt Environment auf und das ist

halt schon mal, also ich, das könnte

Leute hören. Und

selbst wenn man das irgendwie hinkriegt, das richtige

Python dann anzugeben, ist es ja auch irgendwie

eben das systemweit installierte Python.

Was ist, wenn ich jetzt mehrere Projekte habe, die jetzt

aber tatsächlich harte Anforderungen haben,

Python-Version oder so?

Das ist halt total blöd. Oder

es geht nicht gut.

In gewisser Weise war das bei

ist das bei Minicon

da besser, weil da kann man halt sagen, okay,

da kann man die Python-Version, die man braucht, auch mit ins

Environment-Yaml reinschreiben.

Und das wird dann halt installiert. Während du das halt

bei einem Virtual-Env

à la

MK-Virtual-Env,

also Virtual-Env-Wrapper, kannst du das nicht. Da kannst du nicht

ins Requirements reinschreiben, welche Python-Version

du gerne hättest. Das geht da nicht. Sondern da kriegst du

halt die, die du am Anfang mal angegeben

hast. Was ist jetzt auch das

wieder etwas, was ich oft dann tatsächlich,

was mir oft passiert ist.

Was ist, wenn jetzt dein System-Python geupdatet wird?

Oder per Homebrew updatest du

deinen Kram oder per Choco

oder wie auch immer.

Packet-Manager deines Vertrauens.

Und der schmeißt jetzt das alte Python runter und installiert

ein neues. Was passiert denn dann mit deinem

Virtual-Env?

Also ich da jetzt benutze,

macht er tatsächlich eine lokale Kopie

in dem Virtual-Env-Verzeichnis von dem Python-Interpreter.

Das heißt,

der wird nicht mit geupdatet dann in der Env.

Sondern nur in der Sim.

Okay, das ist ja schon mal nicht so schlecht.

Wahrscheinlich kann man das auch irgendwie einstellen.

Keine Ahnung. Bei mir ist das Verhalten tatsächlich oft so gewesen,

nach einem

Update von

Python in Homebrew, waren halt

die Virtual-Envs kaputt.

Die halt mit dem alten Interpreter gebaut worden sind.

Was natürlich so ein bisschen auch

wieder, das ist auch wieder so, das muss man dann erstmal rauskriegen,

woran das eigentlich liegt, dass da jetzt nichts mehr funktioniert

und so. Also es ist einfach nicht so richtig

schön.

Und

!

Ja,

das geht halt

mit Virtual-Env-Wrapper

halt immer nur so, naja, vielleicht geht es auch

irgendwie, aber so richtig toll ist es nicht.

Jedenfalls gibt es eine Geschichte, die ich jetzt

besser finde und

wo das halt alles explizit ist

und das ist halt PyEnv.

Und was daran halt sehr schön ist, ist, dass

man damit,

also das Ding ist im Grunde dafür da,

um

beliebige Python-Versionen irgendwie zu installieren

und halt auch klar zu machen,

das ist so ähnlich, also man merkt auch, das ganze

Ding bewegt sich so ein Stückchen alles Richtung

JavaScript,

weil tatsächlich muss man leider sagen, dass

JavaScript an der Stelle irgendwie viele Dinge schon

lange besser ist als Python.

Ja, das parkiert mir jetzt schon in Python ein bisschen nervig.

Ja, und

also es läuft halt zum Beispiel

eben in die Richtung, dass man halt pro Verzeichnis

entscheidet, was da jetzt eigentlich sozusagen

für eine Python-Version drin

verwendet werden soll, was ja

üblicherweise ist, liegen deine Projekte ja in irgendwelchen

Verzeichnissen drin und bei Python kannst du halt

sagen, okay, also mein globaler

Python-Interpreter soll jetzt 281 sein, aber

in diesem Verzeichnis hätte ich gern irgendwie ein 37,

weil das ist halt das, was in dem Projekt

verwendet wird. Und

wenn man dann sagt, Python local

3.7,

dann legt es halt so eine local

irgendwas, Python local

Datei an oder sowas, und da steht dann halt drin, welche

Version verwendet werden soll. Und

das Ding ist halt, was an dem Ding sehr

toll ist, dass man damit wirklich alles installieren kann.

Also pro Folder, das heißt, man hat pro Folder und

Subdirectories dann eigene Python-Versionen,

Version. Kann man das

kombinieren mit Virtual-Env? Was ich halt

toll finde, ist natürlich, dass man vorne immer so

sieht, welche Environment wird denn jetzt

gerade aktiv? Genau, genau.

Das Ding kann auch selber

Virtual-Envs dann erzeugen.

Man kann dem auch sagen, erzeug jetzt ein Virtual-Env,

hat wenn er darin den Interpreter oder so.

Wo liegen die?

Also bei mir liegen die in

Home-Verteilung unter Envs zum Beispiel.

Das kannst du alles einstellen, wie du das magst.

Das ist kein

Problem.

Bei Virtual-Env,

also man kann es einstellen.

Ich glaube, es ist nochmal ein bisschen anders

als bei den anderen,

bei Virtual-Env oder so,

aber egal.

Was du da

auch netterweise machen kannst,

ach, du hast gerade gesagt,

genau, Local, Global, du kannst

halt wirklich alle Python-Versionen damit

installieren. Du kannst halt

auch PyPy installieren

oder halt eben auch Minikonda,

dass du halt damit tatsächlich

für alle Geschichten, die man so macht, kann man

damit halt

sozusagen

das Ding für alles

verwenden. Also ich kann jetzt für

Datastrides und Web-Geschichten das gleiche Ding verwenden,

was schon mal eine echte Arbeitserleichterung ist.

Ich habe mir dann auch so ein paar

Hilfsfunktionen noch geschrieben, die halt

irgendwie

sozusagen gucken, wenn

da so ein

was machen die alles?

Die wechseln auch automatisch,

wenn ich ein Verzeichnis wechsle, halt in das

entsprechende Virtual Environment und

mache dann auch eine Fallunterscheidung, ist das jetzt Minikonda

oder nicht, passen dann nochmal Variablen an.

Aber tatsächlich ist es so,

dass ich das nicht mehr merke, sondern ich

mache einfach nur ein CD in ein Verzeichnis

und dann ist die Python-Umgebung so,

wie sie sein sollte.

Das heißt, ich kann das auch abstellen,

das heißt, wenn ich nicht möchte, dass er die wechselt, dann

kann man das natürlich auch.

Es gab noch

Pip-Band irgendwie zwischendurch mal, weil das irgendwie mal

kurz...

Genau, das gehört jetzt,

da kommen wir dann schon, also das ist jetzt sozusagen,

ich weiß nicht, hattest du noch was zu dem

Themenbereich, irgendwie,

wie installiert man Python jetzt eigentlich oder

sind wir damit, weil...

Ja, also ich würde

Python auf Windows jetzt einfach installieren,

über Choco und dann tatsächlich

versuchen, mit dem Web-Adapter das zu machen.

Aber ich muss ja Python verankern, das klingt sehr gut und

es gibt auch Python Windows, das heißt,

das wäre wahrscheinlich die bessere Idee, da sich da so ein bisschen

reinzufuchsen und auch das dann damit zu verknüpfen.

Genau, würde ich mal angucken.

Also,

das sieht für mich momentan schon so nach der

besten Option eigentlich aus.

Genau, aber sagen wir mal einfach, damit sind wir

durch, also vielleicht kann man sich einfach

mal PyInf angucken oder man nimmt halt das, was der

Paketmanager des Vertrauens halt einfach so mitbringt.

Also das einzige Nervige auf Windows ist natürlich,

wenn er WSL benutzt, müsste er das alles natürlich

zweimal machen, weil auf WSL ist

natürlich der Linux dann das System

drauf, da müsste er die ganzen M-Gebungen alle wieder

erneut einrichten und einen anderen Interpreter nehmen.

Da wäre vielleicht auch PyInf die richtige Variante,

wenn man nämlich so ein Directory dann

mountet von Lokal. Wäre sehr

interessant, ob das unter Linux, WSL

und Windows gleichermaßen

funktioniert.

Ja, das wäre mal ein Versuch wert.

Ja, also wenn man dann aber

irgendwie so Python installiert hat und dann

halt einfach nur in zwei Zeichnen

wechseln und dann das richtige Python

direkt da hat,

dann hat man ja immer noch das Problem, okay,

ich habe jetzt

für Projekte,

äh,

Abhängigkeiten, die ich auch gerne installieren würde.

Wie mache ich denn das?

Und da gibt es halt auch unterschiedliche

Ansätze und der

Ansatz, den man da traditionell verfolgt hat,

äh,

war halt irgendwo da so ein Requirements.txt

File

reinzupacken. Die können auch,

also du kannst halt Requirements

.production.txt

haben, was dann halt irgendwie in Base

Requirements inkludiert oder so

und dann halt unterschiedliche

Mengen von Abhängigkeiten.

Je nachdem, ob du jetzt entwickeln willst

oder halt irgendwie Produktionsbetrieb machen willst

oder so. Aber, äh,

also, ja, das geht auch

alles schon irgendwie, aber das, also was halt

daran zum Beispiel total beschweigt ist,

ist, dass es nicht

deterministisch ist so richtig, was passiert,

wenn das jemand irgendwie in ein paar Monaten

auscheckt, neuer Entwickler

und dann halt

pip-i, äh,

oder pip install-r

Requirements.txt sagt oder so.

Weil man hat zwar,

sozusagen, die direkten Abhängigkeiten hat man,

kann man die Versionen zwar pinden drin, also man kann

sagen, welche Version man genau hätte,

aber, äh,

die Sachen, äh, von denen

die abhängen, äh, die, äh,

können sich ja auch geupdatet haben. Und

das heißt, eine Installation mit dem gleichen

Requirements.txt-File kann

heute anders aussehen als in ein paar

Monaten. Ja, hab ich manchmal mir schon böse mit in den Fuß

geschossen. Da fehlt dann irgendwelche Dev-Pakete oder,

äh, ja. Ja, und dann, das kann halt,

das heißt, es können

etwas, das halt vorher super funktioniert hat, geht halt

plötzlich.

Es geht plötzlich kaputt, einfach so. Und man weiß nicht, warum.

Und das ist natürlich irgendwie etwas,

was eigentlich gar nicht sein sollte.

Was steht da da als Neuentwickler? Hat die Requirements installiert und es geht

nix? Und fragt sich so, hä?

Wieso bin ich jetzt wieder zu blöd? Und, äh, ja,

manchmal ist es tatsächlich so. Ja, normalerweise denkt man sich dann so, ja, die haben's halt

verbockt und haben's aber selber gar nicht so richtig gemerkt,

weil sie irgendwie, äh, aber, nee,

es ist, es kann tatsächlich, solche Sachen können

halt dann passieren. Und,

ja, was halt in der JavaScript-Welt

schon lange üblich ist, ist, dass man dann halt

ein Log-File hat, wo man dann halt die ganzen

Versionen der, äh,

Pakete auf denen, äh, von denen

die Dinge abhängen, die man halt als

Abhängigkeiten definiert hat, dass die halt auch gepinnt

werden, sodass halt sichergestellt ist, dass halt,

wenn ich npm install

sage oder yarn install oder so, äh,

dass dann halt alles, äh, irgendwie genau

in der Version da ist, wie, äh,

man das halt mal zu dem Zeitpunkt, als

das alles funktioniert hat, äh, irgendwie,

äh, definiert hat.

Und das wird halt weitest eingecheckt und dann, äh,

gibt's da keine Missverständnis mehr und kann

auch ein Update zwischendurch nichts kaputt machen,

weil die Versionen sind ja alle gepinnt.

Und, ähm, tatsächlich die ganzen

Tools, die jetzt, äh, versuchen da so ein bisschen

das, äh, äh, unter Python halt auch,

äh, eher so wie JavaScript zu machen, die gehen

halt auch alle in diese Richtung. Also, äh,

das sind zwei wesentliche Tools,

äh, die, die da eine Rolle spielen.

Das ist, äh, ja, pipenv und

poetry, würde ich sagen.

Oder ich würde es eigentlich

eher umgekehrt sagen. Ich würde sagen poetry und pipenv.

Poetry klingt

sehr schön poetisch.

Ja, und, äh, pipenv,

äh, ist so ein

bisschen, ist zwar, äh, irgendwie offizielles

Produkt der, der

PSF, äh, Python Software Foundation oder irgendwie

da gelandet, keine Ahnung.

Aber das ist, äh,

es wird auch mehr verwendet tatsächlich,

aber ist nicht so das, was, äh,

Ist doch von dem Autor von Requests irgendwie da, oder?

Ja. Na, sag schon.

Kenneth Wrights. Ja, ja.

Aber bis vor kurzem, ich weiß nicht, ob es immer noch so war,

bis vor kurzem war da halt ein, äh,

äh, Issue drin,

so irgendwie, äh,

if this project is dead, please tell us.

Und der war halt seit einem Jahr offen.

Und, äh, also das ist halt schon, bei so einem Ding,

das so wesentlich ist, geht das

eigentlich nicht. Und, äh,

insofern, äh,

ja, also es gibt da, äh,

Schwankungen.

Und, ähm,

also es ist, es wirkt manchmal so ein bisschen

unmentent und, ähm,

ja.

Deswegen mehr Poetry. Genau, genau. Also,

also wenn man Leute fragt, die sich damit auch

mehr beschäftigen, dann sagen fast alle irgendwie,

ne, sie verwenden eigentlich schon momentan Poetry.

Der Pippa-Pippa-Pippa-Enf nochmal, aber

eigentlich ist Poetry das... Also Pie-Enf und Poetry müsst ihr verwenden.

Das ist jetzt die Quintessenz.

Pie-Enf und Poetry.

Erklär mal bitte kurz, was ist Poetry? Wo ist mal Poetry?

Also müssen würde ich jetzt nicht sagen.

Ja, natürlich. Aber, äh,

das ist, äh, das, was ich jetzt gerade verwende zur Zeit,

ja. Also, äh, der, der,

also Poetry verwendet man halt

sozusagen dafür, um

jetzt in, äh,

in ein Environment oder in ein

Projekt, was man da hat, halt irgendwie die ganzen

Abhängigkeiten auch mit reinzukriegen. Und das,

ähm, ist so ähnlich

eben wie in der JavaScript-Welt halt ein

Package-JSON, äh, und Package-Log.

Gibt's halt da ein Pie-Project-Tommel

und, äh,

das weiß ich gar nicht. Das ist ein Poetry-Log,

glaube ich, die im Wesentlichen

genau das Gleiche machen. Man kann halt, äh,

da drin, äh,

die Produktions- und die, äh, Entwicklungsabhängigkeiten

definieren. Und

das Ding installiert den ganzen Kram halt

und macht halt ein Log-File mit, wo die,

ja, wo halt alle Versionen

gepinnt sind. Steckt man beides ein und dann

kann man halt das Environment auch reproduzierbar

wieder so erzeugen.

Ähm, insofern alles noch nichts

Neues. Also, das macht

uns halt eigentlich ganz gut. Äh, ich meine,

ich verwende es jetzt auch noch nicht so lange. Das funktioniert

alles super. Es macht noch ein bisschen mehr Dinge.

Es macht zum Beispiel auch noch sowas wie,

ähm, du kannst halt,

äh, äh, Entry-Points

definieren in dieser Pie-Project-Tommel

für Skripte.

Und, äh,

das ist auch so ähnlich wie bei NPM kann man

das auch. Also, das

kann man halt in einem Projekt halt auch, äh,

die ganzen Verwaltungs-Skripte, die man halt

so hat, wie zum Beispiel, wenn man jetzt die Tests

ausführen will, dann ist es unter Umständen eine Kommando-Zeile,

die relativ lang ist.

Äh, oder, äh, manchmal

will man die halt in einem Docker-Container ausführen.

Oder, äh,

man möchte, äh, Coverage-Pyri laufen

lassen mit allen möglichen Parametern oder,

weiß ich nicht, was einen, oder irgendwelche Linter oder so.

Äh, dann kann man halt, äh,

ähm, sich da, äh,

äh, sozusagen einfache

Kommandos mit Pochi,

äh, definieren, die dann halt eine Funktion aufrufen.

Und in der Funktion kann man dann halt einen komplizierten

Aufruf machen. Also, wozu ich das zum Beispiel

verwende, ist, äh,

ich hab halt, äh, ähm,

sozusagen eine Umgebungswahl gesetzt,

die mir sagt, ob ich jetzt innerhalb von einem Docker-Container bin

oder nicht. Und wenn ich das nicht bin,

weil, also meistens für, äh,

Web-Infektionsgeschichten ist halt alles Docker-basiert

mittlerweile, ähm,

dann, äh, wird um

die ganzen Kommandos, die ich da ausführe, halt

ein Docker-Compose mit dem richtigen,

äh, Docker-Compose,

Jammer-File halt irgendwie drumrum gestrickt,

sodass das halt innerhalb von dem Docker-Container

ausgeführt wird. Sodass ich halt,

und dann mach ich mir noch Aliasse, also, was ich

eigentlich ausführe, ist Poetry-Run-Test,

sozusagen, um die Tests auszuführen.

Und dann hab ich noch ein Shell-Alias

für, äh, äh,

von Tests auf

Poetry-Run-Test. Und dann

geb ich in dem Verzeichnis einfach nur einen Test,

drück Enter, und dann laufen die Tests durch.

Und es ist völlig egal, ob ich innerhalb von

einem Docker-Container bin oder nicht.

Es passiert immer genau das Gleiche.

Mhm. Ähm, also,

wenn ich nicht drin bin, dann wird halt, äh,

das in einem Docker-Container laufen lassen, und wenn

ich drin bin, dann, äh, werden einfach

nur die Tests gestartet. Und

das hab ich halt nicht nur für Tests, sondern halt auch

für solche Sachen wie, äh,

ja, äh,

Linting, äh, Flake8,

äh, ja,

diese ganzen

Meta-Skript-Geschichten, die man halt

bei vielen Projekten einfach so braucht.

Mhm. Ähm, und das funktioniert

tatsächlich ganz gut. Früher hab ich dafür Makefiles verwendet,

ich glaub auch, ähm,

es gibt auch Leute, die das Command-Modul

verwendet haben von Python dafür, schon.

Mhm. Vielleicht haben wir so Command-Shell.

Oh, ja, stimmt, das kann auch gut sein. Das könnte man eigentlich auch nochmal erklären.

Ja. Das ist, äh, irgendwie

ein Modul, der Standard-Library. Standard-Library wollten wir auch

nochmal eine eigene Folge zu machen. Ja.

Ich frag, ob wir jetzt kurz darauf eingehen möchten, das hatten wir

auch letztens schön beim Python-Pro, weil man damit tolle Sachen

machen kann. Man kann seinen eigenen Kommando-Zeilen-

Interpreter für so so Python-Sachen bauen.

Genau. Also,

hm,

ja, weiß ich nicht genau, äh,

ob man das jetzt, äh,

vielleicht machen wir es doch mal. Ja, vielleicht passt das dann besser

in die Standard-Library-Folge. Ja.

Oder wir wollten eigentlich

jede Episode ein Modul aus der

Standard-Bibliothek mal irgendwie so ein bisschen besprechen.

Das haben wir jetzt diesmal nicht geschafft, fürchte ich.

Äh, aber, äh, das werden wir

auf jeden Fall auch noch irgendwie hinkriegen.

Und Command ist halt ein Kandidat,

das, es ist halt einfach praktisch, ähm,

das, ja, dass man da einfach so eine Shell haben kann

und dann mappen halt die Command-Module, die man eingibt, halt auf

Funktionen, das ist, was es im Wesentlichen tut.

Aber ja, da muss man eigentlich ein bisschen länger was zu erzählen.

Ähm. Ja, aber wir waren noch bei Poetry, also

das ist irgendwie, ja. Ja, Poetry, genau.

Kann halt auch so irgendwie, äh, Skripte laufen

lassen, äh,

kann, äh, Pakete installieren.

Man kann auch damit, ähm,

sozusagen tatsächlich Pakete bauen

und die halt, äh, irgendwie

wirklich hochladen nach PyPI. Kann man sie, glaube ich, nicht.

Das weiß ich nicht so genau. Da hat ja Jens, äh,

was so gebaut, glaube ich. Ja? Ja, der hat tatsächlich

so ein Poetry-Publish-Tool gebaut, ähm,

wo man, ähm, Projekte,

die Poetry nutzen, zu PyPi putschen

kann mit, ähm, paar Checks irgendwie. Ja.

Ja.

So, vielleicht können wir das mal linken. Der hat ja irgendwie gestern

was dran gebastelt. Muss ich, muss ich mal genau,

weiß ich, weiß ich noch nicht. Das habe ich auch mit Poetry

noch nicht so wirklich gemacht, äh,

aber soll auch irgendwie

gehen. Also, was man, was man sagen

kann, ist, dass, dass auch

dieses, dieses PyProject, äh,

Punkt-Tommel-

Pfeil soll halt, äh, irgendwie,

da gibt's auch ein, äh,

ein Python-Enhancement-

Proposal zu 518,

ist es, glaube ich, ähm,

äh,

soll halt mal irgendwie die zentrale

Konfigurationsdatei für so Projekte werden.

Also, bisher gibt's

da ja, da gibt's auch einige Kandidaten.

Es gibt auch, äh,

äh, Setup, also es gibt zum Beispiel, wenn man jetzt

Pakete baut, tatsächlich, also wenn man jetzt in Library

schreibt, äh, das macht man auch fast immer,

also wenn man jetzt irgendwie ein Projekt hat

und möchte das irgendwie bauen, dann hat

man oft irgendwie eine Setup.py

da drin liegen. Ja. Und

Setup.cfg

Konflikt. Ja.

Und, äh,

ja, also

ein Problem zum Beispiel ist halt auch,

dass, äh,

die Setup.py,

also, äh, also einmal

ist das alles ziemlich kompliziert,

und dann, äh, was Leuten nicht so gut gefällt,

ist, dass man, wenn man jetzt ein Paket

installieren möchte,

tatsächlich

irgendwie so ein Python-Skript ausführt, wo

unklar ist, was das tut. Das kann ja

auf deinem System beliebige Dinge tun.

Jetzt ist halt die Frage, muss ich, wenn ich jetzt

ein Python-Projekt, was ja, äh,

ansonsten ist das halt irgendwie, äh,

ein, ein, ein Archiv, irgendein ZIP

oder TABOL von irgendwie

Python-Dateien, ja, py-Dateien,

das möchte ich jetzt irgendwo, äh,

in ein Verzeichnis werfen, und

das war's im Grunde. Viel mehr ist das ja nicht,

ein Python-Paket zu installieren.

Warum muss denn da jetzt irgendwie

so Code ausgeführt werden, wenn ich das jetzt

mal kurz ausprobieren möchte?

Und, ähm, das ist schon mal so,

und, äh,

das ist halt einer der zentralen Punkte, die

halt mit dieser PyProject, äh,

äh,

äh, Tommel angegangen werden, weil, wenn du das halt

eben in diese PyProject-Tommel reinschreibst,

und das, ich weiß noch nicht, ob es so weit ist,

ich glaube, es ist noch nicht so ganz, aber wenn das halt

irgendwann mal ausreicht, um Pakete zu bauen,

dann kannst du halt, äh,

ein Paket installieren, ohne dass halt

irgendwie ein Skript ausgeführt und beliebiger

Code ausgeführt wird, auf deiner Maschine.

Sondern da wird halt PyProject-Tommel gepasst

und da wird halt irgendwas gemacht, aber da ist nichts drin,

was irgendwie ausgeführt wird.

Und, äh, das ist dann

natürlich schon nett, das ist dann halt, äh, schon mal

ein Problem weniger.

Äh, und ein Ding, wo man Code,

weniger, wo man Code ausführen muss,

dem man dann halt irgendwie vertrauen muss.

Ähm,

dafür ist es gedacht. Dann ist es aber auch so,

dass, ähm,

ja, äh, äh,

genau, diverse andere Geschichten, die jetzt

in setup.cfg

irgendwie normalerweise drinstehen, die sollen

da halt auch rein. Und,

äh, also, weiß ich nicht,

zum Beispiel irgendeine Konfiguration für Linter,

Konfiguration für PyTest und so.

Ich glaube, PyTest ist noch nicht drin, aber

Black zum Beispiel

unterstützt auch schon

PyProject, Toml, äh,

ich weiß nicht, ich kann die ganze, also es gibt auf jeden Fall

einige, die das alles unterstützen und andere halt noch nicht.

Aber alle wollen das irgendwie

wahrscheinlich irgendwie früher oder später machen.

Daher ist das ja auch schon mal

eine relativ, äh,

vielversprechende Angelegenheit.

Und was auch schön ist, ist das Dateiformat.

Das ist auch, das kann man sich auch den, diesen

PEP 518 mal angucken.

Ähm, man kann sich jetzt auch einfach denken, so,

ja, warum denn jetzt nochmal ein neues, das habe ich mir auch zuerst

tatsächlich auch gedacht, ich meine, so Toml,

was zur Hölle, warum denn nochmal ein

unterschiedliches Dateiformat, ne?

Es gibt ja auch immer den Witz, äh, sozusagen, ja,

äh, irgendwie, äh,

Jason kommt dabei raus, wenn man alle Fehler

ignoriert, die Leute bei XML gemacht haben, ja,

und, äh, äh, Jaml kommt dabei raus,

wenn man die Leute irgendwie alle Fehler ignorieren,

die bei Jason gemacht wurden, und, äh,

warum denn jetzt noch Toml, ne? So, wenn jetzt alle

Fehler ignoriert, die bei Jaml gemacht worden sind, kommt dann vielleicht Toml raus?

Kann sein. Äh, aber das

ist halt, das ist tatsächlich, äh,

ganz gut begründet, ähm, warum sie

da nochmal ein neues Format nehmen, weil tatsächlich

leider alle anderen Formate

scheiße sind, so soll man leider sagen.

Das fand ich auch bitter,

das haben sie dann auch relativ

unmissverständlich da in den, in den Step reingeschrieben.

Es ist echt,

es ist echt faszinierend. Ich meine, also,

das XML, also da braucht man nicht viel, viel drüber reden

eigentlich, ne, das XML scheiße ist, das ist,

ja, bekannt. Das ist, das kann man

als bekannt voraussetzen, ja.

So, äh, es ist halt, ein entscheidender

Punkt dabei ist halt, es ist nicht von Menschen

editierbar, so richtig, ne.

Und das ist sowieso ein komisches Format,

also, äh, naja, will man eigentlich nicht.

Ähm, dann...

Warum JSON? JSON?

Ist eigentlich nicht so

schlecht, wird ja auch verwendet tatsächlich bei JavaScript, eben

für Package JSON und so, aber

also menschenlesbar ist es auch irgendwie,

aber menschenschreibbar ist halt so eine Sache,

weil die Syntax ist so ein bisschen

filigran. Also es gibt ja so Dinge

wie zum Beispiel, dass man halt, ähm,

äh, tatsächlich

kein Komma am Ende

von... Am letzten, ja.

Kacke, ja, also, und ich meine, also

als Mensch denkst du halt so, wenn du das nicht,

wenn du jetzt nicht irgendwie so ein Standard-Fetischist

bist oder so und das sofort siehst,

oder deinen Editor kannst du dir vielleicht auch sagen,

aber wenn du jetzt einfach mal einen normalen Texteditor nimmst,

der das nicht kann, äh,

dann tippst du das da so ein

und dann sagt dir halt

NPM irgendwie, da ist ein Syntaxfehler und denkst dir so,

hä, was? Warum?

Das ist ein Syntaxfehler. Ja. Und es macht

das so parsen halt auch schwer, weil, äh,

ja, das ist halt, du musst

wissen, du musst,

du musst dir immer merken, dass das jetzt irgendwie das letzte,

also, äh,

das letzte ist und so, ach, das ist

alles, du kannst dich alle gleich behandeln,

das ist irgendwie, also Jason ist

viele Sachen ganz nett, aber so,

ähm, menschenschreibbar nicht so gut

und es hat auch so komische Quirks irgendwie.

Äh, aber ansonsten, Jason

ist auch nah dran, also die waren auch kurz davor,

Jason zu nehmen. Ähm,

ja.

Jammel sieht eigentlich ganz gut aus,

ne, wenn man so ein Jammel-File sieht,

denkt man sich so, ach, ja,

so schlecht ist das ja gar nicht.

Ich hab in letzter Zeit viel

mit Kubernetes zu tun.

Ich hab viel

Jammel gesehen. Ich bin nicht mehr

davon überzeugt, dass das eine gute Idee ist.

Naja, also, Jammel, es kann auch

furchtbar werden. Also, einmal ist das Problem bei Jammel,

der Standard ist gigantisch, also,

ähm, während Jason halt noch relativ da

ist relativ einfach zu implementieren

und es gibt relativ wenig Zeug. Jammel

ist richtig fett, da ist viel Zeug drin

und was den meisten Leuten auch überhaupt nicht

klar sein dürfte, was aber auch ein großes Problem ist,

ist, dass halt Jammel-File-Parsen

bedeutet, Code auszuführen im Grunde, meistens.

Oh. Du kannst,

das kann halt so viel, dass du dem

sagen kannst, so, hier, führ mal diesen Code aus, dann machst du das.

Es gibt dafür ein, äh, ein

Load-Safe oder Safe-Load-Methode oder sowas,

die man benutzen kann, wenn man Jammel-Parsen will,

ohne da Code auszuführen.

Aber das muss man halt auch erstmal wissen.

Und das ist halt, also,

kann man lustige Jammel-Sachen machen.

Standard ist komplex und dann irgendwie, wenn man

einen Jammel-File lädt, führt das Code aus.

Das ist halt schon eine

Kombination, die, äh, ja,

ist schon bitter. Also,

ja, will man vielleicht auch nicht, obwohl es halt tatsächlich

gut menschenlesbar ist und es ist gut menschenschreibbar

und es sieht eigentlich ganz nett aus.

Aber das ist halt, aber es ist

zu kompliziert und es ist zu gefährlich

eigentlich. Da kann man das auch nicht wirklich

gut verwenden.

Ja, und, ähm,

tja, was bleibt da noch?

Ach, es gibt noch Config-Parser,

auch in der Standard-Bibliothek von Python.

Das ist halt so ein, in Windows nennt man das, glaube ich,

Ini-Files oder so.

Äh, wir hatten es auch überlegt.

Ist halt schön einfach. Das Problem ist,

es ist halt nicht mächtig genug,

um halt die Sachen, die man halt in so einem

Projekt-Definitions-Dings

abbilden können will, abzubilden. Das ist schon mal

doof. Und dann ist es so, es gibt keinen Standard dafür.

Es ist nicht so, dass es irgendwo standardisiert

wäre, sondern

das, was Config-Parser kann,

ist halt dadurch definiert, dass es halt

Config-Parser ist, kann. Aber es ist irgendwo...

Ja, es gibt ein paar Config, bei denen das dann geht.

Naja, und eben, bei manchen geht es halt nicht

und wenn es nicht geht, weiß man halt nicht, warum.

Und es gibt auch keine anderen

Implementierungen und so. Also,

ja, auch nicht wirklich toll.

Und jetzt kommt... Und jetzt kommt

Tommel. Tommel ist zwar ein anderes, neues Format,

das keiner kennt, aber

tatsächlich erfüllt es all diese Sachen. Man kann es gut

lesen, man kann es gut schreiben. Es ist...

Es explodiert nicht sofort, wenn man es

passt. Der Standard ist

schön einfach. Und

es gibt tatsächlich auch einen Standard.

So, dann haben wir gesagt, okay, ja gut, dann...

Und vielleicht sogar das wichtigste

Argument, das wird

halt...

auch sozusagen zur

Definition von

Projektabhängigkeiten und Paketdingen

verwendet, schon

bei Rust.

Und funktioniert ja schon lange.

Aha.

Und ja, insofern ist es halt

auch nochmal eine Vereinheitlichung.

Okay, okay.

Ja, also, genau.

Und ja,

Poetry benutzt das halt auch und

insofern eigentlich alles ganz nett.

Ja.

Interessant.

Ja, und damit hätte man sozusagen

den Teil, wie installiert man

eigentlich Pakete

und

wie führt man da Skripte,

so Management-Skripte aus,

auch erledigt.

Ja.

Was fällt dir noch rein zu deiner Umgebung? Also ich meine, wir haben jetzt gar nicht

die Touren oder sowas.

Das müssen wir aber eigentlich auch noch.

Ja, zumindest. Also eigentlich schon.

Was nutzt du?

Ja, E-Mails, wie ist Boot?

E-Mails verraten.

Ja, oft.

Im Enhanced-Modus oder im Touren?

Was nutzt du für ein Farbschema?

Ich habe mal Solarize

verwendet, aber das mache ich eigentlich auch nicht mehr.

Ich weiß es aktuell

gar nicht.

Ich nehme Dracula.

Ich mag das.

Das ist wie bei PyCharm.

Ja? Nee?

Nee, Dracula ist so schön lila.

Pink, gelb, weiß.

Auf dunklem Hintergrund.

Ah, okay, keine Ahnung.

Ja, also

WI tatsächlich

immer noch sehr viel und

mir gefällt es auch gut.

Ich habe eine Zeit lang Neowim verwendet, aber

seit Wim8

kann es eigentlich alles wieder,

was man so haben will.

Vor allen Dingen eben auch Linting-Geschichten

ausführen,

ohne dass das Editieren blockiert

oder so. Das war ja so

der Hauptgrund dafür, oder jedenfalls für mich,

Neowim zu verwenden.

Ähm, daher kann ich

wieder den normalen Wim verwenden.

Was ich an VS Code zum Beispiel so sehr mag,

wo wir eben darüber gesprochen hatten,

man kann auch da die Settings synchronisieren.

Bisher benutze ich dafür eine Extension, aber das ist gerade dabei,

dass es in den offiziellen Patch Notes, glaube ich,

drin steht vom Insiders,

dass man die Settings synchronisieren kann, wenn man möchte,

über seine Maschinen, was natürlich super ist,

weil man ja auch die Editor-Settings,

die ja irgendwie doch länger sein können irgendwann,

gerne synchronisieren möchte.

Ja.

Auch die Extensions, die man nutzt.

Sind das nicht,

sind das nicht auch Dot-Files irgendwie,

die man genauso behandeln könnte wie alle anderen?

Gute Frage.

Ich glaube nicht.

Das ist eine Settings-JSON, ist das eigentlich,

die da irgendwo drin liegt im VS Code-Verzeichnis.

Und ja, da kann man halt

in die JSON-Sachen reinschreiben.

Naja, keine Ahnung.

Die kann man natürlich auch dann synchronisieren,

über seine Dot-Files. Das habe ich bis jetzt auch so ähnlich gemacht.

Also dann ist das nächste Problem halt, dass du dann die Extensions,

die kann man natürlich auch immer exportieren.

Da gibt es ja viele, für die man dann synchronisieren möchte.

Und dann kann man es halt auch automatisch machen,

dass halt die Extensions alle,

gleich sind, dass man halt auch da Updates fahren kann und so.

Das ist doch ganz nett.

Ja, bei MWI ist das zum Beispiel so, dass halt eben

die Plugins, die ich verwende, die kommen halt auch über

über die Dot-Files.

Und dann sage ich halt auf einer neuen Maschine einfach nur,

wenn ich ein WIM starte,

doppelwungen Plugin install

und drücke Enter

und dann installiert die ganzen Plugins.

Und das ist natürlich schon seine, also sagen wir mal so,

das funktioniert nicht mit allen.

Es gibt manche Sachen, die leider

Arbeit erfordern, wie zum Beispiel

irgendwie Autocomplete,

dafür benutze ich

Jedi

und halt Ucomplete.me

und Ucomplete.me braucht einen Server-Teil,

der gestartet wird

und der muss kompiliert werden

und das geht dann alles nicht mehr so einfach.

Da muss man tatsächlich irgendwie...

Eigentlich ein Skript verschreiben, das ins Dot-File-Repo kommt.

Bei der Installation direkt das automatisch macht.

Das ist auch nicht automatisiert, aber

das muss man halt

irgendwie noch machen.

Autocomplete ist übrigens ein echt nettes Feature, das kann man auch

bei verschiedenen Sachen einbauen. Also auch sogar unter Windows,

mit Git,

Dosh, Posh, Git zum Beispiel, kann man

Git-Autocomplete machen und

ganz viele lustige Sachen, dass er da eine Docker

noch completet und so, dann kann man ein bisschen schneller

sein Kommando

reinhacken.

Ja, bei Phish gibt es auch für alles irgendwie

Autocomplete-Geschichten.

Phish hat sogar

so eine Suchfunktion, dass man halt

die Autocompletion

durchscrollen kann.

Ja, das ist ja sehr geil.

Wahrscheinlichste sogar.

Ja.

Man kann das auch so einstellen, dass man die, die man häufig

im Windows hat, nimmt und dann kann man daraus durchdabben und so.

Das ist schon nett.

Ja, genau.

Ja, VI.

Genau.

Es gibt halt

im Grunde, ehrlich gesagt, wenn man den

so richtig voll

ausgebaut

aufgebimmt hat,

dann unterscheidet sich jetzt so ein

voll aufgeblättert Wim

gar nicht so großartig von sowas,

wie das Code oder

Pyjama macht noch mal ein bisschen mehr.

Aber tatsächlich gibt es halt

viele Sachen, die ganz ähnlich sind.

Also nicht Command-P,

sondern Command-T,

da gibt es dann zum Plugin, das macht aber fast das gleiche.

Dann gibt es

halt irgendwie

Fugitive Wim, das irgendwie

Git

super interagiert, was dann halt

diverse Dinge darstellt, was sich geändert hat.

Ja, ich wollte gerade sagen, also diese Git-Integration,

die würde ich ja schon nicht hören.

Ja.

Da gibt es den Prozess, den ich irgendwie einbauen kann,

dann wie das Code.

Ja, zwei Wim aber auch alles.

Kann das alles dann synchronisieren, kann die Commits direkt da drin machen.

Das Einzige, was mir noch so ein bisschen fehlt, ist tatsächlich

das Issue-Handling. Das ist da, wo ich gerade noch

so ein bisschen struggle. Ich würde gerne meine Issues direkt

in wie das Code angezeigt bekommen und die da auch

bearbeiten können und dann direkt den Branch wechseln.

Das wäre ja alles ziemlich geil.

Aber ich habe ein, zwei Add-ons

da gefunden, die in die Richtung Geneva

aber noch nicht so ganz perfekt funktionieren.

Aber das, ich weiß nicht, ob sowas

überhaupt in Pyjama oder so geht.

Das ist das einzige Feature,

das ich bis jetzt nicht entdeckt habe in wie das Code.

Was ich von Pyjama-Usern gehört habe, was vermisst wird,

ist Auto-Import.

Das heißt, dass man automatisch

die ganzen Imports von den Sachen, die man

in den Code geschrieben hat, oben

erzeugt bekommt.

Ja, genau. Bei Pyjama

tatsächlich gibt es dann immer Leute,

wenn ich dann Sachen oben von Hand eintrage,

die mich dann angucken, so als wäre ich irgendwie so ein Tier,

was da irgendwie so rumkriecht

und

ja,

ich fühle mich auch immer besser.

Tatsächlich habe ich dafür beim Wim

auch noch nichts gefunden, was das automatisch macht.

Es gibt aber was für

für

Notebooks gibt es PyForest,

das macht das da auch.

Ich habe Nico gehört,

wie ich letztens

getroffen habe. Wir waren ja zusammen

auf dem PyData-Koopalon.

Der meinte, das kann man super

verwenden, wenn man da halt irgendwie, keine Ahnung,

in

einem Jupyter-Notebook halt Dinge

verwendet, dann importiert, dann beschreibt es den Import halt

oben rein und das ist tatsächlich ziemlich cool.

Ja, aber

tatsächlich für VI habe ich das noch nicht gesehen.

Vielleicht gibt es da bestimmt auch irgendwie was,

aber da schreibe ich meine

Imports immer noch von Hand und

natürlich, ja, ist es ein bisschen rückständig.

Aber ansonsten,

ich weiß gar nicht, ob ich da

mal durch die Liste der Plugins beim VI durchgehen

sollte oder so, ob das schon zu

speziell ist,

dass ich da so

normalerweise,

also verwende.

Also bei VS Code sind es auf jeden Fall

ganz wichtige Sachen dann, wenn du da ein Workload

drin hast, eine To-Do-Liste,

Test-Framework kannst du einbauen, du kannst Docker

reinpacken, natürlich die Git-Sachen,

ganze Pipeline einbauen,

sind nicht immer ganz praktisch.

Ja, ansonsten kann VS Code

eigentlich schon relativ viel selber und das sind da so kleine

Sachen, die halt irgendwie man nicht verzichten möchte.

Ja, ich glaube,

also man kann sich da selber,

also tatsächlich...

Ja, das war eigentlich alles selber basteln.

Das ist ja auch, wenn man irgendwas braucht,

dann sollte man vielleicht irgendwann mal gucken, ob es sowas gibt.

Aber vorher vielleicht erstmal so

lean wie möglich anfangen und so schlank wie möglich.

Das ist auch ein bisschen schnellere Ladezeit und so.

Das kann man aber auch vielleicht alles mit Atom

machen oder Subtime oder was auch immer man da nutzt.

Ich habe so zwischendurch noch, also Windows,

mein Notepad++ immer offen.

Das ist ja auch so ein Codeditor mit ein bisschen

Syntax-Highlights. Das nutze ich jetzt nicht

für Koden, aber wenn man mal so ein Skript oder so ein

Editor-Teile irgendwie

wie beim VI so ein bisschen schnell ändern will,

dann ist das eigentlich super schnell geladen,

offen.

Und hat es wieder weggeschickt.

Das ist ganz nett für so Configs oder so.

Ja.

Emacs haben wir noch vergessen.

Ich bin leider kein Power-Nutzer von Emacs.

Ich bin leider kein Power-Nutzer von Emacs.

Wenn du jetzt dein großer Aufschrei

mit dem Menschen fragst.

Ja, nee, das ist natürlich auch...

In Operating-Mode kann man irgendwie direkt seine Zeit mit managen.

Also ziemlich coole Sachen, die man damit machen kann.

Das ist Org-Mode.

Den was?

Ja, ja, irgendwie so.

Ja, ja, ja.

Ja, also Emacs kann auch

alles.

Ein eigenes Betriebssystem, habe ich gehört.

Ja.

8 Megabytes in Constantly.

Das ist auch wie schlecht solche Witze altern.

8 Megabytes in Constantly Swapping,

sozusagen. Das war früher der Witz bei Emacs.

Aber,

ja, irgendwie.

Oder du bist bei 8 Gigabytes oder so.

Es hockt einfach nicht mehr.

Das passiert nicht mehr.

Das ist heute sehr, sehr...

Es ist schon im Vergleich zu allem anderen.

Ich meine, wenn man sich anguckt,

eben Peitschrahmen,

unfassbar fette Java-Idee,

wie ist Code?

Das ist irgendwie

ein JavaScript-Monster

in einen kompletten Chrom,

der irgendwie

Elektron ausführt.

Oh mein Gott!

Also das ist natürlich schon alles nicht mehr vergleichbar mit...

Also Emacs ist dagegen

ja wirklich tatsächlich irgendwie so die...

Basic Lisp.

Ja.

Ja, also apropos, wo wir gerade bei

Swap-Sachen sind.

Und was hältst du denn von sowas wie RAM-

Betriebssysteme oder so, dass du einfach direkt alles in den RAM lädst

und darin arbeitest?

Ich weiß nicht, ob man überhaupt noch dann

feste Sachen braucht, weil man das dann

synchronisieren kann.

Dann ist man vielleicht noch schneller unterwegs, als wenn man das alles auf der Platte

macht, oder ist das Quatsch?

Ich weiß nicht genau. Also ich...

Ehrlich gesagt, seit SSDs

ordentlich schnell sind,

merke ich das nicht mehr,

dass da irgendwas noch lädt oder so.

Das ist irgendwie weg.

Ich habe auch...

Ähm...

Ähm...

Daher weiß ich nicht, ob es noch was bringt, wenn man das jetzt als Hauptspeicher...

Könnte man natürlich tun, wobei jetzt auch die meisten

Maschinen so viele Hauptspeicher haben, dass es

sowieso alles egal ist.

Wahrscheinlich eher alles gecached, falls es dem Cache...

Ich weiß es nicht.

Aber ich glaube, da viel mehr beschleunigen kann man dann.

Also jedenfalls beim...

Wenn ich so ein aktuelles Mac wohlnehme.

Also das ist so schnell.

Ja, das ist natürlich auch immer die Power-User-Version.

Ja, aber also da ist echt...

Ich musste auch nie auf... Oder fast nie auf...

Also doch, Docker.

Docker.

Das ist langsam.

Das ist langsam.

Das ist langsam.

Aber gut, da kann ich mir auch ungefähr vorstellen, woran das liegt.

Aber ansonsten...

Halte außer, wenn man jetzt irgendwie so Modelle

rechnet oder so, oder trainiert, dann ist

natürlich auch wieder...

Ja, die muss ja eigentlich auch Grafikkartenhandwerk trainieren, habe ich mir sagen lassen.

Was auf MacBooks auch tatsächlich so halbwegs geht.

Mit...

Na, wie heißt das noch?

Metal.

Da gibt es ein Ding von...

Ich muss nicht nachrechnen.

Äh...

Ja, keine Ahnung, wo man halt die Grafikkarte auf dem MacBook verwenden kann.

Das geht halbwegs gut.

Ist also auf jeden Fall so achtmal so schnell, als wenn man irgendwie...

äh...

CPU dafür verwendet.

Und das ist ja schon mal ganz ordentlich.

Ja, das ist eine schöne GTX oder so.

Ja, PlateML heißt das.

PlateML, genau.

Ja.

Ja, okay.

Ähm...

Ja, äh...

Naja, PyCharm habe ich jetzt auch in letzter Zeit wieder so ein bisschen angeguckt.

Und das ist auch nett.

Also was ich da neben den automatischen Imports...

Das ist natürlich auch schön, aber...

Äh...

Nochmal gesehen habe, was tatsächlich mir gut gefallen hat.

Also mich nervt immer noch, dass es halt irgendwie so rumläuft.

Und leckt.

Das halt, wenn man irgendwo drauf drückt oder so.

Dass es immer so klebrig ist.

Nicht so wie bei...

Also, wie ist es gut?

Ist halt viel besser.

Wie ist gut?

Das ist total toll.

Ja.

Auch.

Aber, äh...

Was tatsächlich was bei PyCharm cool ist,

ich kann zum Beispiel die Debugging-Geschichten.

Das hat mich ja letztens wieder...

Das kannst du bei VS Code auch.

Äh, okay.

Ja, ja.

Aber kannst du zum Beispiel auch in Docker debuggen?

Oder Remote debuggen?

Ja.

Ja?

Ja.

Echt?

Muss man konfigurieren.

Du kannst sogar das Coole bei VS Code ist,

du kannst tatsächlich per SSH

dich auf Sachen connecten.

Und das dann tatsächlich editieren.

Alles in VS Code drin.

Das sind alles sehr tolle Sachen.

Kannst du bei PyCharm auch.

Und tatsächlich, der Debugger bei PyCharm

ist echt...

Das ist schon deutlich cooler,

als wenn man einfach nur so eine PDB-Shell hat.

Ja, gut.

Aber echt...

Also, VS Code, ich nutze nicht so viel,

aber es geht, glaube ich, ganz gut.

Ja, ich habe auch nicht...

Ich habe es nur mal getestet

und es sah wirklich sehr gut aus.

Ich, ehrlich gesagt, benutze ich sehr selten Debugger.

Benutze das nicht so.

Einen perfekten Code.

Brauche ich nicht.

Nee, das nicht.

Aber ich meistens...

Wenn ich Sachen ausprobiere,

dann mache ich das eh in einem Notebook.

Ich mache das nicht in dem...

Ja, das habe ich von dir übernommen.

Das ist tatsächlich gar nicht so schlecht.

Dann sieht man ja direkt, was für die läuft.

Ja, und wenn man dann halt Code irgendwo hin tut,

dann weiß man halt eigentlich schon,

dass der halbwegs funktioniert.

Ja, aber...

Notebooks gehen jetzt übrigens auch in VS Code.

Aber das finde ich tatsächlich,

was nicht so richtig so funktioniert,

wie ich mir das vorstelle.

Aber das ist mittlerweile integriert.

Das ist auch ganz nett, tatsächlich.

Und was ich sehr cool finde an VS Code,

ist das Live-Share-Feature.

Das heißt, man kann Solo-Bereiche

aktiv gemeinsam an Projekten arbeiten

und sich den Cursor und so...

Das weiß ich gar nicht,

ob sowas bei PyCharm auch geht.

Aber das fand ich auch sehr beeindruckend.

Und das hat super funktioniert.

Also per Programming Remote.

Also mit VI geht das natürlich auch.

Dann einfach irgendwie TMAX

oder Screen-X oder sowas.

Und dann kann man das auch machen.

Aber ehrlich gesagt,

mit VS Code ist es schon cool.

Yes!

Ja, das hat schon...

Hat schon gut funktioniert.

Ich habe gerade gegoogelt

und tatsächlich Remote-Pair-Programming

with IntelliJ.

Ich weiß es nicht genau.

Also es kann sein,

dass es PyCharm auch kann.

Also meine Wahl wäre ja VS Code

mit einem tollen Terminal,

mit dem Windows-Terminal

auf einer Windows- und WSL-Maschine.

Natürlich macht ihr da Hypervisor an

und macht euch da virtuelle Maschinen noch drauf.

Das könnt ihr dann

in der Ubuntu-Entwicklungsumgebung

oder sowas einfach hochfahren

und dahin auch die Plattformen

und so.

Könnt ihr ja für Shared-Volas machen

und sowas.

Und das kann ich durchaus empfehlen

zum Entwickeln auch.

Also das funktioniert ganz gut.

Ja, also bei PyCharm

würde ich jetzt noch sagen,

also mein DSD-Buggen

hat mir gut gefallen.

Dann, was mir auch noch

ziemlich gut gefallen hat,

war Local History.

Ist eine super Geschichte.

Du kannst bei PyCharm halt auch sehen,

was du geändert hast,

ohne das alles eingecheckt.

Also manchmal hat man ja so den Fall,

dass man dann zu viel geändert hat

und weiß nicht mehr genau,

was man da so getan hat.

Und PyCharm sagt einem halt genau,

was da passiert ist

und macht sozusagen,

behält auch...

So eine lokale Versionshistorie.

Ja, genau, genau.

Und das ist auch relativ hilfreich

ab und zu.

Das hat mir auch sehr gut gefallen.

Tja.

Ansonsten,

ja, nee, weiß ich jetzt auch nicht.

Gibt es noch irgendwas,

was bei PS Code irgendwie

besonders cool war?

Also ich mag halt die Geschwindigkeit.

Das ist irgendwie so handlich.

Ja, ja.

Und also mir gefällt dieser neue Style.

Ich mag diesen Elektron-Style.

Ich mag das mit den Java-Settings,

mit den JSON-Settings.

Ja.

Und das ist irgendwie alles schnell, handlich.

Ich kann es überall benutzen.

Also ich mag halt diese Schlanken.

Ich mag eigentlich,

man mochte ich Atom ganz gern.

Ja, weil der ist halt sehr schlank auch.

Das ist auch ein Elektron-App.

Das ist schlank.

Ein paar hundert Megawatt oder so.

Das ist einfach egal.

Ja.

Ja, also,

naja.

Ja, Atom hat auch gut funktioniert.

Habe ich auch mal eine Zeit lang

irgendwie JavaScript-Geschichten gemacht.

Aber ja.

Stimmt, habe ich schon lange nicht mehr gestartet.

Eigentlich nur noch VS Code.

Ja, ich nutze ihn auch für Musik.

Weil da gibt es ein paar Plugins,

die mir auf jeden Fall VS Code wenden.

Es geht um Rust und Tidal Cycles oder sowas.

Da gibt es ein paar lustige Sachen.

Aber das ist eine andere Geschichte.

Ja, ansonsten.

Genau, ach so.

Ja, was auch zur Entwicklungsumgebung natürlich zugehört.

Blinta.

Oh ja.

Welche hast du alle an?

Alle?

Naja, ich flake 8 nehme ich normalerweise.

Wobei man immer gucken muss,

dass das halt irgendwie so kompatibel ist mit Black.

Ich benutze Black zum Formatieren.

Black.

Also Black auf jeden Fall.

Das ist so die Grundlage.

Und dann flake so angepasst,

dass es halt das, was Black macht,

irgendwie akzeptiert.

Was halt manchmal nicht so tut.

Oder wenn man es nicht konfiguriert macht,

das halt nicht.

Beschwert sich es halt irgendwie über fehlende Spaces

bei Operatoren oder so Sachen.

Und Pylint eigentlich nicht.

Ich habe sie alle an.

Du hast sie alle an?

Ja, Peb8, Flake und Black und so.

Und die zeigen eigentlich immer dasselbe.

Naja, bei mir nicht so unbedingt.

Ich glaube, ich habe auch ein, zwei Flakes gesetzt.

Was ich noch ganz interessant fand.

Jetzt muss ich nur sehen,

ob ich das wieder finde.

Wo waren das?

Es gab da noch ein ziemlich cooles.

Es gab einmal Pylama.

Ja, Pylama, stimmt.

Moment, ich muss die ganzen Geschichten so ein bisschen.

Vielleicht kann ich da noch irgendwas Neues erzählen.

Ja.

Und

ähm

ähm

ähm

ähm

ähm

ähm

ähm

ähm

ähm

ähm

ähm

ähm

ähm

ähm

ähm

Dann gab es auch noch irgendwie so ein

schönes Tool, um Codekomplexität

irgendwie zu messen.

Aha, aha.

Codekomplexität.

Ja, also tatsächlich den Namen wieder vergessen.

Also ich habe noch bei mir

mein eigenes Linting drin für bestimmte

Keywords, die ich da reinpacke.

Das ist auch noch ganz witzig.

Aha, okay.

Mit dem To-Do-Tree, nämlich bei Vscode, da kannst du

To-Do, Fix-Me, Hack, Bug,

To-Be-Discussed oder sowas, da kannst du

eigene Tags einbauen für dein Team und für dich,

die dann irgendwie mit eigenes noch gefleckt werden

und die du halt in einem To-Do-

Extra-Fenster dir anzeigen lassen kannst, um dann

zu bearbeiten und so.

Ich habe jetzt hier so ein To-Do-Ding,

da kann ich dann alle Sachen sehen direkt,

die ich mir eben markiert habe.

Ja, das ist ganz nett.

Okay, nee, das ist nett.

Ich habe es tatsächlich wiedergefunden.

Das Ding heißt Radon.

Oh, Radon.

Und kann man auch

mit ein paar Lama integrieren.

Genau wie PyCode-Style.

MyPy gibt es noch.

MyPy, ja.

PyDoc-Style.

Also MyPy ist ja auch mal so eine zweischneidige

Geschichte. Ich weiß nicht.

Aber ja,

kann man natürlich auch machen.

Aber was an diesem Radon

irgendwie ganz nett ist.

Es gibt auch Bandit, ist mir eingefallen.

Bandit ist ein Security-Linter.

Der lintet bestimmte Dinge, die vielleicht security-relevant sein könnten.

Ach okay, nee, das kann ich nicht.

Ähm.

Ja, was Radon nennt,

ist, dass er ermittelt

zum Beispiel, so ein Wert

nennt sich

Cyclomatic Complexity.

Ehrlich gesagt weiß ich nicht genau,

was das bedeutet.

Aber der misst halt sozusagen deine Crude-Komplexität.

Und du kannst

ihm halt sagen, okay,

wenn es so komplex ist, dann mach ein Fehler draus.

Und du kannst es halt auch

eventuell

so einbauen,

dass es halt,

du nicht einchecken kannst.

Ob man jetzt

Pre-Commit-Huxen mag oder nicht.

Das halt,

also wenn zum Beispiel,

also was letztens irgendjemand machen wollte,

war halt,

wenn sich Code geändert hat,

die Tests noch laufen, aber

irgendwas komplizierter geworden ist,

wenn irgendwas zu Reflection hat und die Komplexität

gestiegen ist, dann lässt sich das nicht einchecken.

Oder wenn dein Code

einfach zu kompliziert ist an einer bestimmten Stelle,

dann musst du ihn halt nochmal refactoren oder so.

Also, keine Ahnung.

Aber ich glaube, was auf jeden Fall ganz nett ist,

ist halt, wenn man mal so ein bisschen

einen Hinweis darauf kriegt, wo so

die fiesen Stellen im Allgemeinen sind.

Also ich finde es ja nett, wenn man irgendwie das Feature

nicht finishen könnte, wenn das Gitflo

nicht mehr geht, als wenn man dann tatsächlich

nicht mitmachen könnte, wenn man

Kurzmeier abmachen will, damit nichts kaputt geht.

Aber ja, gut.

Nee, ich mache das auch nicht.

Das ist echt so extrem.

Das muss man sonst noch nicht machen.

Ja, aber

das kann man sich auch mal angucken und ich fand es halt,

äh,

nett, dass es sowas überhaupt gibt.

War mir noch gar nicht so klar.

Ähm, ja, damit sind wir

eigentlich so durch die Linter und Dinger durch.

Ja.

Ja, wir haben unsere Entwicklungsgebung,

wir haben unser Terminal, wir haben

das System und die Software.

Nimmst du noch irgendeine andere Software zum Entwickeln sonst?

Äh.

Also mir reicht eigentlich immer der Editor, das Terminal

und, äh,

Notebooks.

Ich finde, bei Django-Projekten

sind schon wieder Notebooks.

Unfassbar hilfreich, ehrlich gesagt.

Also man kann ja da auch tatsächlich den, äh,

Django Shell aufmachen und hat dann dann direkt Zugriff halt

auf die Datenbankobjekte und so und das ist natürlich tatsächlich

sehr praktisch.

Ja. Ähm,

genau, ansonsten...

Weil sonst hätte man tatsächlich immer den Debugger starten müssen.

Aber der Debugger funktioniert gar nicht so schlecht.

Ich habe es tatsächlich letztens ein paar Mal ausprobiert hier mit dem

VS Code Debugger direkt zu arbeiten und das funktioniert

erschreckend gut.

Achso, ich benutze

noch so einen Zeitmanager.

Ja, VK benutze ich manchmal.

Da kann ich genau checken, welche Projektzeitungen...

Ja, sowas benutze ich auch.

Aber ich habe dafür verwende ich normalerweise Toggle.

Ähm...

Checkt das auch automatisch mit, welche

IDE du gerade nimmst oder benutzt

oder so? Welches Projekt du hast?

Das ist nämlich schön, weil ich sehe nämlich direkt, welches Projekt ich benutze dann.

Also je nachdem, welchen Editor ich aufhabe

und, ähm, ja,

in welcher Entwicklungsumgebung ich gerade bin oder ob ich mal

auch im Notebook arbeite und der ordnet das

direkt automatisch den richtigen Projekten zu. Das kann ich natürlich noch

so ein bisschen konfigurieren im Hintergrund.

Und dann habe ich direkt quasi meine Zeit zusammengefasst.

Das ist ganz nett.

Ja, okay. Aber das erfasst natürlich auch nur

dann, wenn du halt irgendwie am Editor sitzt.

Aber das bei mir ist oft auch so, dass ich...

Nein, nicht nur.

Das passt auch die anderen Programme. Also ich kann das auch so

einstellen. Ja, aber wenn du am Rechner sitzt.

Aber das erfasst halt nicht, wenn du da sitzt und

ein ER-Diagramm malst oder

auf und ab läufst und über irgendwas nachdenkst.

Ja, das stimmt natürlich. Aber das geht ja nicht darum, dass du jetzt

daraus dann komplett abbrechen.

Sondern einfach nur so ein bisschen

einen Überblick dafasst, welchen Projekten verbringst du so

wie viel Editor-Time oder so.

Ja, okay.

Ungefähr, wie viel du am Tag dann tatsächlich

ideal gecodet hast oder wie viel du geschafft hast.

Und dann kannst du das auch ein bisschen angucken.

Wo du gerade ERM-Diagramm gesagt hast,

da gibt es ja sowas Tolles, was ich ja letztens gesehen habe,

mit dem man ganz tolle ERM-Diagramme malen kann.

Mhm.

Wie heißt denn das nochmal? Graphics, glaube ich.

Graphics, ja.

Das ist...

Ja, wobei das ist halt nur ein Backend.

Ich glaube, es gibt auch noch andere.

Ja, aber das fand ich ganz praktisch. Das kann man einfach auf seine Django-Modelle schicken

und dann macht es dann direkt automatisch ein ERM-Diagramm draus.

Wunderbar.

Kommando-Teile, bam.

Genau, das Manage-Py kann das schon für Django-Geschichten.

Ja, Manage-Py, Graph-Models

und dann Teilnahme oder so.

Genau.

Ja, Entwicklungsumgebung.

Haben wir noch was vergessen?

Sachen zu den Prettier,

irgendwas kann man noch anmachen.

Dass man so ein bisschen schönere Code-Formatierung macht,

das ist so ein bisschen wie Ninting, aber

das benutze ich meistens tatsächlich nicht unbedingt, nur für Python.

Aber für diese ganzen Web-Geschichten,

für HTML-Files

oder JSON oder

JavaScript

oder andere Configs, macht der automatisch das

ein bisschen hübscher, wenn man

schreibt zum Beispiel.

Kann man sich ja überlegen. Man kann ja Snippets bauen oder man kann sich

automatisch seine Styles dann

direkt vorgeben lassen. Da muss man einfach nur drunter

tippen und hat automatisch

eingestellt. Das finde ich immer ganz nett.

Wie lange ist deine Settings, Jason, in VS Code?

Das weiß ich ehrlich gesagt

gar nicht. Ich kann hier gerade mal nachgucken.

Hm, geht's gut?

Wo sehe ich das?

Du kannst hier öffnen. Bei mir ist

Control-Komma.

Also ich sehe hier

Command-Komma wahrscheinlich.

Das sind die Settings. Und dann

wo muss ich da?

Da ist irgendwo JSON angezeigt, in der Ecke.

Aha. Also mir macht das Jason.

Ich glaube, ich habe aber das rebindet tatsächlich,

dass er direkt

das JSON aufmacht.

Ja, okay. Also ich kann

das hier nicht so direkt sehen.

Ist das nicht das File?

Doch.

Nee, keine Ahnung.

Ja, egal. Ich habe schöne

vier Dateien runtergecode. Ich bin ganz

schön darauf, dass ich immer wieder umstiche und gucke.

Was am nervigsten war tatsächlich,

mit Windows und Linux und

quer zusammenzuarbeiten, wo man nicht immer

darauf achtet, ist tatsächlich, dass

man die Line-Feed

ändern muss, anpassen muss, dass man,

wenn man die Dateien speichert, das richtige

Format wählt. Und das sollte man vielleicht dann

direkt, wenn man übergreifend

arbeitet, so einstellen, dass das so gespeichert wird,

wie auf Linux oder Mac-Maschinen, weil sonst

sind die anderen Leute ein bisschen genervt.

Ja, ja, ja, ja.

Zu Recht.

Ja, sieht man ja auch alles nicht und kann man nicht mehr richtig lesen.

Das ist schon blöd.

Ja, was ansonsten

halt noch zum Entwickeln

irgendwie total

wichtig ist, ist halt so

einfach Tools, die halt

auf der Kommandozeile

sein sollten und halt total hilfreich

sind.

Aber...

Wetteranzeigen, YouTube-Videos direkt in der

Konsole abspielen und

auf dem Server

JPEGs angucken.

Ja, aber so Dinge,

die einem halt

irgendwie so das Leben auf der Shell erleichtern.

Und also

was ich da halt auch interessant finde,

das ist ja so ein Trend in letzter Zeit, dass man halt

irgendwie immer so alte, abgehangene Tools

anguckt und da irgendwie

vielleicht eine neue Implementation schreibt,

die ein bisschen...

schneller ist oder ein bisschen besseres Interface

hat oder so. Und da sind in letzter Zeit

ein paar sehr schöne Sachen rausgekommen,

die man dann auch gerne mal in Rust oder in Go schreibt.

Und

ja,

da gibt's

tolle Sachen. Also zum Beispiel ein Tool, was ich

in letzter Zeit entdeckt habe,

was halt

nicht so richtig geflasht, das war echt gut,

ist FZF.

Ah ja, stimmt, das kann man auch mit FISH kombinieren.

Ja, ja, genau.

Und dann

stellen Stern und dann

macht es automatisch irgendwie eine Suche

rekursiv

in einem Dateisystem.

Also das sucht im Grunde...

Außerdem kann man beliebige Sachen irgendwie

reinpipen, so via

StandardIn.

Und dann macht es da drauf halt

Suche.

So Fuzzy-Suche.

man kann jetzt einfach Buchstaben eingeben

und dann sucht es halt die Dinge, die da am eher nächsten

sind. Und das funktioniert

ziemlich, ziemlich gut. Und es zeigt

es halt, während es läuft, schon an.

Das heißt, man hat so ein eingebautes Preview und

man muss es halt mal ausprobieren. Das ist wirklich,

wenn man das ein paar Mal verwendet hat, so wow.

Warum ist da vorher eigentlich noch nie jemand auf die Idee gekommen,

das so zu machen? Das ist total cool.

Und

gerade in Kombination jetzt mit zum Beispiel

einem schnelleren FIND, also weil FIND

ist halt auch so eins von diesen alten Tools, die

eigentlich gar nicht so geil sind.

Und da gibt's ein neueres, nennt sich FD.

Und

FZF plus FDF.

FZF plus FD ist unfassbar schnell.

Und man kann damit halt super

irgendwie auch in großen

Projekten irgendwie Dinge so fortfinden und so.

Und dann gibt's halt, man da auch,

kann man dann auch irgendwie gleich ein Vorschau-Ding

mit einbauen. Und dann,

also ich glaub, Standard-Ding

ist halt irgendwie Cut, was da verwendet wird oder so.

Aber das sieht dann halt so ein bisschen langweilig aus.

Aber es gibt halt auch irgendwie

ein neues Cut.

Das

nennt sich Butt.

Und das ist halt auch so

eins von diesen neuen Tools. Und das ist

halt, kann auch Syntax-Highlighting für alle möglichen

unterschiedlichen

Arten von Lateinern, also JSON oder

weiß ich nicht, eben Python, alle möglichen

Programmiersprachen. Und das koloriert

dann halt die Preview auch, sodass du halt

kannst dir Sachen suchen. Und wenn du dann mit dem Cursor runterläufst,

dann kriegst du halt die Preview angezeigt.

Und das zeigt es dann halt direkt mit Syntax-Highlighting und so.

Sieht voll toll aus.

Also das heißt quasi FZF

kombiniert mit FD und Butt

ist halt echt ziemlich cool.

Und genau, Grab auch. Gibt's auch

ein Ding, das ist Schrift-Grab.

Ein gutes Stück schneller.

Und ein besseres Interface.

Und ja, das ist auch

schön. Lass mich mal überlegen,

was gibt's denn noch?

Also das Prompt sollte man vielleicht auch cooler

anbieten. Obwohl du jetzt sagst, du hast das

ausgemacht?

Ja, nee, ich hab tatsächlich auch...

Also Prompt ist immer so eine zwei-schleinige.

Das hab ich auch nicht tatsächlich

auf allen Rechnern gleich.

Weil wenn das zu fett wird, dann nervt mich das.

Und gerade, wenn man jetzt auf GitLab

zum Beispiel irgendwie ein Merch-Request

macht und

dann

also den automatisch

generierten benutzt,

um dann irgendwas zu tun, dann wird halt das Prompt

unter Umständen sehr, sehr lang, weil diese generierten Dinger sind halt

immer so lang. Ja, also man kann tatsächlich

die Verzeichnisnamenstrukturen zum Beispiel schon mal sehr viel

abkürzen, dass er relativ eine Anfangsbuchstaben

zeigt und so, dass man relativ den Tree ein bisschen

kürzer fasst. Was ich sehr gerne mag im Prompt

ist, wenn ich ein Git-Repo hab, dass er einen Status

hat, wie viele Changes ich noch

machen muss oder sowas. Also

wo ich halt stehe, wie viele Commits es gibt und

wie viel ich weg oder

pullen muss oder so, damit das gleicht und

ob ich die schon committet hab und so, das find ich sehr, sehr, sehr

angenehm.

Ja, also will ich auch gar nicht mehr ohne.

Also kann ich mir auch gar nicht mehr vorstellen.

Ups.

Ja, was man

dazu auch noch erwähnen sollte, ist, dass es halt

für Shells auch normalerweise, also zumindest

für ZSH und

Phish gibt's halt noch

Paketmanager.

Also OmyZSH

oder OmyPhish.

Und da kommen dann halt auch solche Dinge

mit so Streams und so, die man

installieren kann, wo dann halt Leute sich Gedanken

gemacht haben, wie man...

Also für meine Phish ist es auch Dracula.

Ah, okay.

Und das ist halt sehr schön, wenn da irgendwie die Tour Dracula ist und die Shell ist Dracula

und so, das ist alles, das macht Spaß.

Dann, ja.

Also was ich mal sehr gerne mag,

auch ich mach bestimmte Verzeichnisse,

lange Verzeichnisse, ersetze ich

durch ein Icon oder sowas, wenn ich halt

eine Wolke für die Cloud oder

das ist auch ganz nett.

Home kennt man ja mit der Tilde,

aber ja, sowas halt, ne, in Kombination

ein bisschen, kann man überlegen, was eine Uhrzeit will,

Benutzernamen, Rechnername, irgendwie.

Ja, ich seh das bei dir, zum Beispiel

dieses Prompt, der wäre schon zu lang und

ich mach das ja meistens so, ich hab's

auf jedem Monitor mindestens mal so zwei

Shells irgendwie.

Ja, das mag ich nicht.

Okay, genau, aber dann ist es halt nicht so ein,

dann ist es natürlich nicht so ein Problem mit dem langen

Prompt, aber wenn du jetzt

dir vorstellst, das wäre nur die Hälfte am Platz,

dann kriegt man da dann schon irgendwann

ein Problem. Andere Leute machen das so, dass sie das halt

dann umbrechen und dann das Prompt

über dem Cursor haben.

Ich kann mich da auch nicht so richtig dran gewöhnen.

Ja, ich hab zum Beispiel auch immer vorgestellt, was das jetzt gerade für

ein Shell ist, ob das ein Fisch ist, ein PowerShell oder

WSL oder so.

Ja.

Aber ja.

Ja, das gehört auf jeden Fall aber auch dazu, zu der

Entwicklungsumgebung. Ja, auf jeden Fall.

Ja, also generell zu den ganzen Aliasen,

so, was macht ihr gerade? Ich hab

so einen lustigen Artikel gefunden

von einem Freund von mir, der zeigte, dass Leute sich

Shell-Skripte geschrieben haben für alles mögliche, also

wenn er zum Beispiel abends um halb neun

auf dem Rechner schlank ist, dann hat er automatisch an seine Freundin

eine Nachricht geschickt aus einem Random-Stream,

warum er heute später kommt oder sowas

oder alles drum. Wenn er morgens noch nicht um Viertel vor neun

dran saß, dann hat er automatisch

eine E-Mail an seinen Arbeitgeber oder

einen Kunden verschickt, Hangover

und so. Da kann man lustige Sachen

mitbauen, irgendwelche Cron-Jobs einrichten und so.

Naja.

Ja, genau. Ansonsten, ah,

das einzige Command-Line-Tool, was halt

auch noch ziemlich wichtig ist.

Weiß nicht, aber das können wir ja eigentlich auch nicht so richtig

in Detail. Okay, das ist T-Max,

halt so. Ja.

Ich weiß nicht, ob du das verwendest

so im Alltag oft,

aber... Du meinst jetzt, dass

Android die... Nee, nee, nee,

dass man sozusagen einmal noch

den Shell-Multiplexer hat

und dann... Ach so.

Damit kannst du ja auch zum Beispiel auf allen

und auf unterschiedlichen

Maschinen halt gleich einen Shell-Sinn

kriegen, wenn du das richtig

findest oder es halt sozusagen

sich auf einem Rechner einloggst und dann halt

alle Shells wieder so hast, wie du sie vorher hattest.

Ja. Aber, naja, gut.

Also, das ist nochmal eigentlich... Ach, jetzt weiß ich, was du meinst.

Also, der speichert das Session quasi von dem einzelnen...

Ja, ja, genau. Ja, okay.

Ja, also, benutzt du irgendwas für

dein... Also, Thermos...

Ja.

Ich benutze zum Beispiel Thermos noch für Android. Das ist vielleicht gar nicht so schlecht.

Das kann auch ein bisschen rumkonfigurieren.

Da kann man nämlich dann tatsächlich, wenn man remote unterwegs

ist, mal kurz irgendwo dran...

Was benutzt du da?

Bist du ja der Apple-Familie, hab ich gehört.

Du meinst als Shell? Ja, ja.

Oder SSH oder... Ja, zum Beispiel.

Wie auch immer.

Und Terminal. Also, auf dem

iOS benutze ich da fast...

Hab ich früher mal... Gab's

iSSH oder so verwendet, aber das

mache ich eigentlich praktisch nicht mehr.

Warum eigentlich nicht?

Ja, aber das ist einfach...

Naja.

Was es gibt, was für mobile

Geschichten ganz praktisch ist, was man vielleicht noch...

Also, gerade für Zugfahrten.

Also, Zugfahren in Deutschland ist ja

irgendwie immer so...

Klar, das mit Internet ist halt da nicht so richtig.

Und...

Ab und zu hat man ja schon mal

Netz, ne? Wenn man dann so

irgendwie, keine Ahnung,

an der Autobahn vorbeikommt oder

irgendwie an der Stadt oder so, dann ist ja

manchmal schon so für einen kurzen Moment wieder Netz da.

Und wenn man jetzt

irgendwie SSH verwendet,

also eben TMAX hilft einem dann natürlich

auch oder irgendwas in der Richtung, TMAX oder Screen

oder so, wenn dann die Session wegfliegt, kann man sie halt

wieder damit herholen.

Aber was eigentlich noch viel cooler ist, ist halt

dass es

es gibt halt so,

das nennt sich MOSH.

Ich guck mal gerade, ob ich

jetzt nicht Unsinn erzähle, aber das müsste eigentlich...

Das ist halt

sozusagen eine mobile

Shell und die geht halt nicht über TCP.

Weil TCP funktioniert halt gar nicht gut,

wenn da irgendwie ein Package-Schloss ist.

Und jetzt immer, wenn man mit der Bahn durch die Gegend fährt oder so,

dann hat man halt die ganze Zeit irgendwie komisch

Package-Schloss, Verbindung ist weg.

Salzame Dinge passieren.

Ja, Signalstörungen,

Züge bleiben liegen,

keine Ahnung, Schildkröten regnen,

was ich nicht von mir will.

Und du kannst für solche Sachen

fast nicht dauern.

Und das heißt,

eine TCP-basierte

SSH-Session ist halt einfach nicht das, was man

haben will, sondern was man haben möchte, ist das

UDP-basierte MOSH und das funktioniert

super.

Da geht deutlich mehr durch, das funktioniert

halt unter noch deutlich schlechteren Bedingungen als

SSH.

Und das Ding bleibt halt die ganze

Zeit quasi...

Also, wenn man mal kurz kein Netz hat,

dann geht halt nichts, aber soweit man ein Netz hat,

geht da eigentlich sofort wieder was durch,

ohne dass man irgendwie neu connecten muss und diesen ganzen

Kram.

Ja, das ist schön.

Ja.

Ja, ja.

Ich überlege, haben wir was vergessen?

Also, eure Entwicklungsumgebung sollte jetzt relativ

komplett sein, oder?

So langsam.

Ich überlege auch gerade, ich glaube, müsste eigentlich

so ziemlich alles...

läuft.

...mit drin sein, ja.

Wir haben bestimmt irgendwas vergessen, schreibt uns das an unsere

E-Mail, hallo.atpythonpodcast.de

Genau, ja.

Ansonsten, ja, ich weiß nicht,

dann sind wir damit durch.

Haben wir noch irgendwie sowas wie Pics oder so?

Ja, ich wollte wieder so einen

Anfänger-Pic machen und da habe ich

pprint gefunden.

Dataprintpress hier für JSON.

Also, ich habe irgendwie Sachen aus dem Server gepasst und

da kam immer unlesig,

ich hatte Unfug raus und ich musste mich totsuchen oder halt

immer fein.

Dann pprettyprint.

Macht man dann einfach, importiert man das,

pprint und macht dann ein extra p für das print

und dann hat man lesbare

JSON-Daten beispielsweise, die man von der AP

zurückbekommt.

Sehr schön.

Autoformat, ein bisschen Autointendation und sowas.

Ja,

ich habe ein ganz interessantes,

das ist halt auch eher so, dass

man es ein bisschen mit Vorsicht

anfassen vielleicht,

ist so ein

ähm,

das habe ich in Zusammenhang mit

Poetry Run-Skripten irgendwie

entdeckt, als ich auf der Suche war nach,

okay, ich möchte jetzt die Ausgabe von manchen

Funktionen, die ich da irgendwie

ausführe, so ein bisschen bunter aussehen lassen.

Dann gibt es da ja

diverse Tools, die das mit den

ANSI-Colors in der Stelle irgendwie so

einfacher machen.

Und dann hatte ich dieses Problem, dafür habe ich

dann Zeugs importiert

und dann habe ich da auch noch

irgendwie Command-Line-Organisationen

Optionen und so mit reingeben

wollen und dann habe ich mit Click angefangen

und dann bin ich aber irgendwie darauf gestolpert,

dass es so ein Ding gibt, das das irgendwie integriert

und das nennt sich Typer. Das ist ein relativ neues Ding,

ist noch irgendwie alles sehr frisch.

Ist irgendwie von den gleichen Berliner NLP-Leuten,

die halt auch so Spacey und so machen, glaube ich.

Oder in dem Umfeld ist das, da kommt das irgendwo her.

Und das Ding

generiert

sozusagen deine,

einen Command-Line-Interface

aus den, ähm,

aus Type-Annotations.

Also gibt es sozusagen,

äh, den Funktionen,

die halt die Entry-Points sind, äh,

gibst du halt, äh,

Type-Annotations mit

und du kriegst halt,

wenn du die aufrufst von außen

mit minus H oder so, kriegst du eine Erklärung,

was du dann noch so an Argumenten mitgeben kannst.

Und das ist natürlich praktisch, weil da muss man

halt Dinge nicht doppelt, dreifach einschreiben.

Wenn man sich das schon angewöhnt, schon brav Type-Annotations mit

in seinen Code einzubauen und Docs Wings, dann hat man tatsächlich

eine vernünftige Help-Funktion.

Ja, und eben, man schreibt dann halt nicht Prim,

sondern man schreibt dann halt Type-Annotations oder sowas

an, dem kann man halt auch sagen,

und das mach hier, das sind mal Rot und das

farbig und das sind Fette und das geht auch alles.

Sodass man halt diese Probleme auch erledigt hat.

Das heißt, man muss halt nur noch eine Abhängigkeit

und damit einen Großteil

dieser ganzen Geschichten erschlagen.

Und das ist natürlich schon auch sehr nett.

Deswegen picke ich das mal, kann man sich ja mal angucken.

Ja.

Cool. Ja, ich hoffe, ihr habt eure Entwicklungsumgebung fertig

und seid zufrieden mit dem, was ihr da macht.

Schreibt uns, wenn ihr noch mehr wissen wollt

oder wenn ihr irgendwelche anderen Meinungen habt

oder findet, dass wir total Unsinn erzählt haben.

Das machen wir natürlich auch mal ein Minuten wieder.

Ja, seht uns demnächst bald auf irgendwelchen Events hier,

vor allen Dingen in der Rheinland-Decke und vielleicht

auf der Europice in Dublin.

Ja, ich hoffe, dass ihr jetzt wieder zugehört habt.

Wir sind ganz stolz auf unsere Abonnenten.

Ich glaube, wir haben beinahe tausend Abonnenten

jetzt über die ganze Zeit.

War alles zählt, ja, vielleicht, könnte sein.

Das ist doch der Wahnsinn. Vielen Dank fürs Zuhören.

Ja, bleibt uns gewogen, egal zu welcher

Tages-Nacht-Zeit ihr uns hört.

Und bis zur nächsten Folge.

Alles klar. Tschüss.