Transcript: Python Entwicklungsumgebung 2020 Edition
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.