Transkript: Python Entwicklungsumgebung 2020 Edition
Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.
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.
Sieht auf jeden Fall beeindruckend aus mit so drei Monitoren und vielen blinkenden Lichtern.
Es gibt ja sogar auch einen Bonsai-Baum und einen Kaktus.
Wow.
Was auch immer die in der Taliche machen, aber ja.
Ja, Entwicklungsumgebung heute.
Wir haben euch leider ein bisschen warten lassen mit der Episode.
Wir sind gerade sehr eingespannt gewesen in letzter Zeit.
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äßiger Folgen aufzunehmen.
Also seid uns nicht böse und hört uns nicht mehr.
Spontan ist halt einfach irgendwie alles auf einmal, was so passiert.
Ja, wie es immer so ist.
Naja, wir lassen uns davon nicht abhalten und sind weiterhin gute Dinge.
Ja, genau.
Also, ja, ich meine, wie kam wir eigentlich auf das Thema?
Ich glaube, ah, ja, richtig.
Apple hat mal wieder, das ist natürlich, das könnte jetzt vielleicht für Leute so ein bisschen langweilig sein, die jetzt keine Apple-Hardware verwenden.
Ich erzähle gleich ja noch was zu was an.
Apple hat halt Ende des Jahres, äh 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 so 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 Touchbar.
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.
Das ist schon eine ganze Weile.
Also ich meine
es nicht, ich habe immer alle möglichen Maschinen hier stehen, meinte ich.
Vorher war ich eher auf Linux, aber das Problem mit Linux ist dann halt irgendwie, vor allen Dingen, wenn man es 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 einen Monitor an und dann passieren seltsame Dinge und irgendwie dieses ACPI, ACPI, ich weiß nicht genau, dieses Einschlaf, Aufwach-Ding.
Es hat auch nie so richtig toll funktioniert.
Und man muss halt irgendwie dauernd seinen Kernel neu kompilieren und so.
Und das war irgendwie irgendwie.
Ja, ich habe einige G-Versuche auch gemacht unter verschiedenen Linux-Distributionen, die jedes Mal mich nicht überzeugt haben, dass außerhalb von Servergebungen oder sowas einzusetzen zu wollen.
Ich werde von den Leuten im Computerclub immer so ein bisschen belächelt.
Ich habe tatsächlich ein, zwei Windows-Maschinen hier.
So was.
Ich meine, das ist ja auch nur wirklich sehr, also das ist ja, wie kommt es denn dazu?
Naja, gut, vielleicht
unter sich oder so, ja.
Nee, gut, ich kann durchaus verstehen.
Also, was ich auch mal höre, ich habe auch jetzt in letzter Zeit nochmal Windows auf dem Laptop gehabt.
Und was auch sonst Leute sagen, ist das alles nicht mehr so furchtbar schlimm.
Man kann also mittlerweile auch Windows ganz gut als Entwicklungsumgebung verwenden.
Dachte, erzähle ich euch auch gleich was, wie man das
machen kann.
Ja, aber also ja, Linux ist eigentlich schon toll, aber ich dachte mir, 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 einen Laptop auch zu was anderem verwenden will, außer jetzt entwickelt oder irgendwie.
Multimedia.
Ja.
Oder 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 irgendwann 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 Klubfeld sehr, sehr verbreitet, dass Leute da halt Macs verwenden.
Mein Hauptgrund
für Windows ist tatsächlich die Spielerei.
Ich bin ein leidenschaftlich, spiele ich gerne rum irgendwelche Spiele.
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 nutzt gerne Steam, wenn ich jetzt auch noch 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 er halt einfach auf deinem Fernseher zu Hause im Wohnzimmer und dann kannst du da mit Controllern mit deinen Kumpels vorsitzen und irgendwelche Indie-Games stocken.
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.
So einen lüftenden, lauten, blinkenden Kasten irgendwie im Wohnzimmer stehen haben, das will jetzt vielleicht auch nicht.
Aber ich möchte natürlich die Modding-Fähigkeit 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.
Das kriege ich alles nicht hin und ich habe auch keine Lust da, den ganzen großen Herstellern immer hinterher zu kaufen.
Aber naja, das ist ja so eine andere Geschichte.
Wir wollten heute ja Entwicklungsumgebung.
Genau, genau, genau.
Ja, aber ich will da mal noch gar nicht mit meiner Notebook.
Sorry.
Deine Story ist ein Note-Story.
Ich mache aber trotzdem noch einen kleinen Break.
Okay.
Weil eure Fragen, Anmerkungen, Kommentare und so weiter, könnt ihr einen Hallo at Python-Podcast hier schicken.
Das wollte ich eigentlich auch noch sagen.
Okay.
Hast du losgelegt, ja.
Ja, sorry.
Und wir wollten noch so ein bisschen angeben, weil wir haben jetzt bei einigen Abonnenten.
Vielen Dank dafür, dass ihr alle so fleißig zuhört.
Ich bin überrascht, das ist 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 Py-DDF-Treffen, war auch jemand da, der meinte, äh, von den Pi-DDF-Treffen erfahren über den Podcasts.
Das wollte ich leider nicht.
Das hat einen guten Grund.
Also ja, genau.
Das war eine erfreuliche Entwicklung.
Ja, aber wir erwarten mit genau News aus der Szene und so, bevor wir jetzt in das Ding machen.
Ach so, okay.
Ich mach mal so ein Chapter-Mark hier, das muss ich jetzt sagen.
Ich weiß gar nicht genau, ob es da irgendwas Besonderes gab.
Ich habe jetzt.
Okay, die Chapter-Markt, die haben gerade irgendwie überhaupt nicht funktioniert.
Ja, hat nicht so richtig funktioniert.
Ja, ich habe auch mal 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 gut.
Naja, muss man halt hinterher nochmal nacharbeiten.
Genau, also nee, so wirklich interessante, tolle Neuigkeiten.
Python 2 ist tot.
Achso, ja, natürlich, okay.
Wir sind noch jetzt im neuen Jahr, wir haben doch die erste Folge diesen Jahres.
Ja, 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.
Ja, da können die ganzen Leute endlich, ja, man könnte jetzt anfangen, seine Python 23-Amstellungen mal in Gänge zu bringen.
Da haben so ein paar Anfang ein, 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 paar DDF-Treffen ganz interessanter.
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 mach 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 irgendwem habe, habe, betreibe ich meine Systeme einfach weiter.
Aber es gibt dann 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 45, 0, 45, ich weiß nicht, 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.
Ne, du brauchst nicht installieren, du hast dir selber geschrieben.
Ja, gut, also die keine Abhängigkeiten so sonst irgendwas machen, ist zu schwierig.
Die Bibliothek ist groß.
Vielleicht geht da ein bisschen was an.
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.
Ansonsten, genau, ich weiß nicht, wie lange jetzt 3.8.1 raus ist.
Auch schon eine ganze Zeit.
Also die erste Minor Version von A3.
Also 3.8 verwende ich jetzt auch tatsächlich schon bei den meisten Sachen, die ich so mache.
Und es funktioniert gut.
Die meisten, also normalerweise hat man ja immer noch so Probleme, dass es gewisse Bibliotheken gibt, die so ein bisschen hinterherhinken.
Es gibt einen ganz bösen Bug bei 3.8 und Jupyter und Tornado.
Ich habe noch gar nicht geguckt, ob bei 3.8.1 weg ist.
Ich habe das nämlich manuell gepnixt.
Man konnte nämlich die Jupyter-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 Zeile eingefügt hat, das war ein Bug bei Async, irgendwas, dann ging es wieder.
Also das konnte man manuell beheben, aber ja.
Ja.
Ja, genau, also das, 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.
Ja, hatten wir noch irgendwelche Dinge, die so.
Gehst du zur EuroPython?
Ja, gute Frage.
Ich denke drüber nach.
Ich überlege auch, also die Frage wäre halt, entweder nach Porto halt zur Django-Con-Oba irgendwie fahren oder halt EuroPython.
Dublin.
Ja, auch interessant, aber auf jeden Fall irgendwie auf eine von den beiden
werde ich auf jeden Fall.
Vielleicht gehen wir ja zusammen hinten auf einen von beiden Kommentaren.
Also dann würde natürlich auf die EuroPython besser passen und dann, äh, ja.
Okay.
Ach, ich muss aber irgendwann auf die DjangoCon.
Naja.
Werde ich auch nochmal irgendwie schaffen.
Aber ja, das ist auf jeden Fall, es gibt eine Menge interessante Konferenzen 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.
Ne, die ist ja zusammen.
Ja, ich dachte, die sind parallel.
Ja, halt in einem Gebäude.
Ja, okay, das heißt, man kann hältst herlaufen.
Nee, das sind keine Getrennten, das ist eine Konferenz.
Achso.
Ich dachte tatsächlich, das wären zwei wieder aufgeklärt und keine Ahnung.
Na gut.
Ja.
Da seht ihr uns.
Wir sehen uns noch im Python Barcamp.
Oh ja, das sitzt im nächsten Köln, ne?
Ja.
Genau, das ist eine tolle Veranstaltung.
Das hätte es halt schon wieder so ein bisschen ausgebucht.
Ja, ne?
Es gab 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 seid, dann schaut doch nochmal
da noch.
Ja, genau.
Aber ich glaube, auch bei dem Python Barcamp, Pythoncamp in Köln ist es so, dass halt immer noch so ein bisschen Kontingente freigegeben werden.
Ich glaube, das zweite Kontingent 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.
Wir nehmen jetzt übrigens gerade auf, am 3.
Februar ist heute, glaube ich, ne?
Ja.
Ja, okay.
Ja, das ist natürlich ein bisschen doof dann, wenn man da eine Veranstaltung bewuppt, wo man gar nicht mehr.
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 gerade mehr, wie ich das sehe, aber
das nächste Mal.
Genau, muss man schnell sein.
Aber jetzt vielleicht doch dann unser Thema.
Ja, Thema Entwicklungsumgebung, genau.
Und ich würde natürlich irgendwie gerne aufs Checking kommen, ganz unten anfangen bei Hardware.
Ja, okay.
Ja, und zwar, genau.
Ja, ich bin irgendwann mal auf dem Meck umgestiegen.
Kann ich ja nicht so ganz verstehen.
Ja, ich meine, ich habe halt dieses Problem mit dem Spielen nicht so.
Ich hatte es 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 so mit dem Zaun verjahrt.
Ja, es war auch nicht so schlimm, dass es.
Ein Erwachsenenstamtisch, wo die Leute alle hinkommen.
Ah, okay.
Ja, das.
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 deswegen darf ich das heute nicht mehr.
Das ist bei mir gar nicht so.
Also ich hatte es zwar schon gern 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 wird es auf jeden Fall gewesen sein.
Ja, das hat einfach überhaupt nicht mehr funktioniert und jetzt habe ich es inzwischen aufgegeben und denke, naja, egal.
Aber man kann ja auch.
Aber nicht gewonnen.
Man kann ja auch irgendwann andere interessante Dinge an Computern tun insofern.
Und genau, insofern ist es für mich mit Mac nicht so ein Problem.
Und was halt an den Dingern sendet, ist es halt, ja, die funktionieren halt eigentlich einfach so und sie haben halt eine schöne Shell, so wie ein Linux-System halt auch.
Wir machen erstmal noch ein bisschen.
Kann man um beliebige Shells verwenden.
Aber das, was halt sozusagen damals Standard war, ist eine uralte Bash.
Und dann war es zehn Jahre, über zehn Jahre lang weiterhin eine uralte Version einer Bash.
Also, ja, muss man auch damals schon irgendwie was anderes installieren, wenn man auch nicht schneller haben wollte.
Für alle
Leute von euch, die Windows nutzen, bitte nutzt nicht CMD, sondern nutzt die PowerShell.
Die ist übrigens auch mittlerweile für Linux-Gript.
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.
Ja, also genau, ja, PowerShell habe ich auch schon gehört, gute Sachen drü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 langer 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, verwende ich die ZSH, eigentlich immer auch als noch nicht Standard war.
Das ist auch deine Lieblingsschell?
Nee, ja doch, kann man sagen, eigentlich stimmt das schon, es wäre schon meine Lieblingsschell, aber momentan verwende ich nochmal eine andere.
Aha, weil ich dachte, jetzt, wo MacOS, wo Mac OS auf ZSH als Standard-Shell gewechselt ist, ich meine, das ist da mal so, dann ist das irgendwie nicht mehr help genug für mich.
Da muss ich mal was Neues gucken, ob es da nicht.
Und tatsächlich einer, also ich habe dann jetzt einfach mal mit dem neuen neuen Rechner halt dann auch eine neue Shell genommen, und zwar Fisch.
Ja, du hast ja auch Fisch genommen.
Ja, wollte ich mich gerade auch sagen.
Fisch ist toll, ja.
Es ist eine schöne, 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 und ich so, warum nicht?
Achso, 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.
Ja.
Also ich benutze tatsächlich Fisch nur für meine Server und für mein WSL, also Windows-Sub-System Linux.
Und sonst eher nicht.
Also auf dem Windows funktioniert das noch nicht so leider nicht so richtig.
Also auf nativen Windows.
Da benutze ich dann tatsächlich meistens PowerShell.
Ah, okay.
Ja, also eigentlich nur PowerShell sonst.
Ja.
Ja.
Das geht übrigens auch unter Windows.
Ihr könnt euch unter Windows super schöne Terminal-Programme benutzen.
Es gibt sogar ein, was neu entwickelt wird gerade von Microsoft, das gar nicht so schlecht aussieht.
Ich finde, das ist noch ein bisschen früh in der Entwicklung, da fehlen mir noch so ein paar Features.
Ich mag immer so Guake-Style-Terminals, die so von oben reinscrollen oder so.
Und da gibt es dann zum Beispiel den 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 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 wie weit.
Ja, ich sehe auch Leute, dass sie dann halt einfach die eingebaute Shell von ihrer IDE verwenden oder so, aber das ist schon so ein bisschen geht natürlich, aber.
Ja, auch das ist ja meistens dann eine Shell, eine Systemshell irgendwie, die eingebunden ist.
Ja, also genau.
Hast du ein Lieblings Terminal-Programm?
Ja, auf dem Mac auf jeden Fall.
Da ist es Item 2.
Und ja, das eingebaute Terminal von Mac OS X ist nicht mehr so schlecht oder muss ich mich daran gewöhnen, macOS.
Ist nicht so schlecht oder war früher besser geworden, sagen wir mal so.
Aber tatsächlich ist es nicht so wirklich vergleichbar mit dem, was Item 2 alles kann.
Die kann halt auch so tolle Sachen wie, die hat halt eine Shell-Integoration halt zu ZSH oder auch Officiell 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, kopier mir mal einen Pfeil irgendwie irgendwo hin oder so.
Und das geht halt, also man kann halt Rechtsklick machen auf ein L, man macht LS, ja, und sieht halt ein Verzeichnislistiger und sagt halt irgendwie Rechtsklick da drauf, kopieren wir das mal irgendwo hin oder so.
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 so eine Shell selbst ein bisschen blöd wäre.
Oder man kann halt Bilder direkt drin anzeigen und so.
Also das Ding ist schon sehr nett.
Es hat auch eine sehr schöne T-MAX-Integration.
Und das, da kommen wir vielleicht auch noch später drauf.
Aber genau, ich wollte eigentlich, bevor wir jetzt nochmal so da in die, in die, äh, was verwendet man eigentlich für Programme-Richtung gehen, nochmal kurz auf die Hardware eingehen.
Kurz, bevor du das machst, müssen wir das Konsulthema kurz abschließen, weil uns das ja wieder rum.
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 FishShell 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 Hyper-JS, 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 im Bund machen und dann redet irgendwie ein Pokémon mit dir, wenn du tippst oder so.
Ich weiß es ja nicht.
Ich weiß es ja nicht.
Ich benutze es nicht.
Ja, und ansonsten das Neue von Windows ist relativ gut, das Windows-Terminal.
Aber wie gesagt, das ist noch Entwicklung.
Es ist, glaube ich, erst so ein Jahr, anderthalb Jahre jetzt überhaupt da.
Und mal gucken, Ende des Jahres wollte ich auf jeden Fall dem nochmal eine Chance geben.
Also es ist spätestens dann, wenn es einen Guacemodus hat, dann switch ich.
Okay.
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 das, 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-Chef oder so, ich weiß nicht mehr genau, von wie es Code.
Der hatte ein, äh, genau, der war als Interviewgast im Talk Python to me Podcast.
Und erzählte ja, ja, 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, äh, wie viele Prozent der Entwickler verwenden eigentlich Windows, dann verwenden das ganz viele, sonst über 90% 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-Sing-Pads.
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 sehr problematisch.
Wenn ich denke so, okay, also ja, warum ist das denn so?
Und bleiben diese 90% irgendwie noch bei uns, wenn irgendwie alle die, die sie dann eventuell um Hilfe fragen werden oder so, dann halt ihnen erzählen, wechseln mal dein 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 VS-Code überhaupt gibt.
Also WSL 2, also Windows hat es von Linux 2, das ist ja nativer Windows-Kernel, Linux-Kernel jetzt an 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 wird
da passieren wohl auch Dinger, ja, oder 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?
Ich weiß nicht, ob das jetzt nicht mehr so ist.
Wir machen heute eine Gleichwerbung.
Dinge am Aktienprozesson passiert.
Ja, wir müssen eigentlich mal gesponsert werden.
Also falls jemand von Microsoft oder von Apple oder von einer der anderen Firmen, die wir schon genannt haben, zuhört, also wir nehmen eure Spenden natürlich gerne an.
Also dann reden wir nochmal.
Du wolltest immer 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 so 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, 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 vielleicht gewohnt ist.
Also das war, ich bin gewechselt irgendwie, glaube ich, 2004 mit dem Power, Power, das Ding hieß irgendwie Power Mac K4 oder nicht, ich weiß es nicht genau, oder Powerbook K4, Powerbook K4 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, so, ich meine, gefühlt, der halbe Monitor biegt sich so durch.
Das ist halt nicht irgendwie so ein Bildschirm, sondern das ist mehr so wie so ein Blatt im Wind.
3004.
Ja, 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 Mondkraterlandschaft.
Ich keine Ahnung, warum?
Warum ist das so?
Ich meine, es ist einfach nur.
Ja, und es ist halt so wie die Unterseite von so einem Barthocker, ja.
Wo man dann offenbar niemand damit rechnet, dass man jemals runterguckt.
Aber bei einem Laptop, das dreht man schon mal um und dann ist halt und allein die so eine Mitzkeile.
Weil wenn man den Laptop umdreht und drunter guckt, sieht es aus wie ein Barthocker.
Nein, nein.
Die Plasti-Notebooks vorher sahen so aus.
Wenn du, äh, wenn du ein MacBook umdrehst, sieht das relativ sauer aus.
Also kannst du aufschrauben, es sieht von innen relativ sauber aus.
Das ist eine ästhetische Komponente.
Ja, aber es ist auch, das macht einen, 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 gute Küchenmesser oder so, wenn man das hat, das hat irgendwie eine andere Art, damit umzugehen, wenn man das, wenn das halbwegs stimmt oder wenn die ganze Zeit stumpfe Messer hat oder weiß ich nicht, irgendwie scharfkantige Laptops, die komische Geräusche von sich geben, wenn man sie aufhört, dass du klappt.
Das richtige Werk.
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 irgendwie auch noch überlegt, das irgendwie zu wechseln.
Das ist ja auch schon ein Premium-Anspruch.
Ja, das mag sein.
Das ist aber ich meine, wenn man den ganzen Tag davor sitzt, dann ist es halt, wenn man sich sozusagen überlegt, wie viel mehr muss ich jetzt ausgeben pro Minute oder pro Stunde, dann ist das alles egal im Grunde.
Dann will man eigentlich das, was am besten funktioniert.
Macht natürlich nur Sinn, wenn man das jetzt, wenn man da halt wirklich viel Zeit mit verbringt.
Wenn man das am Wochenende eine halbe Stunde mal aufklappt, dann ist es ja auch egal, dann kann es ruhig quietschen.
Aber ja, also für jemanden, der professionell entwickelt, dann für den sollte eigentlich, wenn er sich das überlegt, oder ich meine, gut, vielleicht erzähle ich ja, vielleicht habe ich mir das auch noch schön rationalisiert, aber ich denke.
Dann hast du dir so schön deine Fanwesten aufgebaut, Joch.
Ja, das ist alles versaut.
Dann sollte man eigentlich gucken, was ist das, was man, was am besten funktioniert.
Und ja, weil es lohnt sich dann eigentlich immer.
Und genau, umso härter hat es mich getroffen, dass Apple seit 2015 eigentlich keine ordentliche Laptop-Hardware mehr hergestellt hat.
Ja, das fand ich, das war schon, das war schon wieder.
Also Touchbar war echt ein Tiefschlag.
Vor allen Dingen, weil ich halt.
Die F-Tasten sind weg, es gibt eine Touchbar.
Also F-Tasten, das ist mir eigentlich alles egal.
Die Escape-Taste, das war für mich, das war für mich ein Riesenproblem, weil ich mir ja nicht.
Ja, tatsächlich.
Warum eine Ente?
Okay.
Hier das jetzt auch gar nicht als Ente erkannt, ehrlich gesagt.
Aber ja, Escape-Taste wie alle User sehr wichtig, weil man kann viele Dinge nicht.
Also das schaltet um zwischen Kommando-Modus und Editiermodus.
Und so ein Touch-Taste ist halt nicht das gleiche, weil die gibt einem kein Feedback darüber, ob man die jetzt gedruckt 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 Doppelddruck ausgelöst und man ist wieder im gleichen Modus wie vorher.
Also es funktioniert überhaupt gar nicht.
Also es geht einfach nicht.
Und das heißt, ja, also die einzelne Alternative ist halt dann die Escape-Taste umzubelegen.
Ich habe die dann halt auf Capslock gelegt.
Aber das hat mir halt so meine sonstige Benutzungserfahrung halt kaputt gemacht, weil ich habe ja teilweise sitze ich ja auch an einem stationären Rechner mit einer externen Tastatur.
Und auch da war es eigentlich total toll, dass man die gleichen Tastaturen verwenden kann, wie auf dem Laptop, auf dem Desktop, man hat immer die gleiche Umgebung, man hat immer Track-Tap hinternehmen und es 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 das.
Hat irgendein Designer das cool und fancy und hat gedacht, ey, was nutzt denn überhaupt so eine
komische Taste?
Ja, ja, ja, wahrscheinlich, aber das, das, äh, das war.
Einer der Menschen, die Multimedia machen.
Ja, 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, wie die Plattform zu wechseln, weil es geht einfach nicht.
Und ja, jetzt, 2019, Ende 2019 kam halt ein neues MacBook und es hat wieder eine Escape-Taste zum Glück.
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 die Escape-Taste ist wieder da und damit geht das wieder.
Und auch sonst, ach, das Ding hatte ja auch sowieso so, also dieses 2016er MacBook, das war echt so eine, das war so eine, weiß auch nicht, also das hatte auch Tastaturprobleme.
Habe ich sie ja schon mal erwähnt.
Ja, du hast auf jeden Fall mal eine Service-Einheit einlegen müssen, hast du mir erzählt, ja.
Schrecklich, schrecklich, ja.
Du hast einen Leserbrief auch geschrieben, seitdem haben wir es wieder geändert, oder?
Ja, ich weiß nicht, ob das.
Ja, genau, die Tastatur hat sich auch geändert und es sieht auch gut aus.
Also die alte Tastatur war zwar sehr flach und so, aber hat irgendwie.
Wir werden mit den Dingern ja überhaupt nicht warm, ne?
Also ich muss ja dazu sagen, ich schleppe auch immer eine manuelle Tastatur mit zum Laptop, wenn ich den irgendwo mit hinnehme und habe die dann immer in der Tasche.
Einfach weil ich das haptische Feedback von den guten mechanischen Tastaturen sehr gerne mag.
Ja, kann ich verstehen.
Ich habe 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.
Cherry-Klicks, ne?
Aber ich finde die eigentlich auch gar nicht so schlecht.
Vor allen Dingen finde ich daran halt gut, dass man da irgendwie die gleiche.
Ja, wahrscheinlich hört man sie tatsächlich.
Ich bin mal gespannt, ob auch von nicht das Klappern rausfiltert oder nicht.
Ich glaube, man hat es gehört.
Ja, also was ich vor allen Dingen gut finde, ist halt, dass man dann halt sozusagen ü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, das ist halt schon sehr nett.
Und ja, irgendwie das Tastatur kaputt und Escape-Test weg, das war alles schon ziemlich ätzend.
Aber.
Jetzt haben wir 2020.
Jetzt haben wir jetzt 2019 einen neuen Mac gekommen und jetzt ist er wieder approved, darf man kaufen, ist okay.
Funktioniert ganz ordentlich.
Und ja, hat auch, also ja, genau, ich meine, ich meine eine MacBook-Werbung hier machen, aber es wirklich macht Spaß.
Ja, du bist ein kleiner Fanboy, man hat's gemacht.
Und genau, also das gab ja auch so ein bisschen den Anstoß dafür, überhaupt dieses Thema aufzugreifen, weil ich habe jetzt in kurzer Zeit hintereinander zweimal irgendwie MacBook neu einrichten müssen.
Und dachte ich mir so, als ich das das zweite Mal gemacht habe.
Mir macht das Spaß tatsächlich.
Also ich sag nur alle, wenn man das oft und
viel machen muss.
Achso, 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 kann das für die nicht auch hilfreich sein.
Und vor allen Dingen, mache ich das eigentlich?
Das, was ich hier tue, ist das eigentlich irgendwie sinnvoll?
Ich muss gerade einen Schluck was an mir.
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 geraten, 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 in einem zum Beispiel GitHub-Git-Repositorium, ablegen und jedes Mal auf der neuen Maschine einfach klonen und habt dann eure Einstellungen wieder parat.
Ich weiß nicht, wie das bei dir ist.
Bei mir ist das so, ja, ich hab, da liegen die ganzen Dot-Files drin und da ist dann halt so ein kleines Python-Skript.
Das heißt irgendwie Install oder so, das rufe ich dann auf und das verlinkt dann halt die echten Dot-Files sozusagen in das Repository.
Ja.
So dass ich halt quasi, auch wenn ich an dem Repository was ändere und pulle, das dann automatisch die Änderungen halt.
Genau, also so ähnlich habe ich jetzt auch.
Ich habe leider die Skripte alle noch nicht ganz fertig.
Ich habe tatsächlich sogar auch, also auf deinen Rad den Einzel gemacht, das ist noch sehr anfängerlassig und hat noch kein Review erfahren und ist noch ziemlich militantisch zusammengebaut und da sind auch viele Fehler drin und das ist alles nicht fertig.
Aber falls ihr 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 so ein paar Basic Tutorials, wie man so die ganzen Sachen vielleicht installiert über VSL und ja, auch Pakete, also das ist ja das nächste.
Für eine Entwicklungsumgebung brauchst du ja einen vernünftigen Manager und der ist ja unter Windows eigentlich das größte Problem, würde ich jetzt mal behaupten.
Und da gibt es halt, Gott sei Dank, mittlerweile Chocolate.
Kann man sich drüber streiten, ob alle Pakete jetzt so super sicher sind immer, aber der hat eigentlich alles, was man so an Open Source und auch anderer Software haben möchte im Reposit.
Das heißt, er macht dann wie auf einem Unix-System einfach Choco-Install-Softwarename und hast das Paket dann drauf.
Und das ist super praktisch und so will man das ja eigentlich machen.
Und da kann man auch Skripte für schreiben und deswegen ist halt quasi nach der Windows-Installation das erste PowerShell starten, 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 Dotfile-Repositorium und zieht dann alle Sachen und 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 vor allem die ganzen Bindings und was man alles bauen will.
Nee, das freut mich, dass das ja jetzt auf Windows dann halt auch so halbwegs geht.
Ja, auf Mac war das auch lange Zeit irgendwie so ein bisschen problematisch und man wusste halt nicht so, was dir die richtige Antwort ist, auf was für ein Paketmanager soll man denn da verwenden?
Irgendwie Think oder irgendwie, keine Ahnung, Portage oder ja.
Aber mittlerweile hat sich dann doch rauskristallisiert, was da Homebrew, genau.
Und ja, da ist eigentlich alles, was da an so relevanten Dingen man benötigen könnte, mit drin.
Und funktioniert super.
Ja.
Genau, man muss halt noch so, bei einem Mac muss man halt noch so ein paar Sachen anpassen, die nicht richtig gut funktionieren.
Also zum Beispiel die Keyboard-Repeat-Rate und wie also sozusagen, wenn man eine Taste gedrückt hält, wie stark die dann wiederholt, wie schnell die wiederholt wird.
Also für meine, für meinen Geschmack muss man es deutlich runtersetzen und das geht auch nicht über eine UI.
Also man muss dann halt tatsächlich das halt über eine, aber man kann mit auf der Kommandozeile kann man das halt setzen, muss sich dann einmal ausloggen und wieder einloggen, aber das geht und dann sind halt auch, irgendwie man Sachen löscht, dann ist es halt wieder schnell.
Weil wenn man das nicht ändert, dann ist das halt unerträglich langsam.
Das ist halt irgendwie so kann man.
Das kann man bei Windows tatsächlich auch machen.
Du kannst halt einen Power-Share-Script schreiben, indem du die Einstellungen in die Windows-Registry schreibst.
Einfach und dann anders halt überschreibst mit deinen Custom-Vorlieben.
Also auch für so eine Hausanstellung oder da gab es ja ganz viele einzige Stellungen, die man da irgendwie machen möchte.
Privacy aktivieren und sowas.
Genau, ja.
Ja, und man muss halt auch beim Mac halt noch so ein paar Umgebungsvariablen setzen und irgendwie diverse X-Code-Kommand-Line-Tools installieren und machen, damit man auch Sachen kopilieren kann.
Spannende Sache, und zwar, was machst du mit privaten oder geheimen Umgebungsvariablen?
Wie handelst du die?
Gibt es sowas bei dir überhaupt, oder?
Was wäre welchen anderes?
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 Google-Api.
Einfach weil man da mit dem Dev-Zugang, weißt du nicht, YouTube und irgendwelche anderen Skripte, die Google irgendwie so benutzt, direkt über seine Konsole verfügbar hat.
Suche.
Oder so.
Und da braucht man zum Beispiel eine API.
Und der ist halt dann in meiner normalen Umgebung schon drin und nicht irgendwie nur Projekt, weil ich den halt immer verfügbar haben möchte.
Ah, okay.
Und sozusagen, das kannst du natürlich dann nicht gut einchecken.
Also jedenfalls nicht im Klartext.
Nee, genau, also das heißt, was ich mache, also ich habe es ja zugelöst, ich habe eine verschlüsselte Sache, die einmal kurz aufgemacht wird, dann wird dieses Secret in eine Enf geladen und dann wieder decryptet.
Das ist natürlich nicht ganz so toll, weil das halt eigentlich in meinem Speicher hängt.
Aber gut, es ist auch nicht sicherheitskritisch.
Wenn das lokal in deiner Umgebung ist, ist das ja okay.
Also es ist halt nur so, dass es die Frage ist, wie kriegst du es verteilt auf alle Maschinen und
Nein, also diese Secrets, die werden nicht gesynkt, sondern die muss ich dann.
Achso, du musst auf der Hand machen.
Genau, ich habe aber einen Folder gemacht, was halt Secrets heißt und das automatisch geladen wird.
Alles, was da drin ist, wird halt automatisch dann in die Umgebungsvariablen reingeladen.
Das ist da muss ich dann halt die Sachen rein.
Genau, der Fooder wird auch automatisch erzeugt von meinem Skript und so und dann muss ich da halt einfach dann die Sachen, die ich halt in Byron Variables geladen haben möchte, da reinpacken und dann werden die encrypted, decrypted und beim Start geladen quasi, ja.
Ja, das ist tatsächlich noch so ein Problem, eventuell.
So habe ich mir keine Gedanken.
Also ich würde es wahrscheinlich in das Install-Skript in den Dot-Files mit reinpacken und dann halt irgendwo eben so ein verschlüsselt irgendwie mit einchecken.
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 ich mir, da habe ich noch keine Gedanken dazu gemacht, weil den Fall habe ich tatsächlich nicht, glaube ich.
Noch eine andere Sache, die ich ganz spannend fand, wenn du verschiedene Maschinen benutzt, beispielsweise ein Desktop-System und einen Laptop und noch einen anderen Laptop.
Und da sind leicht unterschiedliche Konfigurationen notwendig.
Wie würdest du sowas lösen?
Also, ich habe zum Beispiel so gemacht, ich habe dann immer einen Machine-Folder quasi, das er liest und da werden halt 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 schreibe 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 habe ich, weil ich unter Umständen etwas unterschiedliche Umgebungen habe, also nicht, die Macs sind eigentlich alle gleich, aber ich habe ja auch Server irgendwo rumstehen.
Linux ist halt so ein bisschen anders teilweise.
Und das ist alles noch nicht sauber.
Ich muss das auch mal.
Aber Linux geht auch wunderbar mit den Dot-Files.
Ich habe tatsächlich für meine Java-Systemen beispielsweise auch so ein schönes kleines Repo dann angelegt mit den Dot-Files, die wir dann auch gezogen, installiert und dann funktioniert zumindest meine Basche-Aliasse oder sowas, wie ich die haben will.
Das geht schon, aber ich habe halt eben in manchen Skripten dann halt eben Fileunterscheidungen, ob welche Shell das jetzt ist und so.
Und das ist halt ja, oder welches System das ist, weil halt einfach bei Linux manche Sachen einfach liegen, einfach woanders.
Also da muss ich nochmal das machen.
Ja, also muss man tatsächlich Fallunterscheidung machen.
Man muss halt schon ein bisschen gucken, welches System möchte man denn jetzt dann seine Config installieren.
Aber ja, das wäre auch spannend, wenn das insgesamt skrippen könnte und dann einfach nur Git Klon Repo Install und dann macht er alles.
Egal was man tut.
Aber gut, ob man so viel Arbeit machen will.
Aber macht Spaß, das ist so ein kleines Problem.
Ja, ja.
Genau.
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 managt für die Projekte vielleicht auch.
Ja, ja, ja.
Da gab es einen ganz netten Artikel von einem der Django Mitbegründer von Jacob Caplan Moss, der hat, glaube ich, bei Python, äh, Django, Python, Development Environment 2020 Edition oder so einen Blog Post geschrieben.
Genau, das da, also ich habe denen gelesen und dachte mir so, oh ja, das ist so vieles davon, kommt mir sehr bekannt vor, weil ich das auch so mache.
Und ein paar Sachen kannte ich halt noch nicht.
Und dann habe ich halt auch noch so ein paar Sachen geändert, wo ich dachte so, okay, das war mir jetzt gar nicht noch.
Und ja, tatsächlich, ja, was braucht man für so eine Python-Umgebung?
Also was einem halt zunächst mal halt sozusagen als Problem sich darstellt, ist halt, wie kriegt man jetzt eigentlich, wo kommt man eigentlich eine, wie installiert man Python halt eigentlich, ne?
Und das ist ja schon so ein bisschen nicht so ganz einfach.
Ich habe lange eben auf Mac Homebrew einfach nur so verwendet und dann halt je nachdem unterschiedlich, also bei Data Science Projekten hast du ja, also es ist halt auch wieder sowas Blödes, du hast ja halt bei Python mehrere Arten, wie man jetzt Pakete installiert, äh, halt Pip bei Web, also ich, bei mir ist es im Grunde so, Webentwicklungsprojekte installieren ihren Kram.
Bei eine Requirement Datei bei
PIP, oder?
Na, Requirements-Datei kommen vielleicht gleich noch zu, eigentlich nicht mehr, bin ich jetzt fast von weg.
Piplock.
Äh, nee.
Sondern?
PyProjectommel.
Aha, okay.
Und die Data Science Geschichten gehen eigentlich alle, haben wir alle Conda-Environments und dann halt so eine Environment-Jammel.
Hässlich.
Ja, und eben da hat man halt auch nochmal einen anderen Python-Interpreter, also üblicherweise hatte ich da Minikonder.
Aber das mache ich jetzt alles nicht mehr so, sondern inzwischen verwende ich Py-Enf dafür.
Was ist das denn jetzt schon wieder?
Also es gibt ja Pyenf, Enf, Enf PfD.
Ja, ja, es gibt Pi-Enf, es gibt Python V-Enf, es gibt Virtual Env, es gibt Virtual Enf Wrapper, es gibt Conda-Environments, die so ähnlich sind wie Virtual Enfs.
Aber doch nicht so ganz ja, also es gibt ein Problem offenbar an der Stelle.
Also ich benutze immer noch irgendwie ganz klassisch irgendwie mein Venf mit Virtual PowerShell.
Habe 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 macht.
Also das Problem, ja, also ich weiß nicht, ob das jetzt so ist, wie man das machen sollte.
Es ist halt so, wie ich das jetzt gerade mache.
Und ich habe jedenfalls subjektiv das Empfinden, dass es eine Verbesserung ging, weil die zu stand vorher ist.
Aber es ist leider relativ kompliziert alles.
Also ich würde mir natürlich auch wünschen, dass es irgendwie einfacher geht, aber.
Also dieser Virtual End Wrapper-Ansatz finde ich total toll.
MK-Virtual N-Name.
NS Virtual N für alle anzeigen, RM Virtual N für wegmachen und Work-On Projektname fertig.
Ich finde das auch nicht so schlecht und für Webentwicklungsgeschichten habe ich das lange so gemacht.
Aber, also ein Problem, was du dabei hast, ist zum Beispiel, dass immer der Systeminterpreter verwendet wird.
Das ist wie ein Riesenachteil.
Welcher Systeminterpreter wird verwendet, du kannst auch bei, wenn du eine neue Virtual Environment erzeugst, sagen, minus minus Python und sagen, welche Python, also welchem Pfad der erzeugen soll.
Ja, aber sozusagen, also du kannst nicht einen Spezialinterpreter für dein Environment festlegen, sondern das muss irgendwo hininstalliert sein.
Und dann kannst du das halt sagen, nimm das.
Das geht natürlich, aber üblicherweise nimmst du dann halt deinen Systempython.
Oder halt eines der Systempythons, die du irgendwie installiert hast.
Das heißt, ich installiere einfach alle Systempythons 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 halt 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 Virtual App sagst und dann kein Parameter mitgibst, dann macht er dir ein Python 2-Environment.
Das ist halt schon mal,
also bei Linux jetzt oder bei Mac.
Bei Mac ist es so.
Bei Linux wahrscheinlich auch so.
Weil ganz viele Distributionsskripte oder so, das ist alles, also egal, praktisch egal, welche Distribution, das ist alles Python.
Also bei Windows kommt drauf an, welche in deiner Pass-Variable gesetzt ist.
Bei Python, ja.
Ich weiß nicht, ob bei Windows überhaupt ein Python mitkommt, sozusagen.
Nein.
Du musstest du über die Webseite installieren, im Worst Case oder halt über Toku install Python, aber.
Ja, okay, dann ist man da in gewisser Weise sogar ein bisschen besser dran, aber die meisten Python-Distributionen kommt Python auf jeden Fall immer mit, weil sozusagen die Disposition 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, ne?
Aber trotzdem hat man es dann halt drauf und wenn man nicht aufpasst, weil es halt vielleicht noch der Default-Interpreter ist, macht es einem halt so ein Uralt-Environment auf und das ist halt schon mal, also ich, das könnten Leute verhö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 auf eine bestimmte Python-Version oder so, das ist halt total blöd.
Oder es geht nicht gut.
In gewisser Weise war das bei Miniconor 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, aller 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?
Ja, oder per Homebrew updatest du dein Kram oder per Choho oder wie auch immer, Paketmanager deines Vertrauens und der schmeißt jetzt das alte Python runter und installiert ein neues.
Also was
passiert denn da mit deinem Video?
Wenn ich jetzt beim Windows mache bei dem Toku, der macht tatsächlich mit dem Virtual Wrapper, den, also ich da jetzt benutze, macht tatsächlich eine lokale Kopie in einem Virtual En-Vverzeichnis von dem Python-Interpreter.
Das heißt, der wird nicht mit geupdatet dann in der Env, sondern nur in einem System.
Okay, das ist ja schon mal nicht so schlecht.
Also weil 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 Enfs, die 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 jetzt da nichts mehr funktioniert und so.
Also es ist einfach nicht so richtig schön.
Und ja, das geht halt mit Virtual Enfrapper halt immer nur so, naja, vielleicht geht es auch irgendwie, aber es ist so richtig toll, ist es nicht.
Jedenfalls gibt es eine Geschichte, die ich jetzt besser finde und obwohl 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, dass es so ähnlich ist.
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 war als mein.
Ja, der Paketmanager und Python war 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 ja 3.8.1 sein.
Aber in diesem Verzeichnis hätte ich gern irgendwie ein 3.7, weil das ist halt das, was in dem Projekt verwendet wird.
Und wenn man dann sagt, PyEnvLocal 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 Pfeil-Sonnen-Versionen.
Kann man das kombinieren mit Virtual Enter?
Was ich natürlich toll finde, ist natürlich, dass man vorne immer so sieht, welche Environment wird es denn jetzt gerade aktiviert.
Genau, das ist, äh, das sind auch, das Ding kann auch selber Virtual Ents dann erzeugen.
Man kann ihm auch sagen, erzeug jetzt ein Virtual Env, hat wenn er darin den Interpreter oder so.
Wo liegen die?
Also bei mir liegen die mein Hochverteilchen jetzt unter Enfs zum Beispiel.
Das kannst du alles einstellen, wenn du das magst.
Das ist kein Problem.
Bei Virtual Env, also man kann einmal, man kann es einstellen, ich glaube, es ist nochmal ein bisschen anders als bei den normalen, bei Virtual Enfrapper oder so, aber egal.
Was du da auch netterweise machen kannst, äh, so, ach da, du hast ja gerade die Sattel hier, genau, Local, Global, du kannst halt alle, wirklich alle Python-Versionen damit installieren.
Du kannst halt auch PiPy installieren oder halt eben auch Minikonda, sodass du halt damit tatsächlich für alle Geschichten, die man so macht, kann man damit halt sozusagen genau
das Ding für alle Sachen verwenden.
Also ich kann jetzt für Data Science 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 machen dann auch eine Pfeilunterscheidung, ist das jetzt Minikonda oder nicht, passen dann nochmal Variablen an.
Aber tatsächlich ist es so, dass ich, 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.
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 Pipend irgendwie zwischendurch, mal war das irgendwie mal kurz.
Ach, Pip-Enf, ja, das ist halt, äh, 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
ich würde Python, also auf Windows jetzt einfach installieren über Toko und dann tatsächlich versuchen, mit dem Wapper das zu machen, aber ich muss ja Pyant verangucken, das klingt sehr gut und es gibt auch Pyend 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 mir mal angucken.
Also das sieht für mich momentan schon so nach der besten Option eigentlich aus.
Genau, aber sagen wir einfach, damit sind wir durch.
Also vielleicht kann man sich einfach mal PyEnt 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 ihr WSL benutzt, müsst ihr das alles natürlich zweimal machen.
Weil auf WSL ist natürlich der Linux dann das Linux-System drauf, da müsst ihr die ganzen Umgebungen alle wieder erneut einrichten und einen anderen Interpreter nehmen.
Da wäre vielleicht auch PyEnv die richtige Variante.
Wenn man nämlich so ein Directory dann mountet von Local, wäre sehr interessant, ob das unter Linux, WSL und Windows gleichermaßen funktioniert.
Ja, keine Ahnung.
Ja, das wäre mal ein Versuch wert.
Ja, also wenn man dann, wenn man dann aber irgendwie so Python installiert hat und dann halt einfach nur in zwei Zeichen wechseln und dann das richtige Python direkt da hinten, dann hat man ja immer noch das Problem, okay, ich habe jetzt für Projekte diverse Abhängigkeiten, die ich auch gern 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, 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 ein Base-Requirements inkludiert oder so, und dann halt unterschiedliche Mengen von Abhängigkeiten installieren, je nachdem, ob du jetzt entwickeln willst oder halt irgendwie Produktionsbetrieb machen willst oder so.
Aber also ja, das geht auch alles schon irgendwie, aber das, also was halt daran zum Beispiel total bescheuert 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, die kann man die Versionen zwar pinden drin, also man kann sagen, welche Version man genau hätte.
Aber die Sachen von denen die abhängen, die 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, habe ich
meistens bei mir schon böse mit den Fuß geschossen.
Da fehlt dann irgendwelche Dev-Pakete oder.
Ja, und dann das kann halt, etwas, was halt vorher super funktioniert hat, geht halt plötzlich kaputt, einfach so.
Und man weiß nicht warum.
Und das ist natürlich irgendwie etwas, was eigentlich gar nicht sein sollte.
Steht ja da erstmal ein Entwickler, hat die Requirements installiert und es geht nichts.
Man fragt sich so, hä, wieso bin ich jetzt wieder zu blöd?
Und ja, manchmal ist das so.
Normalerweise denkt man sich dann so, ja, die haben es halt verbockt und haben es aber selber gar nicht so richtig gemerkt, weil sie irgendwie, 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 Pakete, auf denen 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 JAN-Install oder so, dass dann halt alles irgendwie genau in der Version da ist, wie man das halt mal zu dem Zeitpunkt, als es so alles funktioniert hat, irgendwie definiert hat
Und das wird halt weitest eingecheckt und dann gibt es da keine Missverständnisse mehr und kann auch ein Updates zwischendurch nichts kaputt machen, weil die Versionen sind ja alle gepinnt.
Und tatsächlich die ganzen Tools, die jetzt versuchen, da so ein bisschen das unter Python halt auch eher so wie JavaScript zu machen, die gehen halt auch alle in diese Richtung.
Also da sind zwei wesentliche Tools, die da eine Rolle spielen.
Das ist Pipenf und Poetry, würde ich sagen.
Oder ich würde es eigentlich eher umgekehrt sagen, ich würde sagen Poetry und PipE.
Poetry klingt sehr schön poetisch.
Ja, und PipE ist so ein bisschen, ist zwar irgendwie offizielles Produkt der PSF, Python Software Foundation oder irgendwie da gelandet, keine Ahnung.
Aber das ist, es wird auch mehr verwendet tatsächlich, aber es nicht so das, was.
Der ist auch von dem Autor von Requests irgendwie da, oder?
Ja, na, sag schon.
Kidna's Rights?
Ja, ja.
Aber bis vor kurzem, ich weiß nicht, ob es immer noch so war, bis vor kurzem war da halt ein Ischue drin, so irgendwie, äh, if this project is dead, please tell us.
Und der war halt seit einem Jahr offen.
Und also das ist halt schon, weil so einem Ding, das so wesentlich ist, geht das eigentlich nicht.
Und insofern, ja, also es gibt da Schwankungen.
Und also es wirkt manchmal so ein bisschen anmentend und
deswegen mehr Poetry.
Genau, genau.
Also wenn man Leute fragt, die sich damit auch mehr beschäftigen, dann sagen fast alle irgendwie, nee, sie verwenden eigentlich schon Mutan-Petry.
Vielleicht wird der Peppel-Pipper einfach nochmal, aber eigentlich ist es.
Und Poetry müsst ihr verwenden, das ist jetzt die Quintessenz.
Pie End von Poetry.
Erklär mal bitte kurz, was Poetry oder jetzt mal Poetry.
Also müssen würde ich jetzt nicht sehen.
Ja, natürlich.
Aber das ist das, was ich jetzt gerade verwende zur Zeit, ja.
Also Poetry verwendet man halt sozusagen dafür, um jetzt in ein Environment oder in einem Projekt, was man da hat, halt irgendwie die ganzen Abhängigkeiten auch mit reinzukriegen.
Und das ist so ähnlich eben wie in der JavaScript-Welt halt ein Package.jSON und Package Log.
Gibt es halt da einen PyProject, Tommel und Poetry Log, glaube ich, die im Wesentlichen genau das gleiche machen.
Man kann halt da drin die Produktions- und die Entwicklungsabhängigkeiten definieren und das Ding installiert den ganzen Kram halt und macht halt einen Log-File, mit wo sie, ja, wo halt alle Versionen gepinnt werden, dann steckt man beides ein und dann kann man halt das Environment auch reproduzierbar wieder so erzeugen.
Insofern alles noch nichts Neues.
Also, das macht es halt eigentlich ganz gut.
Ich meine, ich verwende es jetzt auch nicht so lang.
Das funktioniert alles super.
Es macht noch ein bisschen mehr Dinge.
Es macht zum Beispiel auch noch sowas wie: du kannst halt Entry Points definieren in dieser Pi-Project-Tummel für Skripte.
Und das ist ja auch so ähnlich wie bei NPM kann man das auch.
Also, dass man halt in einem Projekt halt auch die ganzen Verwaltungsskripte, die man halt so hat, wie zum Beispiel, wenn man jetzt die Tests ausführen will, dann ist es unter Umständen eine Kommandozeile, die relativ lang ist.
Oder manchmal will man die halt in einen Docker-Container ausführen.
Oder man möchte Coverage PY laufen lassen mit allen möglichen Parametern oder weiß ich nicht was an oder irgendwelche Linter oder so.
Dann kann man halt sich da sozusagen einfache Kommandos mit Pochi 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, ich habe halt sozusagen eine Umgebungsvariable 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 Webentwicklungsgeschichten ist halt alles Docker-basiert mittlerweile, dann wird um die ganzen Kommandos, die ich da ausführe, halt ein Docker-Compose mit dem richtigen Docker-Compose-YAML-File halt irgendwie drumherum gestrickt, sodass das halt innerhalb von dem Docker-Container ausgeführt wird.
So dass ich halt, und dann mache ich mir noch Aliasse, also was ich eigentlich ausführe, ist Poetry-Run-Test, um die Tests auszuführen.
Und dann habe ich noch ein Shell-Alias für von Tests auf Poetry-Run-Test.
Und dann gebe ich in dem Verzeichnis einfach nur einen Test, drücke 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.
Also wenn ich, wenn ich nicht drin bin, dann wird halt das in einem Docker-Container laufen lassen und wenn ich drin bin, dann werden einfach nur die Tests gestartet.
Und das habe ich halt nicht nur für Tests, sondern halt auch für solche Sachen wie ja, Linting, Flake 8, ja, diese ganzen Meta-Skript-Geschichten, die man halt bei vielen Projekten einfach so braucht.
Und das funktioniert tatsächlich ganz gut.
Früher habe ich dafür Make-Files verwendet.
Ich glaube auch, es gibt auch Leute, die das Command-Modul verwendet haben von Python dafür schon.
Ich habe so Command-Shell.
Oh, ja, stimmt, das kann auch gut sein.
Das könnte man eigentlich auch nochmal erklären.
Ja.
Das ist irgendwie ein Modul der Standard-Übel.
Standard-Library wollten wir auch nochmal eine eigene Folge zu machen.
Ich frage, ob wir jetzt kurz darauf eingehen möchten.
Das hatten wir auch letztens schon beim Python Poo, weil man damit tolle Sachen machen kann.
Man kann seinen eigenen Kommandozeilen-Interpreter für so Python-Sachen bauen.
Genau.
Also, ja, weiß ich nicht genau, ob man das jetzt.
Vielleicht machen wir es doch mal.
Ja, vielleicht passt das dann besser in die Standard-Library-Folge.
Oder wir wollten eigentlich jede Episode ein Modul aus der Standardbibliothek mal irgendwie so ein bisschen besprechen.
Das haben wir jetzt diesmal nicht geschafft, fürchte ich.
Aber das werden wir auf jeden Fall auch noch irgendwie hinkriegen.
Und Command ist halt ein Kandidat.
Es ist einfach praktisch, dass man einfach so eine Shell haben kann und dann mappen halt die Kommandos, die man eingibt, halt auf Funktionen, das ist, was es im Wesentlichen tut.
Aber ja, müssen wir eigentlich ein bisschen länger was zu erzählen.
Ja, aber wir waren noch bei Poetry, also irgendwie, ja.
Ja, Poetry, genau.
Kann halt auch so irgendwie Skripte laufen lassen, kann Pakete installieren, man kann auch damit sozusagen tatsächlich Pakete bauen und die halt wirklich hochladen nach PyPI kann man sie, glaube ich, nicht, das weiß ich nicht so genau.
Da hat der Jens was zu gebaut, glaube ich.
Ja, der hat tatsächlich so ein Poetry Publish-Tool gebaut, wo man Projekte, die Poetry nutzen, zu PyPi putschen kann mit ein paar Checks irgendwie.
Vielleicht können wir das mal linken.
Der hat ja irgendwie gestern was dran gebasteln hat.
Muss ich mal genau, weiß ich nicht.
Das habe ich auch mit Poetry noch nicht so wirklich gemacht, aber soll auch irgendwie gehen.
Also was man, was man sagen kann, ist, dass auch dieses PiProject.hommel-File soll halt, irgendwie, da gibt es auch ein Python Enhancement Proposal zu, 518 ist das, glaube ich.
Soll halt mal irgendwie die zentrale Konfigurationsdatei für so Projekte werden.
Also bisher gibt es da ja, da gibt es auch einige Kandidaten.
Es gibt auch Setup, also es gibt zum Beispiel, wenn man jetzt Pakete baut tatsächlich.
Also wenn man jetzt ein Library schreibt, das macht man auch fast immer.
Also wenn jetzt irgendwie ein Projekt hat und möchte das irgendwie bauen, dann hat man oft irgendwie eine Setup.py da drin liegen und setup.cfgconfig.
Und ja, also ein Problem zum Beispiel ist halt auch, dass die Setup PY, also einmal ist das alles ziemlich kompliziert und dann, 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, weil was ja im Wesentlichen ist, das ist halt irgendwie ein Archiv, irgendein ZIP oder Tarball von irgendwie Python-Dateien, ja, PY-Dateien.
Das möchte ich jetzt irgendwo 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 nochmal kurz ausprobieren möchte?
Und das ist schon mal so, mm, und das ist halt eine der zentralen Punkte, die halt mit dieser Pi-Project-Tommel angegangen werden, weil wenn du das halt eben in diese Pi-Project-Tommel reinschreibst und das, ich weiß noch nicht, ob es soweit ist, ich glaube, es ist noch nicht so ganz, aber wenn das halt irgendwann mal ausreicht, um Pakete zu bauen, dann kannst du halt ein Paket installieren, ohne dass halt irgendwie ein Skript ausgeführt und beliebiger Code ausgeführt wird auf deiner Maschine.
Sondern da wird halt Pi-Project-Tommel gepasst und da wird halt irgendwas gemacht, aber da ist nichts drin, was irgendwie ausgeführt wird.
Und das ist dann natürlich schon nett.
Das ist dann halt schon mal ein Problem weniger.
Und ein Ding, wo man Code, weniger, wo man einen Code ausführen muss, den man dann halt irgendwie vertrauen muss.
Dafür ist es gedacht.
Dann ist es aber auch so, dass ja genau diverse andere Geschichten, die jetzt in setup.cfg irgendwie normalerweise drin stehen, die sollen da halt auch rein.
Und 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 Tommel, ich kann die ganzen Tools.
Es gibt auf jeden Fall einige, die das alles schon 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 vielversprechende Angelegenheit.
Und was auch schön ist, ist das Dateiformat.
Das ist auch, da kann man sich auch diesen PEP 518 mal angucken.
Man könnte sich jetzt auch einfach denken, so, ja, warum denn jetzt nochmal ein neues?
Das habe ich mir zuerst tatsächlich auch gedacht, dachte ich, so Tommel?
Was zur Hölle?
Warum denn nochmal ein unterschiedliches Dateiformat?
Es gibt ja auch immer den Witz, sozusagen, ja, irgendwie JSON kommt dabei raus, wenn man alle Fehler ignoriert, die Leute bei XML gemacht haben, ja, und YAML kommt dabei raus, wenn man die Leute irgendwie alle Fehler ignorieren, die bei JSON gemacht wurden.
Und warum denn jetzt noch Tommel?
Wenn jetzt alle Fehler ignoriert, die bei Yammel gemacht wollen, kommt dann vielleicht Tommel raus?
Kann sein.
Aber das ist tatsächlich ganz gut begründet, warum sie da nochmal ein neues Format nehmen, weil tatsächlich leider alle anderen Formate scheiße sind.
Das muss man leider sagen.
Das fand ich auch bitter.
Das haben sie dann auch relativ unmissverständlich da in den SPEP reingeschrieben.
Es ist echt, es ist echt faszinierend.
Ich meine, also das XML, also da braucht man nicht viel drüber reden eigentlich, dass XML scheiße ist, das ist ja bekannt.
Das kann man als bekannt voraussetzen.
Es ist halt, ein entscheidender Punkt dabei ist halt, es ist nicht von Menschen editierbar so richtig.
Und das ist sowieso ein komisches Format.
Also, naja, will man eigentlich nicht.
Dann.
Warum JSON?
JSON ist eigentlich nicht so schlecht, wird ja auch verwendet tatsächlich bei JavaScript, eben für Package.
Aber, also Menschenlesbar ist es auch irgendwie, aber Menschen schreibbar 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 tatsächlich kein Komma am Ende von dem letzten, ja, total kacke, ja.
Also, und ich meine, so als Mensch denkst du dir halt so, wenn du das nicht, wenn du jetzt nicht irgendwie so ein Standardfetischist bist oder so und das sofort siehst, oder dein Editor kannst du dir vielleicht auch sagen, aber wenn du es jetzt einfach mal einen normalen Texteditor nimmst, der das nicht kann, dann tippst du das ja so ein und dann sagt dir halt NPM, irgendwie da ist ein Syntaxfehler und denkst dir so, hä?
Was?
Warum?
Das ist ein Syntaxfehler.
Und es macht das Parsen halt auch schwer, weil ja, das ist halt, du musst wissen, du musst dir immer merken, dass das jetzt irgendwie das letzte, also das Letzte ist und so, und ach, das ist alles, du kannst nicht alle gleich behandeln.
Es ist irgendwie.
So, so Jason ist für viele Sachen ganz nett, aber so menschen schreibbar nicht so gut und es hat auch so komische Quirks irgendwie.
Aber ansonsten, Jason ist auch nah dran.
Also die waren auch kurz davor, Jason zu nehmen.
Jammel sieht eigentlich ganz gut aus, ne?
Wenn man so ein Yammel-File sieht, denkt man sich so, ach ja, so schlecht ist das ja gar nicht.
Ich habe in letzter Zeit viel mit Kubernetes zu tun.
Ich habe viel Yammel gesehen.
Ich bin nicht mehr davon überzeugt, dass es eine gute Idee ist.
Naja, also Yammel, es kann auch furchtbar werden.
Also einmal ist das Problem bei YAML, der Standard ist gigantisch.
Also während Jason halt noch relativ da, ist relativ einfach zu implementieren und es gibt relativ wenig Zeug.
Yammel 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 YAML-File-Parsen bedeutet, Code auszuführen im Grunde.
Meistens.
Du kannst, das kann halt so viel, dass du dem sagen kannst, hier füllen wir diesen Code aus, dann machst du.
Es gibt dafür ein Load-Safe oder Safe-Load-Methode oder sowas, die man benutzen kann, wenn man Yammel parsen will, ohne da Code auszuführen.
Aber das muss man halt auch erstmal wissen.
Und das ist so, das ist halt also.
Können wir lustige Yammelsachen machen.
Standard ist komplex und dann irgendwie, wenn man einen Yammel-Pfeil lädt für das Code aus, das ist halt schon eine Kombination, die ja schon bitter.
Also ja, will man vielleicht auch nicht, obwohl es halt tatsächlich gut menschenlesbar ist und es ist gut menschen schreibbar 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 tja, was bleibt da noch?
Ach, es gibt noch Config-Parser, auch in der Standardbibliothek von Python.
Das ist halt so ein, in Windows nennt man das, glaube ich, Innie-Files oder so.
Wir hatten es auch überlegt, ist auch nicht so schlecht, 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 Projektdefinitionsdings 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 es kann, aber es ist irgendwo.
Ja, es gibt ein paar Configs, bei denen es dann geht, bei ein paar Daten.
Ja, und eben, bei manchen geht es halt nicht.
Und wenn es nicht geht, weiß man halt nicht mal rum.
Und es gibt auch keine anderen Implementierungen und so.
Also ja, auch nicht wirklich toll.
Und jetzt kommt.
Und jetzt kommt Toml.
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, und dann haben sie gesagt, okay, ja gut.
Dann und vielleicht sogar das wichtigste Argument, das wird halt auch sozusagen zur Definition von Projektabhängigkeiten und Paketdingern verwendet, schon bei Rust.
Und funktioniert ja schon lange.
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.
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.
Was fährt dir noch eins zu deiner Umgebung?
Also ich meine, wir haben jetzt gar nicht mehr Editoren oder sowas gemacht.
Ja, das müssen wir aber eigentlich auch noch.
Müssten wir gucken.
Ja, zumindest also eigentlich schon.
Was musst du?
VI, E-Mac, VS Code, haben wir jetzt alles verraten.
Ja, VI oft.
Im Enhanced-Modus oder im Puren.
Was musst du für ein Farbschema?
Ich hab mal Solarized 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.
Glaub nicht.
Nee, Dracula ist so schön lila.
Pink.
Okay, das ist auf dunklem Hintergrund.
Ah, okay, keine Ahnung.
Ja, also VI tatsächlich immer noch sehr viel und mir gefällt das auch gut.
Ich habe eine Zeit lang Neovim verwendet, aber seit Wim 8 kann das 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, Neo-Wim zu verwenden.
Daher kann ich wieder den normalen Wim verwenden.
Was ich an VS Co zum Beispiel so sehr mag, woher wir eben darüber gesprochen hatten, Entwicklungsumgebung, man kann auch da die Settings synchronisieren.
Bis jetzt benutze ich dafür eine Extension, aber das ist gerade dabei, dass es in den offiziellen Patchnotes, glaube ich, drinsteht, von den Insiders, dass man die Settings synchronisieren kann, wenn man möchte, über seine Maschinen.
Was natürlich super ist, weil man ja auch die Ditor-Settings, die ja irgendwie doch lecker sein können, irgendwann gerne synchronisieren möchte.
Ja.
Auch die Extensions, die man nutzt.
Sind das nicht auch Dot-Files irgendwie, die man genauso handeln könnte wie alle anderen?
Gute Frage, ich glaube nicht.
Eine Settings.json ist das eigentlich, die da irgendwo drin liegt im VS-Code-Verzeichnis.
Und ja, da kann man halt mit JSON-Sachen reinschreiben.
Ja.
Ja, keine Ahnung.
Die kann man natürlich auch dann synchronisieren bei seinen Dot-Files.
Das habe ich bis jetzt 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 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 so ganz nett.
Ja, aber beim VI ist das zum Beispiel so, dass halt eben die Plugins, die ich verwende, die kommen halt auch über die Dot-Files und dann sage ich halt auf einer neuen Maschine einfach nur, wenn ich einen WIM starte, Doppelpunkt, Plugin, Install und drücke Enter und dann installiert die ganzen Plugins.
Und das ist natürlich schon seine, also sagen wir so, das funktioniert nicht mit allen.
Es gibt manche Sachen, die leider Haltarbeit erfordern.
Wie zum Beispiel irgendwie Autocompletion.
Dafür benutze ich Jedi und halt UComplete Me und U-Complete 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 für schreiben, das ins Dotfile-Repo kommt.
Ja, vielleicht.
Bei der
Installation direkt das automatisch macht.
Auch nicht automatisiert, aber das muss man halt irgendwie noch machen.
Autocompletion ist übrigens ein echt ein nettes Feature.
Das kann man auch bei verschiedenen Sachen einbauen.
Also auch sogar unter Windows mit Git, Dosh, Composh-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 Fisch gibt es auch für alles wie Autocomplete-Geschichten und das so.
Fish hat sogar so eine Suchfunktion, dass man halt die Autocompletion durchscrollen kann.
Das ist ja sehr geil.
Ja, ja, ja.
Wahrscheinlichste sogar und so, ja.
Man kann das auch so einstellen, dass er dann die, die man häufig zum Besuch hat, nimmt und dann kann man daraus durchtappen und so.
Das ist schon nett.
Genau, ja, wie I 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ähter WIM gar nicht so großartig von sowas wie es Code oder Pyche.
Page-Macht nochmal ein bisschen mehr, aber tatsächlich gibt es halt viele Sachen, die ganz ähnlich sind.
Also ich bin so dann nicht Command P wie bei VS Code, sondern Command-T, da gibt es halt so ein Plugin, das macht aber dann fast das gleiche.
Dann gibt es halt irgendwie Fugitive WIM, das irgendwie Git mit Git Super interagiert, was dann halt diverse Dinge darstellt, dass dann darstellt halt, was sich geändert hat.
Ja, ich
wollte gerade sagen, also diese Git-Integration, die will ich ja schon nicht vermissen.
Ich habe so einen GitLab-Prozess, den ich irgendwie einbauen kann, dann VSCO.
Kann das alles synchronisieren, kann ich 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 VS-Code angezeigt bekommen und die da auch bearbeiten können und dann direkt den Branch wechseln und so, das wäre ja alles ziemlich geil.
Aber ich habe ein, zwei Add-ons da gefunden, die in die Richtung Genebe aber noch nicht so ganz perfekt funktionieren.
Aber das weiß nicht, ob sowas überhaupt in PyCharm oder so geht.
Das ist das einzige Feature, was ich bis jetzt nicht entdeckt habe in VS Code, was ich von PyCharm-Usern gehört habe, was vermisst wird, ist Auto-Imports.
Das heißt, dass man automatisch die ganzen Imports von den Sachen, die man in Code geschrieben hat, oben erzeugt bekommt.
Ja, genau.
Das ist bei Pycharm, tatsächlich gibt es dann immer Leute, wenn ich dann Sachen oben von Hand eintrage, die mich dann gucken, so als wäre ich irgendwie so ein Tier, was da irgendwie so rumkriecht und irgendwie.
Ja, ich fühle mich aber.
Tatsächlich habe ich dafür beim Wim auch noch nichts gefunden, was das automatisch macht.
Es gibt aber was für Notebooks gibt es PiForest, das macht das da auch.
Wenn ich Nico gehört, den ich letztens getroffen habe.
Wir waren ja zusammen auf dem Pylata Cologne.
Und der meinte, das kann man super verwenden, wenn man da halt irgendwie, keine Ahnung, in einem Jupyter Notebook halt Dinge verwendet, 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 bestimmt auch irgendwie was, aber da schreibe ich meine Imports immer noch von Hand.
Und natürlich, ja, ist es so ein bisschen rückständig.
Aber ansonsten, ich weiß gar nicht, ob ich da immer durch die Liste der Plugins beim VI durchgehen sollte oder so.
Ob das schon zu speziell ist, was ich da so normalerweise verwende.
Also bei VS Code sind es auf jeden Fall ganz wichtige Sachen dann, ne?
Wenn du da ein Workflow drin hast, eine To-Do-Liste, Test-Framework kannst du einbauen.
Du kannst Docker reinpacken, natürlich die Git-Sachen, ganze Pipeline einbauen.
Das finde ich 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, nee, also man kann sich da selber, also tatsächlich.
Da muss ja auch jeder so ein bisschen selber basteln.
Man muss eigentlich alles selber basteln.
Das wächst 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.
Ist auch ein bisschen schnellere Ladezeit und so.
Das kann man aber auch vielleicht alles mit Atom machen oder Tubtime oder was auch immer man da nutzt.
Ich habe sogar zwischendurch noch, also Windows, ne, in mein Notepad Plus Plus immer offen.
Das ist ja auch so ein Code-Editor mit ein bisschen Syntax-Highlight.
Das benutze ich jetzt nichts für Coden, aber wenn man mal so ein Skript oder so ein Editor Zeile irgendwie wie beim VI so ein bisschen schnell ändern will, dann ist das eigentlich super schnell geladen, offen und hat es wieder weggeschickt.
So, dass das ganz nett für so Configs oder so.
Ja, und E-Mails haben wir noch vergessen.
Ich weiß nicht, ich bin leider kein Power nutzen.
Oder Leute, die das benutzen, warum auch immer.
Wenn jetzt der große Aufschrei, wenn du die Menschen fragst.
Ja, ja, nee, das ist natürlich auch.
Es gibt
den Operating-Mode, da kann man irgendwie direkt seine Zeit mitmanagen und so.
Also ziemlich coole Sachen, die man damit macht.
Ja, ja, irgendwie so.
Ja, ja, ja.
Ja, also E-Macs kann auch alles irgendwie.
Eigenes Betriebssystem, habe
ich gehört.
Ja.
8 Megabytes und constantly auch wie schlecht solche Witze, Altern, ne?
8 Megabytes und Constantly Swapping, sozusagen, das war früher der Witz bei E-Macs.
Aber ja, irgendwie.
Und da müsste man wahrscheinlich eher sagen, 8 Gigabytes oder so.
Der swapt einfach nicht mehr.
Das passiert nicht mehr.
Das ist heute sehr, sehr schon im Vergleich zu allem anderen.
Ich meine, wenn man sich anguckt, die so eben Peitschrahmen, unfassbar fette Java-IDE, wie es Code.
Das ist irgendwie ein JavaScript-Monster gewrappt in einen kompletten Chrome, der irgendwie Elektron ausführt.
Oh mein Gott.
Also das ist natürlich schon alles irgendwie nicht mehr vergleichbar mit irgendwie, also Emacs ist dagegen ja wirklich tatsächlich irgendwie so die Basic Lisp.
Ja, also apropos, wo wir gerade bei so Swap-Sachen sind, was hältst du denn von sowas wie RAM-Betriebssysteme oder so, dass du einfach direkt alles in den RAM lädt und daran arbeitest, ich weiß nicht, ob man überhaupt noch dann feste Sachen braucht, wenn 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.
Ja, ich habe auch
schnell gedacht.
Da weiß ich nicht, ob es noch was bringt, wenn man das jetzt alles noch ein Hauptsprecher könnte man natürlich tun.
Wobei jetzt auch die meisten Maschinen so viele Hauptspeicher haben, das ist sowieso alles egal.
Es ist wahrscheinlich eh alles gecached im Fallsystem Cache.
Ich weiß es nicht.
Aber ich glaube, da viel mehr beschleunigen kann man dann, also jedenfalls beim Dates, wenn man sich so ein akquelles Merk wohl nimmt.
Also das ist so schnell.
Ja, das ist natürlich auch immer die Power-User-Version.
Ja, aber also da ist echt, ich muss da auch nie auf, oder fast nie auf, also doch, Docker.
Docker.
Docker ist langsam.
Aber gut, da kann ich mir auch ungefähr vorstellen, woran das liegt.
Aber ansonsten halt außer wenn man jetzt irgendwie so Modelle rechnet oder so, ne, oder trainiert, dann ist es natürlich auch wieder.
Ja, die muss ja eigentlich auf Grafikkarten Hardware trainieren, habe ich mir sagen lassen.
Was auf MacBooks auch tatsächlich so halbwegs geht mit, wie heißt es noch?
Mit Metal, da gibt es ein Ding vonrechnen.
Ja, keine Ahnung, wo man halt die Grafikkarte auf MacBook verwenden kann.
Das geht halbwegs gut.
Es ist also auf jeden Fall so achtmal so schnell, als wenn man irgendwie CPU dafür verwendet und das ist ja schon mal ganz ordentlich.
Also eine schöne GTX oder so oder so.
Ja, Plate ML heißt das Plate ML, genau.
Ja, 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 nochmal gesehen habe, was tatsächlich mir gut gefallen hat.
Also mich nervt immer noch, dass es halt irgendwie so rumleckt, dass halt, wenn man irgendwo drauf drückt oder so, dass es immer so klebrig ist, nicht so wie bei, also VS-Code ist halt viel besser.
VS Code ist total toll.
Ja, auch, aber tatsächlich, was bei PyCharm cool ist, sie können zum Beispiel die Debugging-Geschichten.
Das hat mich ja letztens wieder.
Du kannst aber VS Code auch.
Okay.
Ja, ja.
Aber du kannst zum Beispiel auch in Docker debuggen oder remote debuggen.
Ja.
Ja?
Ja.
Echt?
Muss du 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 sieht echt, das ist schon deutlich cooler, als wenn man einfach nur so eine PDB-Shell hat.
Ja, gut, aber VS Code, ich habe jetzt nutze nicht so viel, aber was geht, glaube ich, ganz gut.
Ich habe auch nicht gebaut.
Ich habe es nur mal getestet und es sah wirklich sehr gut aus.
Ich ehrlich gesagt benutze ich sehr selten Debugger.
Ich benutze das nicht so oft.
Wenn ich Sachen ausprobiere, dann mache ich das eh in einem Notebook.
Ich mache das nicht in dem
Jahr von ihr übernommen, das ist tatsächlich gar nicht so schlecht, dann sieht man ja direkt, was für
hier läuft.
Ja, und dann, wenn man dann halt Code irgendwo hin tut, dann weiß man halt eigentlich schon, dass da 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 kollaborativ gemeinsam an Projekten arbeiten und sich den Cursor und so weiter.
Das weiß ich nicht, ob sowas bei Pytscharm auch geht.
Aber das hat mich ja, das ist, ja, das ist also, das fand ich auch sehr beeindruckend und das hat super funktioniert.
Also per Programming Remote, also ich meine, mit dem VI geht das natürlich auch, dann nimmt man einfach irgendwie T-Max oder Screen Windows X oder sowas und dann kann man das auch machen.
Aber na, ehrlich gesagt, mit VS Code ist es schon gut.
Yes.
Und ja, ne, das 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 wie es Code mit einem tollen Terminal, mit einem Windows-Terminal auf einer Windows- und WSL-Maschine.
Natürlich macht ihr da hyperweise an und macht euch da virtuelle Maschinen noch drauf.
Da könnt ihr dann eine Ubuntu-Entwicklungsumgebung oder sowas einfach hochfahren und dahin auch deployen und so.
Könnt ihr ja für Shared Folders 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, sagen wir, das Debuggen hat mir gut gefallen.
Dann, was mir auch noch ziemlich, 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.
Man 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, ne, weiß ich jetzt auch nicht.
Gibt es noch irgendwas, was bei BS 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, ähm, mit den JSON-Settings.
Und das ist irgendwie alles schnell, handlich.
Ich kann es überall benutzen.
Also ich mag halt diese Schlangen.
Ich mag eigentlich mal mochte ich Atom, mochte ich ganz gern.
Aber der ist halt sehr schlank auch, ne?
Das ist auch ein Elektronen-App.
Das ist schlank ein paar hundert Mega-Ewald oder so.
Das ist einfach egal.
Ja, also naja.
Ja, Atom hat auch gut funktioniert.
Hab ich auch mal eine Zeit lang irgendwie JavaScript-Geschichten gemacht.
Aber ja, ne, das stimmt, habe ich schon schon lange nicht mehr, hab ich schon lange nicht mehr gestartet.
Eigentlich nur noch VS Code.
Ja, ich bin das hier noch für Musik, weil da gibt es ein paar Plugins, die mir auf jeden Fall VS Code, wenn es um Rust geht und Titel Cycles oder sowas.
Da gibt es so ein paar lustige Sachen.
Aber das ist eine andere Geschichte.
Ja, ansonsten, genau, achso, ja, was auch zur Entwicklungsumgebung natürlich zugehört, Linta.
Oh ja.
Welche hast du alle an?
Alle?
Flake 8 nehme ich normalerweise, wobei man immer gucken muss, dass das halt irgendwie so kompatibel ist mit Black.
Ich benutze Black zum Formatieren.
Vieland, 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 von manchmal nicht konfiguriert, macht es das halt nicht.
Beschwert sich es halt irgendwie über fehlende Spaces bei irgendwie Operatoren oder irgendwie so Sachen.
Und pilant eigentlich nicht.
Ich hab sie alle an.
Ich hab sie alle an.
Ja, Pep 8, Flake und Black und so.
Und die zeigen eigentlich immer dasselbe.
Naja, bei mir nicht so unbedingt.
Ich glaube, ich habe auch ein Zwei Flex gesetzt.
Was ich noch ganz interessant fand, jetzt muss ich nur sehen, ob ich das wiederfinde.
Wo war denn das?
Es gab da noch ein ziemlich cooles, also es gab einmal Paylama, das komme ich an.
Ja, Paylama, stimmt.
Moment, ich mache das.
Vielleicht kann ich dir noch irgendwas Neues erzählen.
Ja.
Und ähm.
Dann gab es auch noch irgendwie so ein schönes Tool, um Codekomplexität irgendwie zu messen.
Aha, aha.
Also ich habe noch bei mir mein eigenes Linting drin für bestimmte Keywords, die ich da reinpacke.
Das ist auch immer noch ganz witzig.
Aha, okay.
Mit dem To-Do-Tree, nämlich bei VS Code, da kannst du To-Do fixme Hackbug to be discussed oder sowas, da kannst du eigene Tags einbauen für dein Team und für dich, die dann irgendwie mit Igens noch gefleckt werden und die du halt an einem To-Do-Extra-Fenster dir anzeigen lassen kannst, um dann zu bearbeiten und so.
Ach, okay.
Das heißt, ich habe jetzt hier so ein To-Do-Ding, da kann ich dann alle Sachen sehen direkt, die ich mir markiert habe.
Ja, und das kannst du nett.
Okay, nee, das ist nett.
Ich hab's tatsächlich wiedergefunden.
Na, genau, das Ding heißt Radon.
Oh, Radon.
Und kann man auch in Pylama integrieren, genau wie PyCode-Style.
Ja, Pylama habe ich.
MyPi gibt es noch.
MyPi, ja.
PyDoc-Style.
PyDocate, ja.
Also MyPy ist ja auch mal so eine zweischneidige Geschichte.
Ich weiß nicht, ich weiß nicht.
Aber ja, kann man natürlich auch machen.
Aber was an diesem Radon irgendwie ganz nett ist.
Es gibt auch Bendit, ist mir eingefallen.
Bendit ist ein Security-Lint.
Der lintet bestimmte Dinge, die vielleicht Security-relevant sein könnten.
Okay, nee, das kann ich nicht.
Ja, was an Radon nett ist, dass er ermittelt zum Beispiel so einen Wert nennt sich Cyclomatic Complexity.
Ehrlich gesagt weiß ich nicht genau, was ist das dazu?
Aber der misst halt sozusagen deine Code-Komplexität.
Und du kannst ihm halt sagen, okay, ab dem, wenn es so komplex ist, dann machen Fehler draus.
Und du kannst es halt auch eventuell so einbauen, dass halt du nicht einchecken kannst oder nur, also ich meine, ob man jetzt Pre-Commit mag oder nicht.
Das halt sagt, also wenn du 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 du irgendwas refactuert hast 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 muss man halt da nochmal refaction oder so.
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 der, wo so die fiesen Stellen immer eigentlich.
Also ich finde es ja nett, wenn man irgendwie das Feature nicht finishen könnte, wenn der Skidflow nicht mehr geht, als wenn man dann tatsächlich nicht machen könnte, wenn man Grund 3-Abmachung will.
Ich mache das auch, damit es kaputt geht, aber ja gut.
Nee, ich mach das auch nicht.
Das ist echt so extrem, was wir uns noch nicht machen.
Ja, aber genau, das kann man sich auch mal angucken und ich fand es halt nett, dass es sowas überhaupt gibt.
Hab mir noch gar nicht so klar.
Ja, damit sind wir eigentlich so durch die Linta und Dinger durch.
Ja, wir haben unsere Entwicklungsumgebung, wir haben unser Terminal, wir haben das System und die Software.
Muss du noch irgendeine andere Software zum Entwickeln sonst?
Also mir reicht eigentlich immer der Editor, das Terminal und das war.
Ja, Notebooks.
Finde ich bei Django-Projekten finde ich Notebooks unfassbar hilfreich.
Also man kann ja da auch tatsächlich den 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.
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 letztes 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.
Wacker benutze ich manchmal.
Da kann ich genau checken, welche Projektzeit ich wie, wo,
was ich verwende das.
So was benutze ich auch.
Ich habe dafür verwende ich normalerweise Toggle.
Check das auch automatisch mit, welche Idee du gerade nimmst oder benutzt oder so.
Das ist nämlich schön, weil ich sehe nämlich direkt, welche Projekte ich benutze dann.
Also je nachdem, welchen Editor ich auf habe und 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.
Du erfasst auf die anderen Programme.
Also ich kann das auch so einstellen.
Aber wenn du am Rechner sitzt, aber das erfasst halt nicht, wenn du da sitzt und ein ER-Diagramm malst oder auf- und abläufst oder irgendwas nachdenkst oder so.
Aber es geht ja nicht darum, dass du jetzt daraus deine komplett abbrechende Zeit machst.
Es geht nur darum, dass du
einen Überblick dafür hast, wo welchen Projekten verbringst du so wie viel Editor-Time oder so.
Ja, okay.
Und du weißt ja auch ungefähr, wie viel du am Tag dann tatsächlich ideal gecodet hast oder wie viel du geschafft hast und dann kannst du ja so ein bisschen angucken.
Wo du gerade ERM-D-Diagramm gesagt hast, da gibt es ja sowas Tolles, was ich ja letztens gesehen habe, mit dem man ganz tolle ERM-Diagramme malen kann.
Wie heißen das nochmal?
Graphits, glaube ich.
Graphits, 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 auf seine Django-Modelle schicken und dann macht er dann direkt automatisch ein EM-Dreagramm draus.
Wunderbar, einfach mit einer Kommandozeile, bam.
Genau, das Manage Manage PY kann das schon für Django-Geschichten.
Ja, Manage Py-Graph Models und dann Dateiname oder so.
Genau.
Ja, Entwicklungsumgebung.
Haben wir noch was vergessen?
Sachen sind Prettier irgendwas, das kann man noch anmachen.
Dass man so ein bisschen schönere Code-Formatierung macht, das so ein bisschen wie Linting, aber das benutze ich meistens tatsächlich nicht unbedingt nur für Python, aber für diese ganzen Webgeschichten, für HTML-Files oder JSON oder JavaScript oder andere Configs, macht er 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, dass da muss man einfach nur drunter tippen und hat automatisch eingestellt.
Das finde ich immer ganz nett.
Wie lange ist deine Settings, JSON, in VS Code?
Das weiß ich ehrlich gesagt gar nicht.
Ich kann hier gerade mal nachgucken.
VS Code.
Wo sehe ich denn das?
Du kannst hier öffnen mit.
Bei mir ist Control, Control-Komma.
Also ich sehe hier, wir haben so ein Command-Komma wahrscheinlich, das sind die Settings.
Und dann, wo muss ich da.
Dann muss ja hier oben da ist irgendwo JSON angezeigt in der Ecke.
Aha.
Also mir macht das JSON, aber ich glaube, ich habe aber das rebindet tatsächlich, dass er nicht, dass er direkt das JSON aufmacht.
Ja, okay.
Also ich kann das hier nicht so direkt sehen irgendwie.
Ist das nicht das File?
Doch?
Nee, doch.
User-File, ja, okay.
Nee, keine Ahnung.
Ja, egal.
Ja, ich habe schöne 400 Zeilen runtergeguckt.
Ich bin ganz schön darauf, dass ich immer wieder umschwitsche 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-Feeds ändern muss, anpassen muss, dass man, wenn man die Dateien speichert, da 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, ja.
Zu Recht.
Ja, sieht man ja auch alles nicht, 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.
Beta-Anzeigen, YouTube-Videos direkt in der Konsole abspielen und auf unserem 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 mal 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 ihr dann auch gerne mal in Rust oder in Go schreibt.
Und ja, da gibt es tolle Sachen.
Also zum Beispiel ein Tool, was ich in letzter Zeit entdeckt habe, was halt so, ich habe nicht so richtig geflasht, das war echt gut, ist FZF.
Ah ja, stimmt, das kann man auch mit Fisch kombinieren.
Ja, ja, genau, genau.
Und dann Stern-Stern und dann macht es automatisch irgendwie eine Suche rekursiv in einem Dateisystem und man gibt es halt, also das sucht im Grunde, also dem kann man beliebige Sachen irgendwie reinpipen, so nach via Standard-In.
Und dann macht es da drauf halt Suche.
Ja, genau, ja.
So fuzzy-Suche.
Und wenn man jetzt, man kann jetzt einfach Buchstaben eingeben und dann sucht es halt die Dinge, die dazu so am ähnlichsten sind.
Und das funktioniert ziemlich, ziemlich gut.
Und es zeigt es halt, während das läuft schon an.
Das heißt, man hat so eine eingebaute Preview und also man muss es halt mal ausprobieren.
Es ist wirklich, wenn man das ein paar Mal verwendet hat, so wow, warum hat es 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 Feind, also weil Feind ist halt auch so eins von diesen alten Tools, die eigentlich gar nicht so geil sind.
Und da gibt es ein neueres, nennt sich FD.
Und FZF plus FD ist unfassbar schnell.
Und man kann damit halt super irgendwie auch in großen Projekten irgendwie Dinge sofort finden und so.
Und dann gibt es, hat man da auch, kann man dann auch irgendwie gleich ein Vorschau-Ding mit einbauen.
Und dann, also ich glaube, 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 da 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 halt auch Syntax-Highlighting für alle möglichen unterschiedlichen Arten von Dateien, also JSON oder weiß ich nicht, eben Python alle möglichen Programmiersprachen.
Und das koloriert dann halt die Preview auch, sodass du halt 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 BAT ist halt echt ziemlich cool.
Und genau, auf Grab auch gibt es auch ein Ding, das ist RibGrep, irgendwie ein gutes Stück schneller und netteres Interface.
Und ja, das ist auch schön.
Lass mich mal überlegen, was gibt es denn noch?
Also das Prompt sollte man vielleicht auch cooler anhören will.
Obwohl du jetzt sagtest, du hast das ausgemacht bei irgendwie.
Ja, nee, ich habe tatsächlich auch.
Also im Prompt ist immer so eine Zweifel, die manchmal aufmal, das habe ich auch tatsächlich nicht auf allen Rechnern gleich.
Weil wenn das zu fett wird, dann nervt mich das.
Und gerade, wenn man jetzt auf GitLab zum Beispiel irgendwie einen Merge-Request aufmacht 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, also die Verzeichnisnamen, Strukturen zum Beispiel schon mal sehr viel abkürzen, dass er relativ Anfangsbuchstaben zeigt und so, dass man relativ den Tree ein bisschen kürzer fasst.
Was ich sehr gerne mag im Prompt, ist, wenn ich im Gitrepo habe, dass er mir einen Status hat, für 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 pulen muss oder so, damit das gleicht.
Und ob ich schon committed habe und so, das finde 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 also zumindest für ZSH und Fisch, gibt es halt noch Paketmanager.
Also O mei ZSH oder OMIFisch.
OMIF.
Und da kommen dann halt auch solche Dinge mit so Themes und so, die man installieren kann, wo dann halt Leute sich Gedanken gemacht haben, wie man.
Ich glaube auch, wenn der Fisch ist auch Dracula.
Ah, okay.
Und das ist halt sehr schön, wenn der Editor Dracula ist und die Shell ist Dracula und so und das ist alles, dann macht Spaß.
Dann, äh, ja.
Kleine, also was ich mal sehr gerne mag, auch ich mache bestimmte Verzeichnisse, lange Verzeichnisse haben, ersetze ich euch an Icon oder sowas, wenn ich halt eine Wolke für die Cloud oder wie auch immer.
Das ist auch ganz nett.
Home kennt man ja mit der Tilde.
Aber ja, und sowas halt, ne, in Kombination ein bisschen kann man überlegen, was eine Uhrzeit will, Benutzernamen, Rechnername irgendwie.
Ja, ich sehe das bei dir zum Beispiel dieses Prompt, der mir schon zu lang und ich mache das ja meistens so, ich habe auf jedem Monitor mindestens mal so zwei Shells irgendwie.
Ja, das mag ich nicht.
Also ich mag dann.
Okay, genau.
Dann ist es halt nicht so ein, eben, dann ist es natürlich nicht so ein Problem mit dem langen Prompt.
Aber wenn du jetzt vorstellst, es 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.
Ja, genau.
Ich kann mich da auch nicht so richtig dran gewöhnen.
Ja, ich habe mir zum Beispiel auch immer vorstellen, was das jetzt gerade für eine Shell ist, ne?
Ob das jetzt ein Fisch ist, ein PowerShell oder WSL oder so.
Ja.
Aber ja.
Ja, das sogar auf jeden Fall aber auch dazu, zu der Entwicklungsumgebung.
Ja, auf jeden Fall.
Ja, also generell so die ganzen Aliasse, ne?
So, was macht ihr gerade?
Ich habe 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 nur noch im Rechner schlag, dann hat er automatisch an seine Freundin eine Nachricht geschickt aus einem random Stream, warum er heute später kommt oder sowas oder andersrum.
Wenn er morgens noch nicht um Völle vor neun dran saß, dann hat er automatisch eine E-Mail an seinen Arbeitgeber oder den Kunden verschickt.
Hangover und so.
Dann kann man lustige Sachen mitbauen, irgendwelche Cronjobs einrichten und so.
Ja, genau.
Ansonsten, ah, das einzige Command-Line-Tool, was halt auch noch ziemlich wichtig ist, ich weiß nicht, aber das können wir hier eigentlich auch nicht so richtig on Detail.
Ach, da ist es T-MAX halt so.
Ich weiß nicht, ob du das verwendest, so im Alltag oft, aber.
Du meinst jetzt das Android-Diberg.
Nee, nee, nee, nee, dass man sozusagen einfach noch einen Shell-Multiplexer hat.
Ach so.
Dass man halt sozusagen, damit kannst du auch zum Beispiel auf allen und auf unterschiedlichen Maschinen halt gleichen Shells hinkriegen, wenn du das richtig verwendest.
Oder dass du halt sozusagen dich auf einem Rechner einloggst und dann halt alle Shells wieder so hast, wie du so vorher hattest oder so.
Ja, genau.
Aber naja, gut, also das ist nochmal eigentlich.
Ach, jetzt weiß ich, was du meinst, also der speichert die Session quasi von dem einzelnen, ja, ja, genau.
Ja, benutzt du irgendwas für deinen, also Thermox, ich habe gerade verwächst.
Ich benutze zum Beispiel Thermox noch für Android, das ist vielleicht gar nicht so schlecht.
Das kann man 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?
Du bist ja die Apple-Familie, habe 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, habe ich früher mal, gab es iSSH oder so verwendet, aber das mache ich eigentlich praktisch nicht mehr.
Warum eigentlich nicht?
Aber das ist einfach, naja.
Was es gibt, was für mobile Geschichten ganz praktisch ist, was man vielleicht mal auch, ist, also gerade für Zugfahrten, also Zugfahren in Deutschland ist ja irgendwie immer so, tja, mit Internet ist halt da nicht so richtig.
Und ab und zu hat man ja schon mal Netz, wenn man dann so irgendwie, keine Ahnung, an der Autobahn vorbeikommt oder irgendwie an der Stadt oder so, dann ist er manchmal schon so für einen kurzen Moment wieder Netz da.
Und wenn man jetzt irgendwie SSH verwendet, also eben T-Max hilft einem dann natürlich auch oder irgendwas in der Richtung und T-Max auf Screen oder so, wenn man 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 Mosch.
Ich guck mal gerade, ob das, 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 Package Loss ist.
Und jetzt immer mit der Bahn durch die Gegend fährt oder so, dann hat man halt die ganze Zeit irgendwie komisch Package Loss, Verbindung ist weg.
Seltsame Dinge passieren, ja, Signalstörungen, Zügebleiben liegen, keine Ahnung, Schildkröten regnen, was ich nicht von mir will.
Katze, Hunde, Katze, solche Sachen passen dauernd.
Und das heißt, ja, eine TCP-basierte SSH-Session ist halt einfach nicht das, was man haben will, sondern was man haben möchte, ist was UDP-basiertes, Mosch und das funktioniert super.
Also da geht deutlich mehr durch.
Das funktioniert da halt unter noch deutlich schlechteren Bedingungen als jetzt O SSH.
Und das Ding bleibt halt die ganze Zeit quasi, also wenn man mal kurz kein Netz hat, dann geht halt nichts, aber sobald man Netz hat, geht da eigentlich sofort wieder was durch.
Ohne dass man irgendwie neu connecten muss und diesen ganzen Kram.
Ja, klingt.
Aber das ist schön.
Klingt nützlich, ja.
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.
Wir haben bestimmt irgendwas vergessen, schreibt uns das an unsere E-Mail.
Hallo.pythonpodcast.de.
Genau, ja.
Ansonsten, ja, ich weiß nicht, dann sind wir damit durch.
Haben wir noch irgendwie sowas wie Pix oder so?
Ja, ich wollte wieder so ein Anfänger-Pick machen und da habe ich P-Print gefunden.
Data Print-Pretti für JSON.
Also ich habe irgendwie Sachen aus dem Server gepasst und da kam immer sicher Unfug raus und ich musste mich totsuchen oder halt immer fein ein Pretty Print.
Macht man dann einfach, importiert man das P-Print und macht dann ein extra P vor das Print.
Und dann hat man lesbare JSON-Daten beispielsweise, die man von einer API zurückbekommt.
Hm, sehr schön.
Ja, mal Auto-Format, ein bisschen Auto-Intendation und sowas.
Ja, ich habe ein ganz interessantes, es ist halt auch eher so, dass es dann ein bisschen mit vorsichtig Vorsicht anfassen vielleicht.
Ist so ein habe ich im 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.
Und dann gibt es da ja divers, die einem 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-Optionen und so mit reingeben wollen.
Und dann habe ich mit Klick angefangen und dann bin ich aber irgendwie drauf gestolpert, dass so ein Ding gibt, das es 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 Command-Line-Interface aus den Type-Annotations.
Also du gibst sozusagen den Funktionen, die halt die Entry Points sind, gibst du halt 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 da noch so an Argumenten mitgeben kannst.
Ach, schön.
Und das ist natürlich praktisch, weil da muss man halt Dinge nicht doppelt und dreifend entscheiden.
Wenn man sich dann schon angewöhnt, schon braucht Hype-Annotations mit, in seinen Code einzubauen und Doc Swings, dann hat man tatsächlich eine vernünftige Help-Funktion.
Ja, und eben man schreibt dann halt nicht Print, sondern man schreibt dann halt Type.echo oder sowas.
Und dann dem kann man dann halt auch sagen, und das mache hier das mal rot und das farbig und das sind fertig.
Und das geht auch alles.
Und dass man halt diese Probleme auch erledigt hat.
Das heißt, man muss halt nur noch eine Abhängigkeit und hat 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.
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 jetzt auch mal und wieder.
Ja, seht uns demnächst bald auf irgendwelchen Events hier, vor allen Dingen in der Rainer Decke und vielleicht auf der Europäis in Dublin.
Ja, vielen Dank, dass ihr jetzt wieder zugehört habt.
Wir sind ganz stolz auf unsere Abonnenten.
Ich glaube, wir haben beinahe 1000 Abonnenten jetzt über die ganze Zeit.
Wo alles zelt, ja, vielleicht.
Das ist noch ein Wahnsinn.
Vielen Dank fürs Zuhören.
Jo.
Ja, bleibt uns gewogen, egal zu welchem Tages-Nachzeit ihr uns hört.
Und bis zur nächsten Folge.
Alles klar.
Tschüss.