Transcript: Python Entwicklungsumgebung 2020 Edition
Full episode transcript. Timestamps refer to the audio playback.
Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Python-Podcast in der 16., 17. Episode.
Heute geht es um eure Entwicklungsumgebung.
Ja, was machen wir eigentlich? Ich bin der Dominik, bei mir ist wieder Jochen.
Ja, hallo.
Wir sind diesmal wieder in der Raumschiff-Zentrale.
Genau, da sind wir ja eigentlich nicht so häufig, aber heute irgendwie, glaube ich, zum zweiten Mal.
Ja, zum zweiten Mal, genau.
Ja, sieht auf jeden Fall beeindruckend aus mit so drei Monitoren und vielen blinkenden Lichtern.
Es gibt ja sogar auch einen Bonsai-Baum
und einen Kaktus.
Wow.
Was auch immer die in der Zentrale hier machen, aber ja.
Ja.
Ja, Entwicklungsumgebung heute.
Wir haben euch leider ein bisschen
warten lassen mit der Episode. Wir sind gerade
sehr eingespannt gewesen in 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äßige Folgen
aufzunehmen. Also seid uns nicht böse
und hört uns doch an.
Ja, spontan ist halt einfach 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.
Ich meine, wie kamen wir eigentlich
auf das Thema?
Ich glaube, ah, ja, richtig.
Apple hat mal wieder,
das kann jetzt vielleicht für Leute
so ein bisschen langweilig sein, die jetzt keine
Apple-Hardware verwenden.
Ich erzähle gleich noch was zu was anderen.
Apple hat
halt Ende des Jahres
2019, muss man sagen,
neue Hardware rausgebracht
und diesmal ist es
tatsächlich auch wieder irgendwie sozusagen
Grund zur Freude. Das war lange Zeit nicht der Fall.
Irgendwie viele Leute behaupten so
2015 sind die letzten
MacBooks rausgekommen, die man gut
kaufen konnte und da
ist auch was dran. Ich
habe selbst irgendwann
das 2016er
MacBook Pro, glaube ich, mal
gekauft mit Touch Bar
und das war
ziemlich furchtbar. Das war tatsächlich,
muss ich sagen, also ich
verwende so
MacBooks zum Entwickeln
seit
2004 ungefähr, glaube ich.
Also schon eine ganze Weile.
Also ich übrigens nicht. Ich habe immer
alle möglichen Maschinen hier stehen.
Vorher war ich eher auf Linux,
aber das Problem mit Linux ist dann
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 Monitor an und dann passieren
seltsame Dinge und irgendwie
wie heißt dieses
ACPI?
Ich weiß nicht genau. Dieses
Einschlaf-Aufwach-Ding.
Das hat auch nie so richtig
toll funktioniert und
man muss halt irgendwie dauernd seinen
Kernel neu kompilieren und so.
Ich habe einige G-Versuche auch gemacht unter
verschiedenen Linux-Distributionen, die
jedes Mal mich nicht überzeugt
haben, dass, also außerhalb von Server-Eingebungen
oder sowas einsetzen zu wollen.
Ich werde von den Leuten im Computer-Club 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 das denn dazu?
Ja gut, vielleicht
Noobs unter sich oder so, ja.
Nee, gut, ich kann durchaus verstehen.
Das, was ich auch immer höre, ich habe auch in letzter Zeit noch mal
Windows auf dem Laptop gehabt und
was auch sonst Leute
sagen, das ist alles nicht mehr so furchtbar schlimm. Man kann also
mittlerweile auch Windows ganz gut als
Entwicklungsumgebung verwenden.
Erzähle ich euch auch gleich, wie man das machen kann.
Ja, also
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 ein Laptop auch zu was anderem
verwenden will, außer jetzt entwickeln.
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
Klub im Feld 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. Ne, 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
nutze gerne Steam, wenn nicht jetzt auch 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 in deinem Wohnzimmer und dann kannst du damit
Controller mit deinen Kumpels vorsitzen und irgendwelche
Indie-Games zocken.
Okay, ja, das klingt tatsächlich ganz interessant,
weil ich meine jetzt so die,
eben, also ich meine,
man will es ja auch vielleicht mal gemütlich haben, wenn man
jetzt irgendwie was spielt.
Dann so ein
lüftenden, lauten, blinkenden
Kasten irgendwie im Wohnzimmer stehen haben, das will jetzt
vielleicht auch nicht sein. Aber ich möchte natürlich die Modding-Fähigkeiten haben
und die Rechner sind meistens immer wieder ein bisschen schneller,
es sei denn, die neueste Generation ist gerade draußen, als
irgendwie so eine Konsole und viel
flexibler und so, ne? Von daher.
Ja. 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 über Entwicklungsumgebung
reden. Genau, genau, genau. Ja, aber ich will aber noch gar nicht
mit meiner Notebook-Story.
Deine Story ist eine Note-Story. Ja. Ich mache
aber trotzdem noch einen kleinen Break. Okay. Weil eure
Fragen, Anmerkungen, Kommentare und so weiter, könnt ihr
in hallo-at-pison-podcast.de schicken, das wollte ich
eigentlich auch noch sagen, hast du direkt losgelegt.
Und wir wollten noch so ein bisschen
angeben, weil wir haben jetzt
einige Abonnenten, vielen Dank dafür,
dass ihr alle so fleißig zuhört.
Ich bin überrascht, dass immer wieder, also ich meine, das ist ja nicht so
wirklich regelmäßig, was wir machen und
lang und langatmig
und weiß nicht und trotzdem irgendwie
sieht das
so aus, als ob es da irgendwie tatsächlich Leute gibt, die das
interessiert.
Ich war jetzt auf dem letzten
Pai-DDF-Treffen, war auch jemand da,
der meinte, er hat von dem Pai-DDF-Treffen
erfahren über den Podcast.
Der konnte ich leider nicht.
Ich hatte einen guten Grund.
Also, ja,
genau, das
erfreuliche Entwicklung.
Ja, aber wir erwarten genau News aus der Szene und so, bevor wir jetzt in das Thema
zeigen. Ach so, okay.
Ich mach mal so einen Chapter-Mark jetzt.
Ja, dann machen wir das.
Ich weiß gar nicht genau,
ob es da irgendwas Besonderes gab.
Ich habe jetzt...
Ziemlich unvorbereitet.
Die Chapter-Markte haben gerade überhaupt nicht funktioniert.
Ja, hat nicht so richtig funktioniert.
Ich habe auch immer das Problem, dass das nicht so richtig klappt.
Also entweder man muss da reinklicken
oder man muss da irgendwie noch was anders konfigurieren oder so.
Aber bei mir funktioniert das auch nicht so richtig gut.
Naja, muss man halt hinterher noch mal machen.
Nacharbeiten.
Genau, also wirklich interessante, tolle Neuigkeiten.
Python 2 ist tot.
Ach so, ja, natürlich, okay.
Wir sind doch jetzt im neuen Jahr, wir haben doch die erste Folge
dieses Jahres. 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, noch
um das halt noch releasen zu können.
Und das
war es halt dann. Ja, dann können die ganzen
Leute endlich, ja, man könnte jetzt
anfangen, seine Python 2.3-Umstellung mal in Gänge
zu bringen.
Es kamen so ein paar Anfragen rein, 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
PIDF-Treffen ganz interessant. Da gab es
von Marc-André
halt einen Vortrag dazu,
wann denn jetzt nur wirklich richtig
Schluss ist, weil ich meine, man kann jetzt, selbst wenn man
sagt, okay,
Support ist mir eigentlich egal, ich mache
einfach weiter.
Ja, ich meine, was soll schon passieren?
Alles egal.
Ich bin da gar nicht darauf angewiesen,
dass ich da jetzt offiziellen Support von irgendjemandem
habe, dann betreibe ich meine Systeme einfach
weiter, aber es gibt da so Dinge, die dann
irgendwann tatsächlich kaputt gehen werden.
Unter anderem halt deswegen,
weil Setups, Tools
selbst nicht mehr unter
Python 2 funktionieren werden, ab jetzt
einer relativ aktuellen Version irgendwann.
0.45, irgendwas
oder eins drunter, keine Ahnung.
Und das bedeutet halt, wenn, sobald
das nicht mehr richtig geht, wird halt auch
PyPI nicht mehr richtig gehen und sobald
das nicht mehr geht, ist halt irgendwie vorbei, weil dann kannst du
halt nichts mehr installieren. Nativer Python-Interpreter.
Ja. Naja. Also
man sollte sich tatsächlich... Selbstgeschriebene
Skripte könnten ja noch gehen.
Nee, du kannst tatsächlich
nichts mehr installieren.
Nee, du musst nicht installieren, du hast ja selber geschrieben.
Ja gut, aber
also, die keine Abhängigkeiten
sonst irgendwas haben, das ist schwierig.
Also, ja.
Die Standardbibliothek ist groß, vielleicht geht da ein bisschen was an.
Ja, wir sind durch, Python 2
ist endlich weg. Ja, könnt ihr endlich
für immer weglassen. Alles
neue, alles Python 3. Guckt euch gar nicht mehr
an, was in Python 2 irgendwann mal Legacy war.
Es ist egal.
Ja, ansonsten
genau, ich weiß nicht, wie lange jetzt
3.8.1 raus ist, auch schon eine ganze
Zeit. Also die erste meiner
Version von 3.8.
Also 3.8 verwende ich jetzt auch
tatsächlich schon
bei den meisten Sachen, die ich so mache
und das funktioniert gut.
Die meisten haben eigentlich immer noch so Probleme,
dass es gewisse Bibliotheken gibt, die so ein bisschen
hinterherhinken.
Wir hatten einen ganz bösen Bug bei 3.8 und
Jupiter und Tornado. Ich habe noch gar nicht geguckt,
ob bei 3.8 eins weg ist. Ich habe das nämlich manuell gepflixt.
Man konnte nämlich die Jupiter-Notebooks dann einfach
nicht mehr laufen lassen. Zumindest jetzt in Windows hat das
nicht funktioniert. Das war immer sehr
anstrengend. Aber ja, wenn man in Tornado
eine Zeile eingefügt hat, das war ein Bug bei Asien,
irgendwas, dann ging es wieder.
Das konnte man manuell beheben, aber ja.
Ja, genau.
Also wenn das jetzt tut,
also ich habe jetzt tatsächlich sonst nichts gemerkt,
außer dass halt ein paar Pakete noch ein bisschen gebraucht haben.
OpenCV und so sind immer so Kandidaten,
die dauern ein bisschen.
Aber inzwischen funktioniert alles und super.
Also kann man tatsächlich inzwischen gut benutzen.
Ja, hatten wir noch irgendwelche Dinge, die so...
Gehst du zur Europython?
Ja, gute Frage.
Ich denke darüber nach.
Ich überlege auch,
die Frage wäre halt entweder
nach Porto, zur Django-Con
Europa
fahren oder halt
Europe-Hyton. Dublin.
Auch interessant, aber auf jeden Fall
auf eine von den beiden.
Vielleicht gehen wir ja zusammen hin.
Das würde natürlich
auf die Europe-Hyton besser passen.
Ich muss aber
irgendwann auf die Django-Con.
Naja, das 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, das ist eine gute Idee. PyData oder PyCon.de?
Die sind ja zusammen.
Ich dachte, die sind parallel.
Ja, halt
in einem Gebäude. Ja, okay, das heißt,
man kann nicht herlaufen. Ne, das sind keine getrennten,
das ist eine Konferenz. Achso, ich dachte tatsächlich,
das wären zwei. Ne, ne. Wieder aufgeklärt und dann
keine Ahnung. Na gut.
Ja.
Da seht ihr uns.
Wir sehen uns noch am Python Barcamp.
Oh ja, das ist jetzt demnächst in Köln.
Genau, das ist eine tolle Veranstaltung.
Ist jetzt halt schon wieder so ein bisschen ausgebucht.
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 immer seid, dann schaut doch nochmal danach.
Ja, genau.
Aber ich glaube, auch bei dem Python-Camp in Köln ist es so,
dass halt immer noch so ein bisschen Kontingente freigegeben werden.
Ich glaube, das zweite Kontingente ist schon freigegeben.
Ich glaube, es ist durch.
Ich könnte mal kurz gucken, ob die noch Plätze frei sind
für alle Menschen, die das jetzt noch hören.
Wir nehmen jetzt übrigens gerade auf, am 3. Februar ist heute, glaube ich.
Ja.
Ja, okay, ja, dann.
Ja, das ist natürlich ein bisschen doof dann,
wenn man eine Veranstaltung fubbt, die man nicht wählen kann.
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 mal schnell sein.
Aber jetzt vielleicht doch dann unser Thema.
Ja, Thema. Entwicklungsumgebung, genau.
Und ich würde natürlich irgendwie
Du hast deinen Story mitgegeben.
Ich würde gerne aufs Check-in kommen
und ganz unten anfangen bei Hardware.
Ja, okay.
Genau.
Ja, ich bin irgendwann mal auf dem
Mac umgestiegen. Kann ich ja nicht so
ganz verstehen. Ja, ich
meine, ich habe halt dieses Problem mit dem Spielen nicht so.
Ich habe das
irgendwann mal wieder versucht. Ich habe als
Kind und so fand ich das auch toll, aber
dann irgendwie, weiß nicht, irgendwie. Habt ihr das
gehört? Als Kind? Ja.
Mit dem Zaunfeier.
Ja, es war jetzt auch nicht so schlimm.
Ein Erwachsenen-Stammtisch, wo die Leute alle hinkommen.
Ah, okay. Ja, das, ja.
Nee, habe ich nicht. Und
es gibt ja andere, die dann auch sowas sagen, wie
ich bin als Kind irgendwie den
Topf mit den Spielen
gefallen und deswegen
darf ich das heute nicht mehr. Das ist
bei mir gar nicht so. Also ich hätte das zwar schon gern
gemacht, aber so extrem war das alles nicht.
Und ich habe irgendwie die Lust so dran
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 mir, naja, egal.
Aber man kann ja auch nicht gewonnen.
Man kann ja auch irgendwelche 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 sehr nett ist, ist halt,
ja, die funktionieren halt eigentlich einfach so.
Und sie haben halt eine schöne Shell,
so wie ein Linux-System halt auch.
Und es ist ein ganz anderes System.
Wir machen jetzt mal 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 über zehn Jahre lang weiterhin
eine uralte Version einer Bash.
Also muss man auch damals schon irgendwie was anderes installieren,
wenn man eine ordentliche Stelle haben wollte.
Für alle Leute von euch, die Windows nutzen,
bitte nutzt nicht CMD, sondern nutzt die PowerShell.
Die ist übrigens auch mittlerweile für Linux gibt.
Das heißt, auch unter Linux kann man sich eine PowerShell installieren
und die weiter nutzen.
Ich weiß nicht, wer das macht, aber es geht wohl gut.
Ja, also genau.
PowerShell habe ich auch schon gehört,
gute Sachen darüber gehört.
Aber habe ich jetzt auch noch nie wirklich Bedarf gesehen,
das auszuprobieren.
Aber ja, muss ich mir vielleicht mal angucken.
Bash war die Standard-Shell auf dem Mac lange Zeit
und ist dann aber ersetzt worden durch die ZSH.
Jetzt eigentlich gar nicht so lange her.
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
Neustandard war. Das ist auch deine Lieblingsshell?
Naja, ja doch, kann man sagen.
Eigentlich stimmt das schon, das ist schon meine Lieblingsshell,
aber momentan verwende ich
nochmal eine andere,
weil ich dachte, jetzt wo
macOS auf
ZSH als Standard-Shell gewechselt
ist, naja, dann ich meine,
dann muss ich da mal
so, dann ist das irgendwie nicht mehr hip genug
für mich. Da muss ich mal was Neues gucken,
ob es da nicht... Und tatsächlich einer...
Also ich hab dann jetzt einfach mal mit dem
neuen Rechner
halt dann auch ein neues Shell genommen.
Und zwar Fisch. Ja, du hast dann auch Fisch genommen? Ja.
Wollte ich nämlich gerade auch sagen. Fisch ist toll.
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. Dann denke ich mir so, warum nicht? Ach so, oben ist es,
die Shell. Aber sonst ist Fisch echt cool.
Ja, ich muss auch sagen, also 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 Phish tatsächlich dann auch für den Mac.
Ja. Also ich benutze tatsächlich Phish
nur für meine Server und für
mein WSL, also Windows Subsystem Linux.
Und sonst eher
nicht. Also auf dem Windows funktioniert
das noch leider nicht so richtig. Also auf
nativen Windows. Da benutze ich dann
tatsächlich meistens PowerShell.
Okay.
Ja, also eigentlich nur PowerShell sonst, ja.
Ja.
Aber das geht übrigens auch unter Windows.
Ihr könnt euch unter Windows superschöne Terminal-Programme
benutzen. Es gibt sogar
was neu entwickelt wird gerade von Microsoft,
das gar nicht so schlecht aussieht.
Ich finde, das ist noch ein bisschen früher entwickelt und 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 wenn 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 viel 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, also geht natürlich,
aber... Auch das ist ja meistens
dann eine Shell, eine Systemshell irgendwie, die
eingebaut 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 macOS X ist nicht mehr so
oder jetzt muss ich mich dran gewöhnen, macOS
ist nicht so schlecht, oder war
früher, ist besser geworden, sagen wir mal so.
Aber
tatsächlich ist es nicht so wirklich vergleichbar mit dem,
was Item 2 alles kann. Die kann halt
auch so tolle Sachen wie, die hat halt eine Shell-Integration
zu ZSH
oder auch Fischshell oder auch
Bash-Ginge.
Und dann kann die eben solche Dinge UI-mäßig abbilden,
wie man sieht die History oder kann halt sagen,
okay, kopiere mir mal ein File irgendwie irgendwo hin oder so.
Das geht halt, also man kann halt Rechtsklick machen,
man macht LS und sieht halt ein Verzeichnisliste
und sagt halt irgendwie, Rechtsklick da drauf,
kopieren wir das mal irgendwo hin oder so.
So was 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 wunderschnell selbst
ein bisschen blöd wäre.
Oder man kann halt Bilder direkt drin anzeigen und so.
Also das Ding ist schon sehr nett.
Und es hat auch eine sehr schöne TMAX-Integration.
Da kommen wir vielleicht auch noch später drauf.
Aber genau, ich wollte eigentlich,
bevor wir jetzt nochmal so da in die
was verwendet man eigentlich für Programme
Richtung gehen, nochmal kurz auf die Hardware eingehen.
Kurz bevor du das machst, müssen wir das Konsolenthema
kurz abschließen.
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 Fishtail hat er da ein, zwei hakelige
Sachen. Aber ich finde es immer noch
die beste Variante für
Windows für mich. Dann gibt es noch HyperJS.
Das war immer ganz lustig.
Aber ich fand es ein bisschen langsam und
es hat ein bisschen rumgebackt, aber es hat so tolle
grafische Effekte. Ich weiß nicht, ob du sowas
kennst, man kann das alles in bunt machen und dann
redet irgendwie ein Pokémon mit dir, wenn du
tippst oder so. Ich weiß
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 ein Jahr,
anderthalb Jahre jetzt überhaupt da.
Und mal gucken, Ende des Jahres
wollte ich auf jeden Fall ihm nochmal eine Chance geben. Also zum
Spätestens dann, wenn es einen Guake-Modus hat, dann
switche 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 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
Cheffe oder so, ich weiß nicht mehr
genau, von
VS Code.
Der hatte, genau,
der war als Interviewgast im Talk Python
to me Podcast.
Ah, das habe ich auch gehört.
Und erzählte da halt irgendwie so, ja,
also wenn man auf Konferenzen geht,
also wenn man jetzt die nackten
Zahlen anguckt, wie viele Leute,
wie viel Prozent der Entwickler verwenden eigentlich
Windows, dann verwenden das ganz viele, sonst
über 90 Prozent oder so.
Wahnsinnig viele. Wenn man jetzt aber auf Konferenzen geht
oder auf irgendwie Treffen
von irgendwelchen User Groups oder solchen Dingen,
dann sieht man da praktisch keine
Windows-Rechner. Da siehst du halt relativ viel Mac,
relativ, also nur noch eine relativ große Gruppe
Linux irgendwie mit ihren
Lenovo Thinkpads.
Und das war's.
Windows sieht man fast nie.
Oder halt, ist deutlich in der Mitte halt.
Und das ist ja irgendwie
so aus einer Produktmanagement-Perspektive
unter Umständen sehr problematisch.
Wenn ich denke, okay, also
hm, 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
zä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 wie es Code überhaupt gibt.
Und das neue, also WSL 2, also Windows-Tablet für Linux 2,
das ist ja ein nativer 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 ...
Ja, da passieren wohl auch Dinge.
Oder dass jetzt irgendwie GitHub gekauft haben oder so.
Das hat wahrscheinlich auch viel damit zu tun.
Also Microsoft bewegt sich da in eine interessante Richtung.
War das ein geheimer Aktientipp?
Ich weiß nicht, ob das jetzt...
Wir machen heute eine Freigewerbung, habt ihr schon gemerkt?
Alle relevanten Dinge am Aktienkurs sind da schon passiert.
Ja, wir müssen eigentlich mal gesponsert werden.
Also falls jemand von Microsoft oder von Apple
oder von einer der anderen Firmen,
die wir schon genannt haben, zuhört, also wir nehmen eure Spenden
natürlich gerne an.
Und geben auch gerne halsbrecherische...
Du wolltest über Hardware reden, Entschuldigung.
Wir haben es jetzt so viel.
Ja, keine Aktientipps von
Programmierern ernst nehmen, bitte.
Ja, genau, ich wollte
eigentlich kurz auf die Hardware eingehen, weil
ja, also ich meine, genau,
was ist eigentlich an Mac-Hardware
jetzt aus Entwicklerperspektive 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 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...
Das Ding hieß irgendwie PowerMac
G4 oder nicht, weiß es nicht genau, oder PowerBook
G4, PowerBook G4 hieß es, glaube ich.
Und das hat wirklich sehr, sehr viel
Spaß gemacht. Also auch gegenüber, ich hatte ja
vorher schon eine Menge Linux-Laptops gehabt
und so, und die waren immer so,
man klappt sie auf und dann
irgendwie, man hat so das Gefühl, ich meine, gefühlt
so der halbe
Monitur biegt sich so durch.
Das ist halt nicht so ein Bildschirm,
sondern das ist mehr so wie so ein Blatt im Wind.
2004.
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.
Ja, ich keine Ahnung, warum? Warum ist das so?
Ich meine, das ist einfach nur...
ja, und
es ist halt so wie die Unterseite von so einem
Barthocker, ja, so, wo dann
offenbar niemand damit rechnet, dass man jemals runterguckt,
aber bei einem Laptop, das dreht man schon
mal um und dann ist halt, äh,
und allein so die Netzteile,
also, Marc,
Mac lieber, weil, wenn man den
Laptop umdreht und drunter
guckt, sieht es aus wie ein Barthocker.
Nein, nein, die,
die, äh, die, die Plaste-Notebooks
vorher sahen so aus, wenn du, äh,
wenn du ein MacBook umdrehst,
sieht das relativ sauer aus.
Das ist ein ästhetische Komponente.
Ja, aber es ist auch,
das macht irgendwas.
Also wenn man so ein Ding hat,
das halt so, ich weiß nicht,
das ist so wie ein gutes Küchenmesser oder so,
wenn man das hat,
hat irgendwie eine andere Art,
damit umzugehen,
wenn das halbwegs stimmt
oder wenn man 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 zu klappen.
Das richtige Werkzeug. Und nicht so richtig funktionieren.
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 nur überlegt, das irgendwie zu wechseln.
Das ist aber auch schon ein Premium-Anspruch, Jörg.
Ja, das mag sein.
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
da halt wirklich viel Zeit mit verbringt.
Wenn man das am Wochenende eine halbe Stunde mal aufklappt,
dann ist es ja auch egal, dann kannst du ruhig quietschen.
Aber ja,
also für jemanden, der professionell entwickelt,
für den sollte eigentlich,
wenn er sich das überlegt, oder ich meine,
gut, vielleicht habe ich mir das auch
nur schön rationalisiert, aber ich denke...
Jetzt hast du dir so schön deine Fanbase aufgebaut, Jochen.
Alles versaut.
Dann
sollte man eigentlich gucken,
was ist das, 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 wieder, also Touch Bar war ein echten
Tiefschlag, also das war
vor allen Dingen, weil ich halt...
Die F-Tasten sind weg, es gibt eine Touch Bar.
Also F-Tasten, das ist mir eigentlich alles
egal, aber die Escape-Taste,
das war für mich
ein Riesenproblem, weil ich bin ja...
Meine ist gelb, mit einer Ente drauf.
Ja, tatsächlich.
Warum eine Ente?
Okay.
Ich hätte das jetzt auch gar nicht
als Ente erkannt, ehrlich gesagt, aber...
Und ja, Escape-Taste, wie alle User, sehr wichtig, weil man kann viele Dinge nicht, also das schaltet um zwischen Kommandomodus und Editiermodus und so eine Touch-Taste ist halt nicht das gleiche, weil die gibt einem kein Feedback darüber, ob man die jetzt gedrückt hat oder nicht.
Das heißt, man haut da drauf, man weiß nicht so genau, hat man jetzt getroffen oder nicht, hat das jetzt einen Druck ausgelöst oder hat das jetzt irgendwie Doppeldruck 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
Caps Lock 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 ist 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 ein Track-Tapet daneben
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. Superscheiße.
Und, äh,
Wie regt sich denn sowas aus?
Ja, das war...
Hat irgendein Designer das cool und fancy und hat sich gedacht,
ey, nutzt der denn überhaupt so eine komische Taste?
Ja, ja, ja, wahrscheinlich, aber das, das, äh,
Keiner der Menschen, die Multimedia machen.
Ja, äh, das, das, äh,
Das war schon schlimm. Da hatte ich schon überlegt, okay, wenn das so bleibt,
dann muss ich vielleicht doch mal drüber nachdenken, irgendwie die Plattform
zu wechseln, weil das 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 Touch-Bar, ist mir aber 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 es wieder. Und auch sonst, ach, das Ding
hatte ja auch sowieso so, also diese
das 2016er MacBook, was war echt so eine,
das war so eine,
weiß auch nicht, also das hatte auch Tastaturprobleme.
Habe ich das, habe ich das schon mal
erwähnt? Ja, du hast auf jeden Fall mal eine
Serviceeinheit einlegen müssen, hast du mir erzählt.
Schrecklich, schrecklich, ja.
Also die Tastatur. Hast du das Leserbrief auch geschrieben, seitdem haben die das
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. Wird mit den Dingern
ja überhaupt nicht warm, ne?
Ich muss ja auch 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 dieses haptische Feedback von
den guten mechanischen
Tastaturen sehr gerne mag.
Ja, kann ich verstehen. Ich habe auch lange
an einem Hackbrett gesessen,
diese alten IBM-Tastaturen,
wo so hinten drauf
noch handschriftlich notiert war,
wer die Qualitätskontrolle gemacht hat.
Cherry-Clicks.
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 den
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 halt schon sehr nett.
Und ja, irgendwie das
Tastatur kaputt und Escape-Taste weg, das war
alles schon ziemlich ätzend. Aber
Jetzt haben wir 2020.
Jetzt haben wir 2019 einen neuen Mac gekommen
und jetzt ist er wieder approved, darf man
kaufen, ist okay. Funktioniert ganz
ordentlich. Und
ja, hat auch, also
genau, ich meine, ich will
eine MacBook-Werbung hier machen, aber
es wirklich macht Spaß. Ja, du bist ein kleiner Fanboy.
Ein bisschen.
und genau, also das
gab auch so ein bisschen den Anstoß dafür, überhaupt
dieses Thema aufzugreifen, weil
ich habe jetzt in kurzer Zeit
hintereinander zweimal irgendwie ein MacBook neu
einrichten müssen und
dachte ich mir so, als ich
das zweite Mal gemacht habe. Das Thema einrichten ist ja sowieso schon
immer kein Spaß gewesen.
Mir macht das Spaß tatsächlich. Also ich sage nur,
wenn man das oft und viel machen muss.
Achso, wenn man das viel machen muss, ja.
Beim zweiten Mal dachte ich mir so, okay.
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
Wasser nehmen. Ja, bitte, bitte. Ja, ich glaube,
es ist tatsächlich einigermaßen sinnvoll, wenn man das
auch schreibt. Da gibt es ja eine ganz tolle
Erfindung, zu der hast du mir auch damals gerade, als ich angefangen
habe, meine Windows-Kisten neu zu machen und zwar
macht man Dot-File-Repositories.
Ja, das ist ein ziemlich cooler Fall.
Dann könnt ihr einfach eure Einstellung, eure
Konfiguration in einem
zum Beispiel GitHub-Git
Repositorem ablegen und
jedes Mal auf deiner Maschine einfach klonen und habt dann
eure Einstellung wieder parat.
Ich weiß nicht, wie das bei dir ist.
Bei mir ist das so, ja, ich habe, da liegen
die ganzen Dot-Files drin und
da ist dann halt so ein kleines Python-Skript, gibt's
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.
Sodass ich halt quasi,
auch wenn ich ein Repository was ändere
und pulle, das ist dann automatisch die Änderung halt.
Ja, also so ähnlich habe ich das auch.
Ich habe leider die Skripte alle noch nicht ganz fertig.
Ich habe tatsächlich sogar auch, also auf deinen Rat hin,
eins gemacht. Das ist noch sehr
Anfänger-lastig 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 euch für Windows und solche Sachen
interessiert, da sind so ein paar PowerShell-Skripte drin, die man
irgendwie im Alltag 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 Paketmanager
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 Chocolaty.
Kann man sich nicht überstreiten, 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
Linux-System einfach Choco-Install
Software-Name 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 verschreiben 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 DotFi-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.
Das freut mich, dass das jetzt auf Windows
auch so halbwegs geht. Ja, auf dem Mac war das auch
lange Zeit irgendwie so ein bisschen problematisch und man
wusste halt nicht so, was hier die richtige Antwort ist auf
was für einen Paketmanager soll man denn da
verwenden? Irgendwie Fink oder
irgendwie, keine Ahnung,
Portage oder
ja, aber mittlerweile hat sich
dann doch herauskristallisiert, was da
Homebrew, genau.
Und
ja, da ist
eigentlich alles, was 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
meinen Geschmack muss man das deutlich runtersetzen
und das geht auch nicht über eine UI, also man muss dann halt
tatsächlich, das ist 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, wenn man Sachen löscht, dann ist das halt wieder
schnell, weil
wenn man das nicht ändert, dann ist das halt unerträglich
langsam.
Das kann man bei Windows tatsächlich auch machen.
Du kannst halt ein PowerShell schreiben, indem du die Einstellungen
in die Windows Registry schreibst
einfach und dann das halt überschreibst
mit deinen Custom-Vorlieben.
Also auch für so eine Mauseinstellung oder
es gibt ja ganz viele Einstellungen, die man da irgendwie
machen möchte. Privacy aktivieren
und sowas.
Genau, ja. Und man muss halt
auch beim Mac halt noch so ein paar Umgebungsvariablen
setzen und irgendwie
diverse Xcode-Command-Line-Tools
installieren und so was machen.
damit man auch Sachen kopilieren kann.
Spannende Sache. Und zwar,
was machst du mit privaten oder geheimen
Umgebungsvariablen? Wie händelst du die?
Gibt es sowas bei dir
überhaupt?
Was wäre
welchen Anwalt?
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.
Beispielsweise benutze ich
ganz gerne die Google-API.
Ja. Einfach, weil man da
mit dem Dev-Zugang
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
einen 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, ich habe es
jetzt so gelöst. Ich habe eine verschlüsselte
Sache, die einmal kurz aufgemacht wird, dann wird
dieses Secret in eine Env geladen
und dann wieder decrypted. Ist natürlich nicht
ganz so toll, weil das halt eigentlich in meinem Speicher hängt,
aber gut, es ist auch nicht sicherheitskritisch,
aber... Wenn das lokal
in deiner Umgebung ist, ist das ja okay. 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 gesynct,
sondern die muss ich dann... Achso, die musst du von Hand machen.
Genau, ich habe aber ein 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.
Ah, okay.
Da muss ich dann halt die Sachen reinpacken.
Du musst einfach nur diesen Folder kopieren.
Genau, der Folder wird auch automatisch erzeugt von meinem Skript und so.
Und dann muss ich da halt einfach die Sachen,
die ich halt in Vyron Rivals geladen haben möchte, da reinpacken.
Und dann werden die encrypted, decrypted und beim Start geladen quasi.
Ja, das ist tatsächlich noch so ein Problem eventuell.
Da habe ich mir noch keine Gedanken.
Also ich würde es wahrscheinlich in das Install-Skript,
in den .files mit reinpacken und dann halt irgendwo eben,
so ein, ja, die
verschlüsselt irgendwie einen
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, 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 ein Laptop und noch ein anderer 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, dass 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 streibe ich halt rein in den Namen,
die Computername wird halt dafür benutzt.
Ja, das ist wahrscheinlich keine
blöde Idee. Das Problem hatte ich in gewisser
Weise schon, oder habe ich,
weil ich
unter Umständen etwas unterschiedliche Umgebungen habe.
Also 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 diesen Dot-Files. Ich habe tatsächlich für mein
Dora-System beispielsweise auch so ein schönes kleines
Repo dann angelegt mit den Dot-Files, die werden dann auch
gezogen, installiert und dann
funktionieren zumindest meine Bash-Aliase oder so was,
wie ich die haben will. Das geht schon, aber ich habe
halt eben in manchen Skripten
dann halt eben Fallunterscheidungen, ob welche
Stelle 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...
Ja, da muss man tatsächlich eine Unterscheidung machen.
Man muss halt schon ein bisschen gucken, welches System möchte man jetzt dann
in seine Config installieren.
Das wäre auch spannend, wenn das insgesamt skripten könnte
und dann einfach nur git clone repo install
und dann macht der alles. Egal, was man tippt.
Aber gut, ob man so viel Arbeit machen will.
Aber macht Spaß, das ist so ein kleines...
Ja, genau.
Ja.
Ja, wir sind ja hier beim Python-Podcast
und deswegen wollen wir jetzt vielleicht noch ein bisschen
darüber erzählen, wie das denn mit der Python-Entwicklungsumgebung
dann aussieht, wie man das dann irgendwie da am besten
für die Projekte vielleicht auch, oder?
Ja, ja, ja. Da gab's
einen ganz netten Artikel
von einem der
sozusagen Django
Mitbegründer von
Jacob Kaplan Moss, der hat
glaube ich
My Python, oder Django
Python Development
Environment 2020 Edition
oder so ein Blog
postgeschrieben.
Genau, das
da, also ich
habe den gelesen und dachte mir so, oh ja, das ist so vieles
davon, der 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 neu.
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, wie installiert man
Python halt eigentlich?
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 das ist halt auch wieder sowas Blödes,
du hast ja halt bei Python
mehrere Arten, wie man
jetzt Pakete installiert.
Halt PIP bei Web,
also ich meine, es ist im Grunde so,
Webentwicklungsprojekte installieren ihren
Kram.
Bei der Requirements-Datei bei PIP?
Ja, Requirements-Datei
kommt vielleicht gleich noch zu, eigentlich nicht
mehr, bin ich jetzt fast von weg.
PIP-Block? Ne.
Sondern? PyProject-Tommel.
Aha, okay.
Und
die Data-Science-Geschichten
gehen eigentlich, haben 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 immer Mini-Conda.
Aber
das mache ich jetzt alles nicht mehr
so, sondern inzwischen
verwende ich PyEnv
dafür.
Was ist das denn jetzt schon wieder?
Also PyEnv, Env, Env,
Python V-Env,
es gibt Virtual Env, es gibt Virtual Env
Wrapper,
es gibt
Conda Environments, die so ähnlich
sind wie Virtual Envs,
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
ja, Venv mit Virtual Env Wrapper
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,
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 gegenüber dem Zustand 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, diese Virtual-End-Rapper-Ansatz finde ich total toll.
MK-Virtual-End-Name,
LS-Virtual-End für alle Anzeigen,
RM-Virtual-End 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 zum Beispiel
ein Riesennachteil.
Welcher Systeminterpreter? Du kannst doch bei, wenn du
ein neues Virtual Environment erzeugst, sagen minus minus Python
und sagen, welchen Python, also welchen Pfad
der erzeugen soll. Ja, aber
sozusagen, also
du kannst nicht einen Spezialinterpreter
für dein Environment festlegen,
sondern das muss irgendwo hin installiert sein
und dann kannst du
das halt sagen, nimm das. Das geht
natürlich, aber
üblicherweise nimmst du dann halt dein System
Python oder halt eines der System
Pythons, die du irgendwie installiert hast.
Das heißt, ich installiere einfach alle System Pythons
parallel und dann muss ich eins davon auswählen.
Ja, aber das ist natürlich alles schrecklich.
Also, und ja,
also ich meine, du kannst halt mit,
also du hast dann zumindest Python 2 schon
immer mal drauf, weil
das wird wahrscheinlich für diverse Geschichten auch im
System benutzt. Das heißt, das hast du auf jeden Fall
Weil wenn du jetzt nicht aufpasst und einfach nur
mkvirtual etwas 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 Distributionen,
das ist alles Python. Also bei Windows kommt es auch an,
welchen deiner Pass-Variablen gesetzt ist.
Ja.
Ich weiß nicht, ob bei Windows überhaupt ein Python
mitkommt sozusagen.
Du musst es über die Webseite installieren
im Worst Case oder halt über Toko install Python, aber
Ja, okay, dann ist man da
in gewisser Weise sogar ein bisschen besser dran, aber
in den meisten Python-Dispositionen 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. 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önnte Leute verwirren.
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
Minicon da besser? Weil da kann man halt
sagen, okay, da kann man die Python-Version, die man braucht,
auch mit ins Environment-YAML reinschreiben
und das wird dann halt installiert.
Während du das halt bei einem
Virtual-Env à la
MK-Virtual-Env, also Virtual-Env-Wrapper, kannst du das nicht.
Da kannst du nicht ins Requirements reinschreiben,
welche Python-Version du gerne hättest. Das geht da nicht.
Sondern da kriegst du halt die, die du am Anfang
mal angegeben hast. Was ist jetzt auch
das wieder etwas, was ich oft
dann tatsächlich, was mir oft passiert ist,
was ist, wenn jetzt dein System-Python geupdatet wird?
Oder per Homebrew updatest du
deinen Kram oder per Choco
oder wie auch immer
Packet-Manager deines Vertrauens
und der schmeißt jetzt das alte Python runter
und installiert ein neues.
Wenn ich jetzt auf Windows mache, bei Choco, der macht tatsächlich
mit dem Virtual-Entrapper, also ich da jetzt
benutze, macht er tatsächlich eine lokale Kopie
in einem Visual-Env-Verzeichnis von dem Python-Interpreter.
Das heißt, der wird nicht mit geupdatet dann in der
Env, sondern nur in deinem System.
Okay, das ist ja schon mal nicht so schlecht,
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 Envs, 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 da jetzt nichts mehr
funktioniert und so. Also es ist einfach nicht so
richtig schön. Und
ja,
das geht
halt mit Virtual Env Wrapper
halt immer nur so, naja,
Vielleicht geht es auch irgendwie, aber so richtig toll ist es nicht.
Jedenfalls gibt es eine Geschichte, die ich
jetzt besser finde und
wo das halt alles explizit ist
und das ist halt PyInf.
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, 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 Python. Ja, der Paketmanager
in Python ist ein bisschen nervig.
Ja, und
also es läuft halt zum Beispiel eben in die Richtung,
dass man halt pro Verzeichnis entscheidet, was da jetzt
eigentlich sozusagen für eine Python-Version
drin verwendet werden soll,
was ja üblicherweise ist, liegen
deine Projekte ja in irgendwelchen Verzeichnissen drin
und bei Python kannst du halt sagen, okay,
also mein globaler Python-Interpreter
soll jetzt 381 sein, aber in diesem Verzeichnis hätte
ich gern irgendwie ein 37, weil das
ist halt das, was in dem Projekt verwendet wird.
Und wenn man dann sagt
PyEnv Local 3.7,
dann legt es
halt so eine Local
Datei an
oder sowas und da steht dann halt drin, welche Version verwendet werden soll.
Und das Ding ist halt,
was an dem Ding sehr toll ist, dass man damit
wirklich alles installieren kann. Also pro Folder,
das heißt man hat pro Folder und Subdirectories
dann eigene Python-Versionen.
Kann man das kombinieren mit
Virtual Entry? Was ich toll finde, ist natürlich,
dass man vorne immer so sieht, welche
Environment, wirst du denn jetzt gerade aktiv?
Genau, das ist, das sind auch,
das Ding kann auch selber
Virtual Envs dann erzeugen. Man kann dem auch
sagen, erzeug jetzt ein Virtual Env, hat
den Interpreter oder so.
Wo liegen die? Also bei mir
liegen die in Hochverzeichnis
unter Envs zum Beispiel.
Das kannst du alles einstellen, wenn du das magst.
Das ist kein Problem.
Bei Virtual Env,
also man kann es einstellen, ich glaube,
es ist nochmal ein bisschen anders,
als bei den anderen,
bei Visual Encryptor oder so, aber egal.
Was du da
auch netterweise machen kannst,
ach, du hast gerade gesagt,
genau, Local, Global, du kannst halt
wirklich alle Python-Versionen damit installieren.
Du kannst halt auch
PyPy installieren oder
halt eben auch Minikonda, sodass du halt
damit tatsächlich für alle
Geschichten, die man so macht, kann man damit halt
sozusagen
man kann das Ding für alle Sachen verwenden.
Also ich kann jetzt für Data Science und Webgeschichten
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 Fallunterscheidung, ist das jetzt
Minikon da oder nicht, passen dann nochmal Variablen
an.
Aber tatsächlich ist es
so, dass ich das nicht mehr merke, sondern
ich mache einfach nur ein CD, ein
Verzeichnis und dann ist die Python-Umgebung
so, wie sie sein sollte.
Okay, das heißt, die wechselt automatisch. Ich kann das auch
abstellen, das heißt, wenn ich nicht möchte, dass er die wechselt,
dann kann man das natürlich auch.
Es gab noch Pip-Env irgendwie zwischendurch mal,
weil das irgendwie mal kurz... Ach, Pip-Env, ja, das ist halt
genau, das gehört jetzt
da kommen wir dann schon, also das ist jetzt sozusagen
ich weiß nicht, hattest du noch was
zu dem Themenbereich
irgendwie, wie installiert man Python jetzt eigentlich
oder sind wir damit, weil
Ja, also ich würde
Python, also auf Windows jetzt einfach installieren
über Choco und dann
tatsächlich versuchen, mit dem
Wrapper das zu machen, aber ich muss mir Python mal angucken, das klingt sehr gut
und es gibt auch Python Windows
das heißt, das wäre wahrscheinlich die bessere Idee, da sich da so
ein bisschen reinzufuchsen und auch das dann damit
zu verknüpfen. Genau, würde ich mal
angucken
also
das sieht für mich momentan schon so nach der
besten Option eigentlich aus
genau, aber sagen wir einfach mal, damit sind wir durch
also man, vielleicht kann man sich einfach mal
PyInf angucken oder man nimmt halt das, was der Packet Manager
des Vertrauens halt einfach so mitbringt
Also das einzige Nervige auf Windows ist natürlich
wenn er WSL benutzt, müsste er das alles natürlich
zweimal machen, weil auf WSL ist natürlich
der Linux dann, das Linux-System drauf
da müsste er die ganzen Umgebungen alle wieder erneut
einrichten und einen anderen Interpreter nehmen, da wäre vielleicht auch
PyInf die richtige Variante, wenn man
nämlich so ein Directory dann mounted von Lokal.
Wäre sehr interessant, ob das
unter Linux, VSL und
Windows gleichermaßen funktioniert.
Ja, keine Ahnung.
Ja, das wäre mal ein Versuch wert.
Ja, also wenn man
dann aber irgendwie so Python
installiert hat und dann halt einfach nur
in zwei Zeichnungen wechseln und dann das richtige
Python direkt da hat,
dann hat man ja immer noch
das Problem, okay,
ich habe ja jetzt für Projekte
diverse Abhängigkeiten, die ich auch gerne installieren
würde. Wie mache ich denn
das? Und da
gibt es halt auch unterschiedliche Ansätze
und der Ansatz, den man da
traditionell verfolgt hat,
war halt irgendwo da so ein
requirements.txt-File
reinzupacken. Die können auch
also du kannst halt
requirements.production.txt
haben, was dann halt
irgendwie in base requirements inkludiert
oder so und dann halt unterschiedliche
Mengen von Abhängigkeiten 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,
also pip install-r
requirements.txt sagt oder so.
weil man hat zwar
sozusagen die direkten Abhängigkeiten,
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, da habe ich manchmal mir schon böse mit in den Fuß
geschossen, da fehlt dann irgendwelche Dev-Pakete oder
ja. Ja, und das kann halt
das heißt, etwas, das 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.
So steht er da als Neuentwickler. Hat die Requirements installiert
und es geht nichts. Und fragt sich so, hä?
Wieso bin ich jetzt wieder zu blöd?
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 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, von denen die Dinge abhängen, die man halt als Abhängigkeiten definiert hat, dass die halt auch gepinnt werden.
Sodass halt sichergestellt ist, dass halt, wenn ich npm install sage oder yarn install oder so, dass dann halt alles irgendwie genau in der Version da ist, wie man das halt mal zu dem Zeitpunkt, als es alles funktioniert hat.
irgendwie definiert
hat. Und das wird halt weitest eingecheckt
und dann gibt es da keine Missverständnisse
mehr und kann auch in 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
ja PipEnv und Poetry
würde ich sagen.
Oder ich würde es eigentlich eher umgekehrt
sagen. Ich würde sagen Poetry und PIP-Env.
Poetry klingt
sehr schön poetisch. Ja, und
PIP-Env
ist so ein bisschen, ist zwar
irgendwie offizielles Produkt der
PSF,
Software Foundation oder irgendwie da gelandet, keine Ahnung.
Aber das
ist, es wird auch mehr
verwendet tatsächlich, aber ist nicht so
das, was... Ist doch von dem Autor von Requests
irgendwie da, oder? Ja.
Na, sag schon.
Kindness Rides?
Ja, ja.
Aber bis vor kurzem, ich weiß nicht, ob es immer noch so war,
bis vor kurzem war da halt ein Issue drin,
so irgendwie, if this project is dead, please tell us.
Und der war halt seit einem Jahr offen.
Und also das ist halt schon,
bei so einem Ding, das so wesentlich ist, geht das eigentlich nicht.
Und insofern, ja, also es gibt da Schwankungen.
also es wirkt
manchmal so ein bisschen anwendend und
ja.
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 momentan
Poetry. Vielleicht wird ja Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe-Pippe.
Aber eigentlich ist Poetry das, was...
Poetry müsst ihr verwenden, das ist jetzt die Quintessenz.
Pie-End von Poetry.
Erklär mal bitte kurz, was Poetry ist.
Also müssen würde ich jetzt nicht sagen.
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 ein 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's halt da
ein PyProject-Tommel und
jetzt weiß ich gar nicht,
was ist das Ding, 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 ein
Log-File mit, wo die, ja,
wo halt alle Versionen gepinnt werden und 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 noch nicht so lange. 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 PyProject-Tommel
für Skripte.
Und das ist auch
so ähnlich wie bei NPM kann man das auch.
Also dass man halt in einem Projekt
halt auch die ganzen
Verwaltungs-Skripte, die man halt so hat, wie
zum Beispiel, wenn man jetzt die Tests ausführen will, dann ist es
unter Umständen eine Kommandozeile, die relativ lang ist.
Oder
manchmal will man die halt
in einem Docker-Container ausführen. Oder
man möchte
Coverage-Py laufen lassen mit allen möglichen
Parametern oder weiß ich nicht, was einen, 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 Umgebungssache gesetzt, die mir sagt, ob ich
jetzt innerhalb von einem Docker-Container bin oder nicht.
Und wenn ich das nicht bin, weil
meistens für Web-Entwicklungsgeschichten
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 drumrum gestrickt, sodass
das halt innerhalb von dem Docker-Container ausgeführt wird.
Sodass ich halt, und dann
mache ich mir noch Aliasse, also was ich eigentlich ausführe
ist PoetryRunTest,
sozusagen, um die Tests auszuführen.
Und dann habe ich noch ein Shell-Alias
für
von Tests auf
PoetryRunTest und dann gebe ich
im Verzeichnis einfach nur einen Test,
drücke Enter und dann laufen die Tests durch.
Und es ist völlig egal, ob ich innerhalb von dem Docker-Container
bin oder nicht.
Es passiert immer genau das Gleiche.
also 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,
Flake8,
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
Mac-Files verwendet. Ich glaube
auch, es gibt ja Leute, die
das Command-Modul verwendet haben von Python
dafür schon.
Oh ja, stimmt, das kann auch gut sein.
Das könnte man eigentlich auch nochmal erklären.
Das ist irgendwie ein Modul der Standard-Bibliothek.
Die 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 schön beim Python-Po,
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 Standard-Bibliothek mal
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 Commandos, die man eingibt, halt auf Funktionen. Das ist was
im Wesentlichen tut. Aber ja, das war eigentlich
ein bisschen länger was zu erzählen.
Ja, aber wir waren noch bei Poetry.
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 benutzen
zu PyPy putschen kann mit ein paar Checks
irgendwie. Vielleicht können wir das mal linken,
der hat ja irgendwie gestern was dran gebastelt.
Muss ich mal genau,
das habe ich auch mit Portrait noch nicht so wirklich gemacht,
aber soll
auch irgendwie gehen, also was man
sagen kann ist,
dass auch dieses PyProject
Punkt
Tommelfeil 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 man jetzt irgendwie
ein Projekt hat und möchte das
irgendwie bauen, dann hat man oft irgendwie eine
Setup.py da drin liegen
und setup.cfg
config.
Ja.
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,
was ja im Wesentlichen ist, dass halt irgendwie
ein
Archiv, irgendein ZIP oder
TABOL von irgendwie Python-Dateien,
PY-Dateien, das möchte ich
jetzt irgendwo in ein
Verzeichnis werfen und das war's im Grunde.
Viel mehr ist das ja nicht, ein Python-Projekt
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
und das ist halt eine der
zentralen Punkte, die halt mit dieser
PyProject-Tommel angegangen werden,
weil wenn du das halt eben in diese
PyProject-Tommel reinschreibst und das
ich weiß noch nicht, ob es so weit ist, ich glaube es ist noch nicht so ganz,
aber wenn das halt irgendwann mal ausreicht,
um Pakete zu bauen, dann kannst
du halt ein Paket installieren,
ohne dass halt irgendwie ein Skript
ausgeführt und beliebiger Code ausgeführt wird
auf deiner Maschine, sondern da wird halt
PyProject-Tommel gepasst und da wird halt irgendwas
gemacht, aber da ist nichts drin, was irgendwie ausgeführt wird.
Und
das ist dann natürlich schon nett.
Das ist dann halt schon mal ein Problem
weniger. Und ein Ding,
wo man einen Code ausführen
muss, dem 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 drinstehen,
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 weiß nicht, ich kenne die ganzen Tools.
Also es gibt auf jeden Fall einige, die das alle 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, ich bin so, Tommel,
was zur Hölle, warum denn nochmal
ein unterschiedliches Dateiformat, ne?
Es gibt ja auch immer den Witz, sozusagen,
ja, irgendwie
Jason kommt dabei raus, wenn man alle Fehler
ignoriert, die die Leute bei XML gemacht haben, ja,
und Jamel kommt dabei raus,
wenn die Leute irgendwie alle Fehler ignorieren,
die bei Jason gemacht wurden und warum
denn jetzt noch Tommel? Wenn jetzt alle Fehler
ignoriert, die bei Jammer gemacht worden sind, 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
faszinierend. Ich meine, also
das XML, also da braucht man nicht viel
drüber reden eigentlich, dass XML scheiße ist.
Bekannt.
Das kann man als bekannt voraussetzen.
Es ist halt,
ein entscheidender Punkt dabei ist halt, dass es nicht von
Menschen editierbar ist, 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 JSON und so. Aber
also menschenlesbar ist es auch irgendwie.
Aber Menschenschreiber 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
NRACING am letzten, ja. Total kacke,
ja. Also ich meine, so als Mensch
denkst du ja halt so, wenn du das nicht,
wenn du jetzt nicht irgendwie so ein Standard-Fetischist
bist oder so und das sofort siehst
oder deinen Editor kannst du dir vielleicht auch sagen, aber wenn
du jetzt einfach mal einen normalen Texteditor nimmst, der das nicht kann,
dann tippst du das da so ein und dann
sagt dir halt NPM, irgendwie da ist ein
Syntaxfehler und du denkst dir so, hä?
Was? Warum? Das ist ein Syntaxfehler.
Und es macht das Parseln halt auch schwer,
weil, ja,
es 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 dich
alle gleich behandeln, es ist irgendwie,
also Jason ist für viele Sachen ganz nett,
aber so
menschenschreibbar 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?
Jammel sieht eigentlich ganz gut aus.
Wenn man so Jammel-Files sieht,
denkt man sich so, ach ja, so schlecht
ist das ja gar nicht.
Ich habe in letzter Zeit viel mit
Kybernetis zu tun.
Ich habe viel Jammel
gesehen. Ich bin nicht mehr davon überzeugt,
dass es eine gute Idee ist.
Also Jammel, es kann auch furchtbar werden.
Also einmal ist das Problem bei YAML, der Standard
ist gigantisch, also
der JSON halt noch relativ da
ist relativ einfach zu implementieren und es gibt
relativ wenig Zeug. YAML 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ühr mal diesen Code aus, dann machst du das.
Es gibt dafür eine Load-Safe
oder Safe-Load-Methode oder sowas, die man benutzen
kann, wenn man Jammer parsen will, ohne da
Code auszuführen. Aber das
muss man halt auch erstmal wissen.
Kann man lustige Jammer-Sachen
machen. Standard ist komplex und dann
irgendwie, wenn man einen Jammer-File lädt,
führt das Code aus. Das ist halt schon eine Kombination,
die ist schon bitter.
Also, ja, will man
vielleicht auch nicht, obwohl es halt tatsächlich gut
menschenlesbar ist und es ist gut menschenschreibbar und es
sieht eigentlich ganz nett aus.
Aber das ist halt, aber es ist zu kompliziert
und es ist zu gefährlich eigentlich.
Da kann man das auch nicht wirklich gut verwenden.
ja
und
tja, was bleibt da noch? Ach, es gibt noch
Config-Parser, auch in der Standard-Bibliothek
von Python, das ist halt so
in Windows nennt man das glaube ich Ini-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
Projekt-Definitions-Dings abbilden können will
abzubilden, das ist schon mal doof und dann ist es so
es gibt keinen Standard dafür
es ist nicht so, dass das irgendwo standardisiert wäre
sondern das, was
ConfigParser kann, ist halt dadurch
definiert, dass es halt ConfigParser ist, kann.
Aber es ist irgendwo...
Ja, es gibt ein paar Config, bei denen das dann geht.
Und eben, bei manchen geht es halt nicht. Und wenn es nicht geht,
weiß man halt nicht, warum.
Und es gibt auch keine anderen
Implementierungen und so.
Also, ja,
auch nicht wirklich toll.
Und jetzt kommt Tommel.
Tommel ist zwar ein anderes, neues Format, das keiner kennt, aber
tatsächlich erfüllt es all diese
Sachen. Man kann es gut lesen, man kann es gut schreiben.
es 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 Paketdingen
verwendet, schon bei Rust.
Und funktioniert ja schon
lange.
Und ja,
Insofern ist das 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,
Management-Skripte aus, auch erledigt.
Was fällt dir noch rein zu deiner Umgebung?
Also ich meine, wir haben jetzt gar nicht mehr die Touren oder sowas.
Das müssen wir aber eigentlich auch noch.
Müssten wir.
Also eigentlich schon.
Was musst du?
Wie ist Quote? Haben wir schon alles verraten?
Ja, oft.
Im Enhanced-Modus
oder im puren?
Was musst du für ein Farbschema?
Ich habe mal Solarize verwendet,
aber das mache ich eigentlich auch nicht mehr.
Ich weiß es aktuell
gar nicht. Ich nehme Dracula.
Ich mag das. Das ist wie bei Pycharm.
Ja? Nee?
Nee? Dracula ist so schön
lila, pink, gelb.
Okay, das ist...
Weiß. Auf dunklem Hintergrund.
Ah, okay. Keine Ahnung.
Ja, also
VVI tatsächlich
immer noch sehr viel und
mir gefällt es auch gut.
Ich habe eine Zeit lang Neowim verwendet, aber
seit
Vim 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, NeoVim zu verwenden.
Daher kann ich wieder den normalen Vim verwenden.
Was ich an VS Code zum Beispiel so sehr mag,
wo wir eben darüber gesprochen hatten,
man kann auch da die Settings synchronisieren.
Bis jetzt benutze ich dafür eine Extension, aber
das ist gerade dabei, dass es in offiziellen
Patch Notes, glaube ich, drinsteht vom Insiders,
dass man die Settings synchronisieren kann,
wenn man möchte, über seine Maschinen, was
natürlich super ist, weil man ja auch
die Editor-Settings, die ja irgendwie doch
länger sein können irgendwann, gerne
synchronisieren möchte.
Auch die Extensions, die man nutzt.
Sind das nicht auch Dot-Files
irgendwie, die man genauso behandeln könnte wie
alle anderen?
Gute Frage. Ich glaube nicht.
JSON ist das eigentlich,
die da irgendwo drin liegt im VSCode-Verzeichnis.
Und ja, da kann man halt
Sachen reinschreiben.
Naja, keine Ahnung.
Die kann man natürlich auch dann synchronisieren über seine Dot-Files.
Das habe ich bis jetzt auch so ähnlich gemacht.
Dann ist das nächste Problem halt, dass du dann die Extensions,
die kann man natürlich auch immer exportieren.
Da gibt es ja viele, für die man synchronisieren möchte.
Und dann kann man das halt auch automatisch machen,
dass halt die Extensions alle gleich sind,
dass man halt auch da Updates fahren kann und so.
Ja, bei MVI 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 ein WIM
starte, Doppelpunkt Plugin
install und drück
Enter und dann installiert die ganzen Plugins.
Und das ist natürlich schon sehr, also
sagen wir mal so, das funktioniert nicht mit allen. Es gibt manche
Sachen, die leider
Handarbeit erfordern,
wie zum Beispiel irgendwie Autocompletion.
Dafür benutze ich
Jedi
und halt YouCompleteMe
und YouCompleteMe braucht einen Serverteil,
der gestartet wird
und der muss kompiliert werden
und das geht dann alles nicht mehr so einfach.
Da muss man tatsächlich irgendwie...
Eigentlich ein Skript verschreiben,
das ins DotFi-Repo kommt.
Ja, vielleicht.
Bei der Installation direkt das automatisch macht.
Habe ich auch nicht automatisiert,
aber das muss man halt irgendwie noch machen.
Autocomplete ist übrigens ein echt nettes Feature.
Das kann man auch bei verschiedenen Sachen einbauen.
Also auch sogar unter Windows mit Git,
Dosh, Posh, Git zum Beispiel,
kann man Git-Autocomplete machen
und ganz viele lustige Sachen,
dass da eine Docker noch completet und so.
Dann kann man ein bisschen schneller
sein Kommando reinhacken.
Ja, bei Phish gibt es
auch für alles irgendwie
Autocomplete-Geschichten.
Phish hat sogar so eine
Suchfunktion, dass man halt die Autocompletion
durchscrollen kann.
Das ist ja sehr geil.
Wahrscheinlichste
sogar.
Ja.
Man kann das auch so einstellen, dass man die, die man häufig
benutzt hat, nimmt und dann kann man daraus durchtappen.
Das ist schon nett.
Es gibt halt im Grunde,
ehrlich gesagt, wenn man den so richtig
voll
ausgebaut, aufgepimpt hat,
dann unterscheidet
sich jetzt so ein voll aufgeblätterter
Wim gar nicht so großartig von sowas
wie Scott oder
Peitscher. Peitscher macht noch mal
ein bisschen mehr, aber
tatsächlich gibt es halt viele Sachen, die ganz ähnlich
sind, also ich sage dann nicht Command-P
bei VS Code, sondern Command-T,
da gibt es dann zum Plugin, das macht aber
fast das Gleiche.
Dann gibt es halt irgendwie
Fugitive, das
irgendwie
mit Git super interagiert,
was dann halt diverse Dinge darstellt, das einem darstellt,
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 Git-Lab-Prozess, den ich irgendwie einbauen kann,
dann wie es geht.
Kann das alles synchronisieren, kann die Commits direkt da drin
machen. Das Einzige, was mir noch so ein bisschen
fehlt, ist tatsächlich das Issue-Handling.
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 gehen, aber noch nicht so ganz perfekt funktionieren.
Aber das,
ich weiß nicht, ob sowas überhaupt in PyCharm oder so geht.
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 den Code
geschrieben hat, oben
erzeugt bekommt.
Ja genau, bei Palcham ist das
tatsächlich, gibt es dann immer Leute, wenn
ich dann Sachen oben von Hand eintrage, die mich
dann angucken, so als wäre ich irgendwie so ein Tier,
was da irgendwie so rumkriecht
und
ja, ich fühle mich
aber ein bisschen, tatsächlich habe ich da beim Wim
auch noch nichts gefunden, was das automatisch macht.
Es gibt aber was für
für
Notebooks gibt es
PyForest, das macht das da auch.
Ich habe Nico gehört,
den ich letztens
getroffen habe.
Wir waren ja zusammen auf dem PyData
Coupon.
Der meinte, das
kann man super verwenden, wenn man da halt
irgendwie, keine Ahnung,
in einem Jupyter Notebook
halt Dinge verwendet, dann
schreibt es den Import halt oben rein und das
ist tatsächlich ziemlich cool.
Ja, aber tatsächlich
für VI habe ich das noch nicht gesehen.
Vielleicht gibt es da bestimmt auch irgendwie was, aber
da schreibe ich meine Imports
immer noch von Hand. Und natürlich
ist es so ein bisschen rückständig. Aber
ansonsten, ich weiß
gar nicht, ob ich da mal durch die Liste
der Plugins beim VI durchgehen sollte oder
so, ob das schon zu
speziell
ist, dass ich da so
normalerweise verwende.
Also bei VS Code sind das auf jeden Fall ganz wichtige Sachen.
dann, wenn du dein Workload 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 können wir das Code eigentlich schon
relativ viel selber und das sind da so kleine Sachen,
die halt irgendwie man nicht verzichten möchte.
Ja, ich glaube,
man kann sich da selber, also
tatsächlich. Da muss ja auch jeder so ein bisschen selber basteln.
Ja, muss man eigentlich alles selber basteln.
Das wächst ja auch, wenn man irgendwas braucht, dann sollte man
vielleicht irgendwann mal gucken, ob sowas gibt.
Aber vorher vielleicht erst mal so lean wie möglich anfangen
und so schlank wie möglich.
Das ist auch ein bisschen schnellere Ladezeit und so.
Das kann man aber auch vielleicht alles mit Atom machen
oder Sublime oder was auch immer man da nutzt.
Ich habe sogar zwischendurch noch Windows in meinem Notepad++
immer offen.
Das ist ja auch so ein Code-Editor mit ein bisschen Syntax-Highlight.
Das benutze ich jetzt nicht für Koden,
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.
Das ist ganz nett für so Configs oder so.
Ja, und E-Mags haben wir noch vergessen.
Ich weiß nicht, ich bin leider kein Power-Nutzer von E-Mags.
Leute, die das benutzen, warum auch immer.
Wenn du jetzt
den großen Aufschrei von den Menschen fragst.
Ja, nee, das ist natürlich auch...
Es gibt den Operating-Mode, da kann man irgendwie direkt
seine Zeit mit managen und so, also ziemlich coole Sachen,
die man damit machen kann.
Das ist Org-Mode.
Ja, ja, irgendwie so.
Ja, also E-Mags kann auch alles.
Eigenes Betriebssystem, habe ich gehört.
Ja.
8 Megabytes in Constantly.
Das ist auch wie schlecht solche Witze altern.
8 Megabytes in Constantly Swapping sozusagen.
Das war früher der Witz bei Emacs.
Aber ja, irgendwie.
Da müsste man wahrscheinlich eher sagen 8 Gigabytes oder so.
Es wartet einfach nicht mehr.
Das passiert nicht mehr.
Das ist heute sehr, sehr zu Hause.
Es ist schon im Vergleich zu allem anderen.
Ich meine, wenn man sich anguckt,
eben Peitschrahmen, unfassbar fette Java-Idee.
wie ist Code? Das ist irgendwie
ein JavaScript-Monster
gewrappt in einen
kompletten Chrom,
der irgendwie Elektronen 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
darin arbeitest, ich weiß nicht, ob man
überhaupt noch dann feste Sachen braucht,
wenn man das 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.
Daher weiß ich nicht, ob es noch was bringt, wenn man das jetzt als
Hauptspeicher, könnte man natürlich tun, wobei jetzt auch
die meisten Maschinen so viel Hauptspeicher haben,
dass es sowieso alles egal ist.
Wahrscheinlich eher alles gecached im Filesystem
Cache. Ich weiß es nicht.
Aber ich glaube, da viel
beschleunigen kann man dann. Also jedenfalls beim
Dates, wenn ich so ein aktuelles Map
wohlnehme. Also das ist so
schnell. Ja, du hast 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.
Da kriegst du dann anzulüften.
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, oder trainiert,
dann ist natürlich auch wieder...
Ja, die musst du ja eigentlich auf Grafikkartenhandwerk trainieren,
habe ich mir sagen lassen.
Was auf MacBooks auch tatsächlich so halbwegs geht,
mit, äh, na, wie heißt das noch?
Mit Metal, ähm,
da gibt es ein Ding von, äh,
äh, muss ich nicht nachrechnen,
äh,
ja, keine Ahnung,
wo man halt die Grafikkarte auf dem MacBook verwenden kann.
das geht halbwegs gut. Ist also auf jeden Fall so
achtmal so schnell, als wenn man irgendwie
CPU dafür
verwendet. Und das ist ja schon mal ganz ordentlich.
Also für eine GTX oder so?
Ja, Plate ML heißt das.
Plate ML, genau.
Ja,
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 da viel besser.
VS Code ist total toll.
Ja,
auch, aber
tatsächlich, was bei PyCharm cool ist,
ich finde zum Beispiel die Debugging-Geschichten, das hat mich ja
letztens wieder... Das ganze bei VS Code auch.
Ja, aber kannst du
zum Beispiel auch in Docker debuggen oder
Remote debuggen? Ja.
Echt? Musst du nur konfigurieren.
Du kannst sogar, das Coole bei VS Code ist, du kannst tatsächlich
per SSH dich auf Sachen connecten
und das dann tatsächlich editieren, alles in VS Code drin.
Das sind alles sehr tolle Sachen.
Kannst du bei PyCharm auch.
Und tatsächlich, der Debugger bei PyCharm
ist schon deutlich cooler,
als wenn man einfach nur so eine PDB-Shell hat.
Ja gut, aber ich nutze den nicht so viel,
aber es geht, glaube ich, ganz gut.
Ja, ich habe auch nicht gebaut.
Ich habe es nur mal getestet
und es sah wirklich sehr gut aus.
Ehrlich gesagt benutze ich sehr selten Debugger.
Benutze das nicht so.
Immer perfekten Code.
Brauche ich nicht.
Das nicht, aber ich meistens,
wenn ich Sachen ausprobiere,
dann mache ich das eh in einem Notebook.
ich mache das nicht in dem...
Ja, das habe ich von dir übernommen, das ist tatsächlich
gar nicht so schlecht, dann sieht man ja direkt, was für hier läuft.
Ja, und wenn man dann halt Code irgendwo hin tut,
dann weiß man halt eigentlich schon, dass das 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
den Cursor und so. Das weiß ich gar nicht,
ob sowas bei PyCharm auch geht.
Aber das hat mich,
das ist, ja, das ist also,
das fand ich auch sehr beeindruckend und das hat super funktioniert.
Also per Programming Remote,
also mit dem VI geht das natürlich auch,
dann einfach irgendwie TMAX oder Screen-X
oder sowas und dann kann man das auch
machen, aber
ehrlich gesagt, mit VSCode ist es schon gut.
Yes!
Und ja,
das hat schon
hat schon gut funktioniert.
Ich habe gerade gegoogelt und tatsächlich
Remote Pair Programming with IntelliJ.
Ich weiß es nicht genau.
Es kann sein, dass das PyCharm auch kann.
Meine Wahl wäre ja VS Code
mit einem tollen Terminal, mit dem
Windows Terminal auf einer Windows und
WSL Maschine. Natürlich macht ihr da
Hypervisor an und macht euch da virtuelle Maschinen
noch drauf. Das könnt ihr dann um
Entwicklung und Umgebung oder sowas einfach hochfahren und dahin
auch deployen und so.
Könnt ihr ja für Shared-Fooders
machen und sowas. Und das
kann ich durchaus empfehlen.
Entwickeln auch alle. Das funktioniert ganz gut.
Ja, also bei PyCharm würde ich
jetzt noch sagen, also das Debuggen hat mir gut gefallen.
Dann, was mir auch noch
ziemlich
gut gefallen hat, war
Local History. Ist eine super
Geschichte. Du kannst bei
PyCharm halt auch sehen, was du geändert hast,
ohne das
alles eingecheckt. Also manchmal hat man ja so den
Fall, dass man dann zu viel geändert hat.
Man weiß nicht mehr genau, was man da so getan hat und
Peitscham 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 PS Code
irgendwie besonders cool war.
Also ich mag halt die Geschwindigkeit, das ist irgendwie
so handlich.
Ja, ja. Und also mir
gefällt dieser neue Style, ich mag diesen Elektron-Style,
ich mag das mit den Java-Settings,
mit den JSON-Settings.
Ja. Und das ist irgendwie
alles schnell, handlich,
ich kann es überall benutzen.
Also ich mag halt diese Schlanken, ich mag eigentlich,
mochte ich Atom, mochte ich ganz gern.
Ja, weil der ist halt sehr schlank auch.
Das ist auch ein Elektronen-App.
Das ist schlank, ein paar hundert Mega
überhält oder so.
Egal.
Ja, also
naja.
Ja, Atom hat auch gut funktioniert.
Habe ich auch mal eine Zeit lang
irgendwie JavaScript-Geschichten gemacht.
Aber ja,
stimmt, habe ich schon lange nicht mehr
gestartet.
Eigentlich nur noch VSCode.
Ich benutze ihn nur für Musik, weil da gibt es ein paar Plugins,
die mir auf jeden Fall VSCode, wenn
es um Rust geht und
Tidal Cycles oder sowas, da gibt es ein paar lustige Sachen.
Aber das ist eine andere Geschichte.
Ja, ansonsten
genau, ach so,
ja, was auch zur Entwicklungsumgebung natürlich zugehört,
Linter. Oh ja.
Welche hast du alle an? Alle?
Naja, ich, Flake 8
nehme ich normalerweise, wobei man
immer gucken muss, dass das halt irgendwie so kompatibel
ist mit Black. Ich benutze Black zum
Formatieren.
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 es halt manchmal nicht so tut.
Oder wenn man es nicht konfiguriert, macht es das halt nicht.
Beschwert es sich halt irgendwie über
fehlende Spaces
bei Operatoren oder
irgendwie so Sachen.
Und
Pylint
eigentlich
nicht. Ich hab sie alle an.
Du hast sie alle an? Ja, Pep8, 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
Pai Lama, das kombiniert. Ja, Pai Lama, stimmt.
Die ganzen Geschichten so ein bisschen.
Vielleicht kann ich dann noch irgendwas Neues erzählen.
Ja.
Und
dann gab es auch noch
irgendwie so ein schönes Tool,
um Code-Komplexität
irgendwie zu messen.
Aha, Code-Komplexität.
Ich habe noch bei mir
mein eigenes Linting
drin für bestimmte Keywords, die ich da reinpacke.
Das ist auch noch ganz witzig.
Mit dem To-Do-Tree, nämlich bei
VS Code, da kannst du To-Do, Fix-Me, Hack,
Bug, To-Be-Discussed oder sowas,
da kannst du eigene Tags einbauen für dein
Team und für dich, die dann irgendwie
mit eigens noch gefleckt werden und die du halt
in einem To-Do-Exa-Fenster dir anzeigen
lassen kannst, um dann zu bearbeiten und so.
Ach, okay.
Ich habe jetzt hier so ein To-Do-Ding, da kann ich dann alle Sachen
sehen direkt, die ich mir markiert habe.
Ja, das ist ganz nett.
Okay,
das ist nett. Ich habe es tatsächlich wiedergefunden.
Genau, das Ding heißt
Radon. Oh, Radon?
Und
kann man auch in PyLama integrieren,
genau wie PyCodeStyle.
Lama. MyPi gibt's noch.
MyPi, ja. PyDocStyle.
PyDocStyle, ja.
Also MyPi 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 Bandit,
ist mir eingefallen. Bandit ist ein Security
Linter. Der lintet bestimmte
Dinge, die vielleicht Security relevant sein könnten.
Ach okay, nee, das kann ich nicht.
ja, was ran und nett ist,
das ermittelt
zum Beispiel, so ein Wert
nennt sich
Cyclomatic Complexity.
Ehrlich gesagt weiß ich nicht genau, was das
bedeutet. Aber der misst
halt sozusagen deine Krutkomplexität.
Und du kannst dem halt
sagen, okay, wenn es so
komplex ist, dann mach ein Fehler draus.
Und du kannst es halt auch
eventuell so
einbauen, dass
du nicht einchecken kannst oder
nur, ich meine, das muss man, ob man jetzt
Pre-Commit mag oder nicht,
das halt
sagt, also wenn zum Beispiel, also was
letztens irgendjemand machen wollte, war
halt,
wenn sich Code geändert hat, die Tests
noch laufen, aber irgendwas komplizierter
geworden ist,
wenn irgendwas refactored ist und die Komplexität gestiegen
ist, dann lässt sich das nicht einchecken.
Oder wenn dein Code
einfach zu kompliziert ist an einer bestimmten Stelle, dann musst du
nochmal refactoren oder so.
Keine Ahnung, aber ich glaube, was auf jeden Fall
ganz nett ist es halt, wenn man mal so ein bisschen
einen Hinweis
darauf kriegt, wo so die
fiesen Stellen im Ergebnis sind.
Ich finde es ja netter, wenn man irgendwie das Feature nicht
finishen könnte, weil das Gitflo nicht mehr geht,
als wenn man dann tatsächlich nicht
mitmachen könnte, wenn man Grundreihabmachung
will, damit nichts kaputt geht.
Aber ja, gut.
So extrem muss man es nicht machen.
Ja, aber
genau, das kann man sich auch mal
angucken und ich fand es halt nett,
dass es sowas überhaupt gibt.
War mir noch gar nicht so klar.
Ja, damit sind wir eigentlich so durch die
Linter und Dinger durch.
Ja.
Ja, wir haben unsere Entwicklungsbedingungen, wir haben unser Terminal,
wir haben das System
und die Software. Nutzst du noch irgendeine andere
Software zum Entwickeln sonst?
Also mir reicht eigentlich immer
der Editor, das Terminal und
das war's.
Notebooks.
Ich finde, bei Django-Projekten
sind Notebooks
unfassbar hilfreich, ehrlich gesagt.
Also man kann ja da auch tatsächlich den
Django Shell aufmachen und hat dann
direkt Zugriff 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 letztens ein paar Mal ausprobiert,
hier mit dem VS Code Debugger direkt zu arbeiten.
Und das funktioniert erschreckend gut.
Achso.
Ich benutze noch so einen Zeitmanager.
Waka benutze ich manchmal.
Da kann ich genau checken, welche Projektzeit ich wie, wo...
Ja, sowas benutze ich auch.
Dafür verwende ich normalerweise Toggle.
Checkt das auch automatisch mit, welche
IDE du gerade nimmst oder benutzt?
Das ist nämlich schön, weil ich sehe
nämlich direkt, welches Projekt ich benutze dann.
Also je nachdem, welchen Editor ich aufhabe und
ja, in welcher
Entwicklungsumgebung ich gerade bin oder ob ich mal
auch im Notebook arbeite. Und der ordnet das direkt
automatisch den richtigen Projekten zu. Das kann ich natürlich noch so ein bisschen
konfigurieren im Hintergrund. Und dann habe ich
direkt quasi meine Zeit zusammengefasst.
Das ist ganz nett.
Ja, okay, aber das erfasst
natürlich auch nur dann, wenn du halt irgendwie
am Editor sitzt, aber das bei mir ist oft auch
so, dass ich... Nein, nicht nur.
Das erfasst auch die anderen Programme.
Also ich kann das auch so einstellen, dass...
Also wenn du am Rechner sitzt, aber das erfasst halt nicht, wenn du
da sitzt und ein ER-Diagramm malst
oder auf und ab läufst
und über irgendwas nachdenkst oder so. Ja, das stimmt natürlich.
Aber es geht ja nicht darum, dass du jetzt daraus dann komplett abbrechen
in der Zeit, sondern es geht nur darum, dass du so ein bisschen
einen Überblick dafür hast,
in 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 dir das auch ein bisschen angucken.
Wo du gerade EMD-Diagramm
gesagt hast, da gibt es ja sowas Tolles,
was ich ja letztens gesehen habe, mit dem man ganz tolle
EMD-Diagramme malen kann.
Wie heißen das nochmal?
Graphics, glaube ich.
Graphics, ja, das ist
ja, wobei das
halt nur ein Backend, ich glaube, es gibt
auch noch einen. Ja, aber das fand ich ganz praktisch. Das kann man
auf seine Django-Modelle schicken und dann macht es dann direkt automatisch
ein EMD-Diagramm draus.
Wunderbar, einfach mit einer Kommandozeile, bam.
Genau, das ManagePy kann das schon
für Django-Geschichten.
Ja, ManagePy, GraphModels und dann
Teilnahme oder so.
Ja,
Entwicklungsumgebung.
Haben wir noch was vergessen?
Prettier, irgendwas
kann man noch anmachen. Dass man so ein bisschen
schönere Code-Formatierung macht, das ist so ein bisschen wie Ninting, aber
also 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 lassen. Da muss man einfach nur drunter
tippen und hat automatisch
eingestellt. Das finde ich immer ganz nett.
Wie lange ist deine Settings, Jason, in VS Code?
Das weiß ich ehrlich gesagt
gar nicht. Ich kann hier gerade mal nachgucken.
Ist gut.
Wo sehe ich denn das?
Du kannst hier öffnen. Bei mir ist Control-Komma.
Control-Komma.
Also ich sehe hier,
bei mir ist es Command-Komma wahrscheinlich. Das sind die Settings.
Und dann, wo muss ich da?
Da muss ja hier oben, da ist irgendwo
JSON angezeigt in der Ecke.
Aha.
Also wie macht das JSON? 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.
Das ist der User-File, ja, okay.
Nee, keine Ahnung.
Ja, egal.
Egal.
Ja, ich habe schöne 400 Zeilen runtergecode.
Ich bin ganz schön darauf, dass ich immer wieder umswitche 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, 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, das sieht man ja auch alles nicht und kann man nicht mehr richtig lesen.
Das ist schon blöd.
Ja, was ansonsten halt noch zum Entwickeln irgendwie total wichtig ist,
ist halt so, sind auch so einfach Tools,
die halt auf der Kommandozeile
sein sollten und halt
total hilfreich sind.
Aber...
Wetteranzeigen, YouTube-Videos direkt in der Konsole abspielen.
Ja, äh...
Auf dem Server JPEGs
angeguckt.
Ja, aber so Dinge, die einem halt
ja, irgendwie so das
Leben auf der Shell erleichtern.
Und, ähm, also was ich da halt auch
interessant finde, äh, das ist ja so ein Trend
in letzter Zeit, dass man halt irgendwie so alte
abgehangene Tools anguckt und da
irgendwie vielleicht eine neue
Implementation schreibt, die ein bisschen
schneller ist oder ein bisschen
besseres Interface hat oder so. Und da sind
in letzter Zeit ein paar sehr schöne Sachen
rausgekommen, die man dann auch gerne mal in Rust
oder in Go schreibt.
Und
ja, da gibt's
tolle Sachen. Also zum Beispiel
ein Tool, was ich in letzter Zeit entdeckt habe,
was halt
hat mich 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, genau,
dann Stern, Stern und dann macht es
automatisch irgendwie eine Suche
rekursiv in einem
Datensystem und man gibt 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
man kann jetzt einfach Buchstaben
eingeben und dann sucht es halt die Dinge, die dazu
am ähnlichsten sind. Und das funktioniert
ziemlich, ziemlich gut. Und es zeigt
das halt während, das läuft schon an.
Das heißt, man hat so eine eingebaute Preview und
man muss es halt mal ausprobieren. Das ist wirklich,
wenn man das ein paar Mal verwendet, dann denkt man sich so, wow,
warum ist da vorher eigentlich noch nie jemand auf die Idee gekommen,
das so zu machen? Das ist total cool.
Und gerade
in Kombination jetzt mit zum Beispiel
einem schnelleren FIND, also weil FIND
ist halt auch so eins von diesen alten Tools, die
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 so fortfinden und so.
Und dann kann man da 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 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
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
kannst du 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, Grab auch.
Gibt es auch ein Ding, das nennt sich RibGrab.
Irgendwie ein gutes Stück schneller und ein 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 anfangen.
Obwohl du jetzt sagst, du hast das ausgemacht.
Ja, nee, ich habe tatsächlich auch.
Ja, also Prompt ist immer so eine zweischneidige.
manchmal auf meinen, das habe ich auch nicht tatsächlich
auf allen Rechnern gleich, weil
wenn das zu fett wird, dann nervt mich das und
gerade, wenn man jetzt auf GitLab
zum Beispiel irgendwie ein Merch Request
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 zu Strukturen zum Beispiel schon mal sehr viel
abkürzen, dass er relativ nur Anfangsbuchstaben
zeigt und so, dass man relativ den Tree ein bisschen
kürzer fasst. Was ich sehr gerne mag im Prompt
ist, wenn ich ein Git-Report habe, das ja
einen Status hat, wie viele Changes ich noch
machen muss oder sowas.
Wo ich halt stehe, wie viele Commits es gibt
und wie viel ich weg oder
pullen muss oder so, damit das gleicht und
ob ich die schon committet habe und so, das finde ich sehr, sehr
angenehm.
Also will ich auch gar nicht mehr ohne.
Also kann ich mir auch gar nicht mehr vorstellen.
Ups.
Ja, was man
dazu auch noch erwähnen sollte, ist, dass es
halt für Shells auch normalerweise, also zumindest
für ZSH und
Phish gibt es halt noch
Paketmanager.
Also O-My-ZSH
oder O-My-Phish.
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...
Mein Fisch ist auch Dracula.
Und das ist halt sehr schön, wenn der Editor Dracula
ist und die Shell ist Dracula und so, das ist alles
immer Spaß.
Dann, ja.
Was ich mal sehr gerne mag,
ich mache bestimmte Verzeichnisse,
lange Verzeichnisnamen, ersetze ich
ein Icon oder sowas, wenn ich halt
eine Wolke für die Cloud oder
das ist auch ganz nett.
Home kennt man ja mit der Tilde, aber
ja, sowas halt 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 wäre 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.
Okay, genau. Aber dann ist es halt nicht so
ein Problem mit dem
langen Prompt. Aber wenn du jetzt
dir vorstellst, das wäre nur die Hälfte am Platz,
dann kriegt man da dann schon
irgendwann ein Problem. Andere Leute machen das so, dass sie
das halt dann umbrechen und
dann das Prompt über dem Cursor haben.
Ich kann mich da auch nicht so richtig dran gewöhnen.
Ja, ich habe mir zum Beispiel auch immer vorgestellt, was das
jetzt gerade für eine Shell ist. Ob das ein Fisch ist, ein Power Shell
oder WSL oder so.
Ja.
Aber ja.
Ja, das gehört auf jeden Fall aber auch dazu,
zu der Entwicklungsumgebung? Ja, auf jeden Fall.
Ja, also generell so die ganzen
Alias, 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
neun auf dem Rechner schlagt, 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
Viertel vor neun dran saß, dann hat er
automatisch eine E-Mail an seinen Arbeitgeber
oder an den Kunden verschickt, Hangover
und so. Da kann man lustige Sachen
mitbauen, irgendwelche Cron-Jobs einrichten und so.
Naja.
Ja, genau. Ansonsten,
das einzige Command-Line-Tool, was halt
auch noch ziemlich wichtig ist,
ich weiß nicht, aber das können wir ja eigentlich auch nicht so
richtig in Detail,
ist TMAX halt so.
Ich weiß nicht, ob du das verwendest
so im Alltag
oft, aber...
Du meinst jetzt, dass Android...
Nee, nee, nee, dass man
sozusagen einmal noch den Shell-Multiplexer
hat und dann
dass man halt sozusagen, damit kannst du ja auch
zum Beispiel auf allen
und auf unterschiedlichen Maschinen halt
gleichen Shells hinkriegen, wenn du das
richtig findest oder
dass du halt sozusagen dich auf einem Rechner
einloggst und dann halt alle Shells wieder so hast,
wie du sie vorher hattest oder so.
Aber naja, gut, also das ist nochmal eigentlich...
Ach, jetzt weiß ich, was du meintest, also der speicherte Session quasi
von dem einzelnen, ja. Ja, ja, genau.
Ja, okay.
Ja, also benutzt du irgendwas für dein
Thermos, den ich gerade verwechselt habe.
Ich benutze zum Beispiel Thermos noch für Android,
das ist vielleicht gar nicht so schlecht.
Das kann man auch ein bisschen umkonfigurieren.
Dann kann man nämlich dann tatsächlich, wenn man remote unterwegs ist,
mal kurz irgendwo dran.
Was benutzt du da? Bist ja der Apple-Familie,
hab ich gehört.
Du meinst als Shell? Ja, ja.
Oder SSH? Ja, zum Beispiel.
Wie auch immer.
Und Terminal?
Also auf dem iOS
benutze ich da fast, hab ich früher mal,
gab es ISSH oder so, verwendet,
aber das mache ich eigentlich praktisch nicht
mehr. Warum eigentlich
nicht? Ja, aber das ist einfach
naja.
Was es gibt, was für
mobile Geschichten ganz praktisch ist, was man vielleicht noch
ist, also gerade für Zugfahrten,
also Zugfahren in Deutschland ist ja
irgendwie immer so,
tja, so mit Internet ist halt da nicht so richtig
und
ab und zu hat man ja
schon mal Netz, ne, wenn man
dann so irgendwie, keine Ahnung,
an der Autobahn vorbeikommt oder
irgendwie in der Stadt oder so, dann ist ja manchmal
schon so für einen kurzen Moment wieder Netz da.
Und wenn man jetzt
irgendwie SSH verwendet,
also eben TMAX hilft einem dann natürlich auch
oder irgendwas in der Richtung, TMAX oder Screen oder so,
wenn dann die Session wegfliegt, kann man sie halt wieder
damit herholen. Aber
was eigentlich noch viel cooler ist, ist halt
dass es
es gibt halt so,
das nennt sich MOSH.
Ich gucke mal gerade,
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.
Salzame Dinge passieren,
ja, Signalstörungen,
Züge bleiben liegen,
keine Ahnung,
Schildkröten regnen, was ich nicht
und eine Katze, solche Sachen
passieren dauernd.
Das heißt,
eine TCP-basierte
SSH-Session ist halt einfach nicht das, was man
haben will, sondern was man haben möchte, ist was
UDP-basiertes, MOSH, und das funktioniert
super.
Da geht deutlich mehr durch, das funktioniert
halt unter noch deutlich schlechteren Bedingungen als
SSH.
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, das ist schön.
Klingt nützlich, ja.
Ja, ja.
Ich überlege, haben wir was vergessen?
Also eure Entwicklungsumgebung sollte
jetzt relativ komplett sein, oder?
So langsam. Ich überlege auch gerade.
Ich glaube, müsste eigentlich so ziemlich alles
läuft mit drin sein.
Ja.
Wir haben bestimmt irgendwas vergessen.
Schreibt uns das an unsere E-Mail.
hallo-at-python-podcast.de
Genau, ja.
Ansonsten,
ja, ich weiß nicht, dann sind wir damit durch.
Haben wir noch irgendwie sowas wie Pics oder so?
Ja, ich wollte wieder so ein
Anfänger-Pic machen und da habe ich
Pprint gefunden.
Dataprint-Pretty für JSON. Also ich habe irgendwie
Sachen aus dem Server gepasst und
da kam immer sicherer Unfug raus und ich musste
mich totsuchen, wo da halt immer Feinden
Prettyprint. Macht man dann einfach,
importiert man das Pprint und macht dann
ein extra P für das Print und
dann hat man lesbare JSON-Daten
beispielsweise, die man von der API zurückbekommt.
Hm, sehr schön.
Ja, Auto-Format,
ein bisschen Auto-Intendation und sowas.
Ja,
ich habe
ein ganz interessantes, also es ist halt auch
eher so, dass es dann,
ein bisschen mit Vorsicht
anfassen vielleicht,
ist so ein,
das 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.
Gibt's da ja diverse Tools, die
das mit den ANSI-Colors
in der Stelle irgendwie so einfacher machen.
Und dann hatte ich dieses Problem,
dafür hab ich dann Zeugs importiert
und
dann hab ich da auch noch irgendwie
Command-Line-Optionen
und so mit reingeben wollen und dann hab ich mit
Klick angefangen und dann bin ich aber
irgendwie drauf gestolpert, dass so ein Ding gibt, dass das
irgendwie integriert und das nennt sich Typer.
Das ist ein relativ neues Ding, ist noch irgendwie alles
sehr frisch. Ist irgendwie von den gleichen
Berliner NLP-Leuten, die halt auch so
Spacey und so machen, glaube ich. Oder in dem Umfeld
kommt das irgendwo her.
Und das Ding
generiert sozusagen
deine, einen
Command-Line-Interface aus den
aus Type-Annotations.
Also gibt es 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 dann noch
so an Argumenten mitgeben kannst.
Und das ist natürlich praktisch, weil da muss man halt Dinge
nicht doppelt und dreifach einschreiben.
Wenn man sich das schon angewöhnt hat, Type Annotations mit in seinen Code einzubauen
und Docs Wings, dann hat man tatsächlich eine vernünftige
Help-Funktion.
Und man schreibt dann halt nicht Prim, sondern man schreibt dann halt
Type-Halfpunkt Echo oder sowas und dann
dem kann man halt auch sagen,
das mache ich hier, das sind mal rot und das farbig
und das geht auch alles.
Sodass man halt diese Probleme auch erledigt hat.
Das heißt, man muss halt nur noch eine Abhängigkeit
und 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 immer wieder.
Ja, seht uns demnächst bald auf irgendwelchen
Events hier, vor allen Dingen in der Reinhard-Ecke.
vielleicht auf der Europe Heist in Dublin.
Ja, vielen Dank, dass ihr jetzt wieder
zugehört habt. Wir sind ganz stolz auf unsere Abonnenten.
Ich glaube, wir haben beinahe tausend
Abonnenten jetzt über die ganze Zeit.
War alles zählt. Ja, vielleicht, könnte sein.
Das ist doch der Wahnsinn. Vielen Dank fürs Zuhören.
Ja, bleibt uns gewogen,
egal zu welcher Tagesnachtszeit
ihr uns hört. Und bis zur
nächsten Folge. Alles klar. Tschüss.