Transcript: European XFEL - Röntgenlaser mit Python
Full episode transcript. Timestamps refer to the audio playback.
Ja, hallo liebe Hörerinnen und Hörer, willkommen beim Paisen-Podcast.
Wisst ihr, welche Episode wir heute haben?
42, ist das nicht schön?
Tja.
Das hättet ihr wissen müssen, das ist ja die Antwort auf alles.
Bei uns ist natürlich wieder Jochen, hi Jochen.
Hallo Dominik.
Johannes ist wieder da, hi Johannes.
Hallo zusammen.
Ja, ich bin der Dominik.
Und wir haben den Martin heute zu Gast.
Jo.
Hallo.
Hallo Martin.
Hallo.
Schön, dass du auch dabei bist.
Was machen wir denn heute?
Die Folge heißt Laser des Todes.
Todeslaser?
Todeslaser mit Paisen.
Todesstrahlen?
Ja.
Ich weiß nicht.
Warum heißt das denn so, Martin?
Ja, ich wollte ein bisschen erzählen, wie wir, ich arbeite in Hamburg an dem Röntgenlaser XFEL
und wie wir das Ganze dort mit Python steuern und wie wir dort unsere Experimente machen.
Das klingt interessant.
Und ja, also wenn wir Python nicht hätten, wäre er tot, ist er Todeslaser?
Nein.
Ja, sehr gut.
Der tote Laser.
Genau.
Ja, das machen wir heute.
Wir reden ein bisschen darüber, was Martin da so in Hamburg mit dem Laser macht und was man noch so mit Python machen kann.
Und wir wollen euch ein bisschen darüber erzählen, was wir von euren Fragen halten.
Und was wir da am interessantesten fanden, war so, dass ihr fragtet, wie macht man das denn überhaupt, dass man sich auf dem Laufenden hält?
Da wollen wir einfach so ein bisschen drüber quatschen.
Ja, dann fangen wir doch mit den News an, oder?
Ja, alles klar. Was haben wir denn für News?
Johannes hatte irgendwas ganz Interessantes, habe ich gehört.
Nichts, was man öffentlich sagen kann.
Ach so.
Wir nehmen die Folge auch schon zum mehrfachsten Mal wieder auf.
Also eigentlich wollten wir euch ja auch mit Listen beglücken,
aber das werden wir dann mal anders machen.
Die laufen auch nicht weg.
Ihr hört vielleicht, Johannes hört sich heute besonders toll an.
Ja, ich habe sogar einen Lob vom Jochen erhalten.
Das ist höchst ungewöhnlich,
dass die Todqualität vom Jochen gelobt wird.
Ja, es ist erstaunlich.
Aber wenn man Geld ausgibt, kann man Probleme lösen.
Das ist sehr überraschend.
Ja, man kann auch Probleme lösen, wenn man kein Geld ausgibt,
aber manchmal braucht man dann länger und ist nerviger
und so. Ja,
über Sachen basteln und Audio-Hardware ist auch nicht
meine Expertise und so.
Es ist der Geldweg
immer eine Möglichkeit.
Also größte News für Hannes hat ein neues Mikrofon.
Haben wir noch was anderes?
Haben wir noch was anderes? Ja, wir haben zum Beispiel...
Jemand war auf der PyCon, habe ich gehört.
Ja, richtig. Ich dachte ja eigentlich, das hatte ich beim letzten Mal erzählt,
dass ich da gar nicht hinfahre. Schade, schade, weil
irgendwie alle Tickets schon weg und so. Und dann hat es sich
aber doch noch ergeben, dass sich irgendwie da
Tickets auftun und
dann konnte ich da doch noch hin, kurzfristig
und ich dachte auch, ich hätte keine Zeit, aber ich hatte dann doch Zeit.
Ja, und das war sehr nett.
Also war jetzt die erste, ich war
das letzte Mal auf der
PyCon 2019, also vor zweieinhalb Jahren
und ja, war sozusagen die erste
Konferenz dann wieder nach all der Zeit
und das war... Aber man konnte niemanden erkennen, weil die da
noch getarnt war. Ja, weil Maskenpflicht
und so
und ich hätte, genau, das hatte auch
jemand von euch schon irgendwie mal
erzählt, da hätte man sich ja auch das
das eigene Gesicht irgendwie aufs T-Shirt drucken können oder so.
Das wäre praktisch gewesen, dann hätte man Leute erkennen können.
Oder direkt auf die Maske.
Ja, oder auf die Maske, genau.
Bin ich nicht drauf gekommen, aber das wäre natürlich gut gewesen.
Die guten Ideen hatten wir immer erst hinterher.
Ja, auf jeden Fall genau.
Das mit den Masken war natürlich so ein bisschen,
das hat sich noch nicht so angefühlt wie immer, ehrlich gesagt.
Aber es war auf jeden Fall schon mal ein Schritt in die richtige Richtung.
Und ich war jetzt letztens auch auf der Beyond Teller-Rand.
Das ist so eine Web-Entwicklungskonferenz.
Mit ganz vielen Design-Troics.
Ganz viel Design und nicht nur Computer-Kram,
sondern halt auch Kunst und so.
Und so ein bisschen die hippe Szene, die sich
dafür hält.
Ja, die hippe Szene,
das könnte man sagen. Meine coolen
Freunde, die gehen dahin.
Du weißt, deswegen habe ich es nicht geschafft.
Ich war da nur einmal und dann war es mir zu cool.
Ja.
Aber ja genau, also
es ist deutlich,
also die ganze Atmosphäre da ist halt
schon so ein bisschen,
der Vibe ist einfach anders
und ist angenehmer, ehrlich gesagt.
Und da haben die Leute dann schon keine Masken mehr getragen,
was möglicherweise daran lag, dass die ganzen Regeln dann auch
irgendwann obsolet wurden.
Aber auch, dass die Räumlichkeiten einfach besser geeignet waren,
weil viel mehr Raum und so.
Aber es waren auch ein paar interessante Talks, habe ich gesehen.
Also sehr interessante Leute, auch international, die geflogen sind.
Ist eigentlich immer so.
Das ist auch komisch.
Das weiß keiner so.
Oder ich weiß nicht, ob die Leute das wissen,
aber das ist tatsächlich eine der besten Webkonferenzen so weltweit.
Und die findet einfach so in Düsseldorf statt,
in so einem alten Theater.
Oh, wie praktisch.
Ja, und da kommt immer so die...
Kann man die Videos inzwischen ansehen?
Ja, ja.
Weißt du, dass man die aus den Vorjahren immer sehen konnte?
Aber gibt es das inzwischen?
Doch, nicht mehr auf Vimeo,
weil Vimeo hat gepivotet und macht was anderes jetzt.
Aber die sind jetzt auf YouTube,
was natürlich nicht so richtig...
Aber das ist aber uncool.
YouTube ist ein bisschen uncool, hat nicht den richtigen Vibe.
Das stimmt schon, Vimeo war da besser.
Aber ja, die gibt es alle auf YouTube.
Ja, insofern kann man sich da einfach mal reingucken
und dann sieht man, was dabei ist.
Du wolltest noch irgendwas sagen, irgendeine Keynote von
Total Super, hast du gesagt? Und
du wolltest noch was erzählen zu den Talks,
die du auf der PyCon ziemlich cool fandest und von den
Trends erzählen. Und zum Beispiel gab es sowas
wie PyScript, habe ich gehört, wird gerade so ein bisschen
durch die... Ja, wobei das war jetzt
dann eher PyCon US, glaube ich, da war das
ein großes Thema, PyScript und so über
Pyodid, aber... PyCon US
fand mich übrigens auch. Ja, die
war auch, genau, da habe ich aber nicht so wahnsinnig
viel mitbekommen, außer irgendwie das, was man
halt über Twitter so mitbekommen.
Apropos Cons, die Django-Con
ist auch im Herbst und für die
Europython im Sommer in Dublin,
da gibt es noch Vouchers, wenn ihr bei uns in der Gruppe
seid. Ja, richtig, das stimmt.
Für die Django-Con
kann man noch ganz kurz
Vorträge einreichen. Also wer noch einen Vortrag bei der Django-Con
machen möchte, hat jetzt noch die Gelegenheit dazu.
Ja, ich glaube bis zum 31. Mai. Wir müssen uns ein bisschen
beeilen mit der Veröffentlichung, dass das noch vorher...
Aber ja, das geht.
Das zählt.
Europython-Voucher auch in Jochen, das finde ich ja cool.
Interessen wir uns denn da? Ja, eigentlich schon.
Ich habe es bloß bisher noch nicht geschafft, eine Unterkunft
zu finden. Also meines direkt in der Nähe von der
Brewdog Brewery. Ja, also
ich weiß, es gibt da tolle Unterkünfte und so, aber
entweder sind die halt unbezahlbar oder halt nicht
so richtig irgendwie für mehrere Leute geeignet
oder halt nicht verfügbar in dem Zeitraum und das ist
alles irgendwie ganz schrecklich. Ich habe so ein Hotel gefunden, das
relativ entspannt gerade aufgemacht
hat. Da gab es noch gar keine großen Reserven.
Hat erst letzte Woche eröffnet oder so. Oh,
da müssen wir, okay.
Ja, die Bewertung erstmal so, da fehlen noch
die Klobürsten, aber ich glaube, das bis Juli
haben das hinbekommen. Okay, das ist interessant.
Da muss ich mal gucken, ja.
Ja, also wenn sich dieses Problem lösen lässt,
dann werde ich da auch hinfahren, denke ich.
Ja, genau,
Konferenzen, achso, was wollte ich,
ich glaube, wir machen am besten noch mal
mit Christian, wollten wir
eigentlich noch eine Episode machen zu den ganzen
Talks im Einzelnen und sowas, so eine interessante
Sache. Zum Background, zum PyCon, genau.
Oder Background zum PyCon, aber also für mich
tatsächlich der beste oder interessanteste
Talk jetzt auf der PyCon.de
war halt der von Christian
Heim ist zum Thema
Python
nach WebAssembly kompilieren und dann halt
also Python 3.11 im Browser laufen lassen.
Vielleicht hören wir da auch noch mehr
davon. Ja, genau.
Und das war schon
beeindruckend, dass das geklappt hat
und ja, da ging es ein bisschen um
den Hintergrund, das war echt super. Ansonsten
ja, was
ich, den
einen Talk fand ich, den von Stefan Benel
zum Thema Zeiten,
hatten wir ja auch schon mal, das ist jetzt 20 Jahre geworden,
das Projekt, und den fand ich auch
super. Ich fand den
von meinen Ex-Kollegen
bei Billiger super dazu.
Wir machen mal Live-Programming,
ein ORM in Python.
Ich fand den
von Idealo, weil er sich halt mit dem
Thema, mit dem ich mich auch schon lange, oder lang,
früher in einer anderen Zeit,
wie lange man beschäftigt hat,
das war so richtig so
Blast-from-the-past-Vibes da,
und ja, die machten das
jetzt gerade, was wir da früher schon mal gemacht hatten
und machen das super und es war sehr interessant.
Und ja, das müsste alles
in die Schonungsstellen, dann kann man sich das alles nämlich mal anschauen,
wenn man möchte. Ja, ich glaube, bei dem Vortrag,
da sind die Slides leider nicht da und auch der ist
nicht per Video irgendwie verfügbar.
Insofern weiß ich nicht genau, warum, aber
ja, genau.
Da müsste man da eigentlich
nochmal eine kürzere Zusammenfassung zu machen, aber
vielleicht müssen wir irgendwann mal machen.
Vielleicht kriegen wir da auch nochmal die
irgendwie dazu, mit uns zusammen eine Sendung zu machen oder so.
Müssen wir mal schauen.
Ja, genau, ja, PyScript ist halt auch ein interessantes Thema, ist halt so ähnlich, aber PyScript ist halt ein bisschen anders insofern, als das über Pyudit funktioniert und das ist halt dann Python 3.10.
Und geht aber auch über WebAssembly rein in den Browser und der Browser lädt dann irgendwie Python-Pakete von, weiß nicht, 70 MB oder sowas und kann dann einen REPL aufmachen im Browser direkt.
Ja, das geht mit
Python 3.11
nach wie vor auch, aber
da geht halt tatsächlich sowas wie, man
macht halt ein Jupyter-Notebook
auf. Das ist halt komplett
also auch das Backend läuft dann halt im
Browser. Ja, das ist schon ganz nett.
Jupyter-Light nennt sich da, das ist ziemlich cool.
Da kann man auf jeden Fall gerade für diese ganzen Datenverarbeitungsgeschichten,
wenn man da ohne große Def-Environments
was bauen will, von irgendeinem Gerät
recht weit kommen.
Man hat halt erstmal diesen ganzen Packaging-Schmerz
nicht mehr so, man muss kein Python installieren, was ja
wenn einen dann jemand fragt, ja gut, dieses
Jupyter, voll cool, wie installiere ich denn jetzt Python
auf meinem Windows oder so?
Ja, es artet mal ein bisschen aus.
Ja,
das ist ein bisschen schwierig, genau.
Ja, insbesondere dann, wenn schon welche da sind und
dass dann irgendwelche Konflikte mit irgendwelchen Dingen, die sonst
so laufen sollen, ist das manchmal so ein bisschen
ein Schmerz. Aber damit haben wir jetzt
vielleicht weniger zu tun. Und PyScript ist so recht
einfach auch zu bedienen. Du kannst einfach sagen PyScript und dann schreibst
du Python rein in den Browser und dann...
Aber irgend so was gab es doch früher
auch schon mal. Es gab schon irgendwelche
solche Lösungen für Python im Browser.
Wo ist es denn, wenn dir das war?
Da hatten wir doch letztes Mal drüber gesprochen.
Wie ist das denn? Python-Skript? Ja, aber ich habe es natürlich nicht nachgeguckt.
Das wäre jetzt so einfach.
Ja, ich weiß es auch nicht mehr. Ich weiß nur auch,
ja, es gab sowas schon mal und das aus irgendwelchen Gründen
ist das wieder versandet oder so
oder war nicht so, aber ich weiß es auch
nicht genug darüber, um irgendwas dazu sagen zu können.
Ich habe nicht gesagt, warum ich angefangen zu reden. Das war doof.
Ja, ich weiß, dass es mal
so eine Lösung gab für, also
irgendeine Universität hat man das gemacht,
um Leuten Python beizubringen.
Dass man halt irgendwie so einen kleinen
Python-Interpreter im Browser hatte,
aber das war halt kein vollständiger, das war kein...
Ja, so eine Art Micro-Python irgendwie mit einem
verringerten... So eine Art, ja.
...Bildins und nicht so viel Batterien dabei.
Und der war halt roh in JavaScript
programmiert, was dann auch zu vielen schönen Dingen
geführt hat, aber
zum Ausprobieren ist das natürlich eine schöne Sache
gewesen. Oh, damit kennst du dich ja auch jetzt besonders gut aus,
Johannes, also zumindest mit dem Script-Type von...
Mit JavaScript nicht. TypeScript machst du
Darf ich jetzt ein bisschen
damit arbeiten. Es ist gar nicht so schlimm, wie man
sich das vorstellt. Ja, wir wollten über Typen, wollten wir auch
nochmal sprechen. Jetzt haben wir schon wieder alles verraten, was
demnächst kommt und Postgres kommt.
Vielleicht dazu, was machen
wir denn so demnächst? Aber was ist denn noch in den
News drin? Haben wir noch was vergessen? Da war nämlich gar nicht so
viel Großes diesmal. Ne, diesmal war irgendwie
ansonsten nicht so, also doch was noch,
das gibt es jetzt im Sommer, das kann man schon mal ankündigen.
Wagtail Release
3.0. Das wird sicher noch
interessant, da machen wir bestimmt noch was zu.
Funktioniert es denn auch endlich jetzt mit Django 4?
Ja, ist schon lange, ist schon lange.
Ja, gut auch.
Ja, doch.
Ich weiß noch nicht.
Auf Python 3.11 gibt es ja inzwischen Betas, genau.
Und die Performance-Vergleiche sehen sehr gut aus.
Wie viel schneller ist das?
20 Prozent habe ich gehört, stimmt das?
Ja, so wie von 3.9 auf 3.10 einfach nochmal zu viel schneller geworden.
Schön.
Sehr gut, sehr gut.
Das ist schon nicht schlecht.
Es gibt auch jetzt auch Diskussionen darüber,
ob man den Gil jetzt nicht einfach mal abschafft
oder so eine Alternativ-Version, oder?
Ja, da gibt es, also da hat einer bei Facebook, ich habe den Namen vergessen, der hat da irgendwie anderthalb Jahre.
Immer und lange Diskussionen darüber.
Also es gibt diese alten, dieses alte Projekt von, wie heißt der, Hastings, ich weiß nicht, diese Glectomy-Geschichte.
Unladen Swallow.
Ja, ist das das gleiche? Ich weiß gar nicht.
Ich weiß nicht, aber auf jeden Fall gibt es das auch.
Ja, aber der Ansatz jetzt, also wie heißt der, Sam, ich habe den Namen vergessen.
Stackless Python gibt es auch schon seit Ewigkeiten,
was auch niemand benutzt.
Oh, das weiß ich nicht.
Soweit ich weiß, dieses, wie heißt das?
EVE Online oder so benutzt Stackless.
Ah, echt?
Ja, dann schon.
Guck mal, Johannes.
Aber die sind noch auf Python 2.
Jochen hat gerade was von einem Computerspiel erzählt,
wo er die Technologie kennt und das war gegen dich.
Aha.
Mal, wenn es nämlich Johannes, der sich mit den Spielen auskennt.
Ja, ich kenne mich mit den Spielen aus,
nicht mit der Technik dahinter.
Die ist mir egal.
Na gut.
Muss nur gut aussehen.
Ähm, nee, aber der jetzige Ansatz ist auch so, dass da viele Leute gesagt haben, die drauf geguckt haben, oh, der sieht so aus, als ob das wirklich funktionieren könnte. Insofern, ja, könnte sein, dass es, also bis es soweit ist, wird es natürlich noch eine ganze Zeit lang dauern. Aber, ähm, ja, allein, dass da jemand so viel Arbeit reingesteckt hat, das ist auch schon lange nicht mehr passiert.
Auf der anderen Seite, ehrlich gesagt, also meine Position dazu ist ja so, ja, so wahnsinnig wichtig ist das jetzt halt nicht, weil ich meine, das wäre ja auch nochmal eine interessante Frage, ich weiß nicht, ob euch irgendwie eine Situation, oder ich habe da Schwierigkeiten, ich weiß nicht, dass man tatsächlich irgendwie I.O. multiplexen will und gleichzeitig ganz viel CPU braucht, weil dafür, dann wäre es gut, Gil irgendwie loszuwerden, aber ich habe die Situation nicht so oft.
Also das Projekt heißt übrigens NoGill und da gab es einen Blogartikel zu bei der PSF-Blog.
Ah, okay. Kann sein.
NoGill. NoGill.
Man darf auch nicht vergessen, dass ganz viele andere Sprachen, die so interpretiert sind, auch einen Gill haben, der aber längst nicht so viel diskutiert wird.
Längst nicht so viel irgendwie im Weg steht.
JavaScript hat es auch.
Aber es soll tatsächlich einen Compiler-Flag geben in Python 3.12, wo man den Gill mit abstellen kann.
Du kannst auch selber
den freigeben, ja, das kannst du
auch machen, wenn du halt, gut, du musst
dann halt, ja, du musst dann schon
auch eine C-Extension schreiben, aber geht
schon. Und wenn du sowas
benutzt wie NumPy oder so, dann
machen das natürlich alle. Also da wird
sowieso auch immer alle Prozessoren benutzt und so.
Also hier steht, dass das das einzige Feature wäre, was wirklich
Concurrency between Threads
verhindern würde.
Das verstehe ich nicht sofort.
Ja, also Concurrency, also das ist halt
die Frage, also ich glaube, ich verstehe, was das meint,
aber das bedeutet halt, also was
momentan nicht geht, ist, dass du
sozusagen mit
mehreren Threads
mehr als eine CPU benutzt gleichzeitig.
Das geht nicht.
Also eine Thread pro CPU?
Nee. Alle Threads eine CPU.
Aha. Genau.
Das ist halt das, was der Gil macht.
Jeder Python-Interpreter kann nur eine CPU haben.
Ja. Oder? Okay, also muss ich
mehrere, ja, muss ich den Interpreter multiplexen.
Du musst den Multiprocessing machen. Genau.
dann auch wieder Mist. Ja, oder du kannst halt,
wenn du halt unten drunter sitzt, wenn du sowas
wie in einem Pipe bist oder so und da sagt dir,
hat dir gerade jemand gesagt, multipliziere mal diese beiden Matrizen,
dann kannst du auch irgendwie sagen, okay, ich
weiß, was ich tue, GIL gebe ich
frei und dann. Und auch diese ganzen
Netzwerksachen, die geben den GIL üblicherweise
ja auch immer wieder frei. Also wenn du irgendwie viel
I.O. machst mit Select Calls oder sonst
irgendwelchen Sachen, hast du ja auch keinen GIL in deinem Zahn.
Also wartest du nicht immer auf
eine, sondern du wartest schon auf alle gleichzeitig.
Aber du kannst dann, wenn Pakete kommen, halt immer nur
eins bearbeiten. Ja.
Na gut, dann bin ich mal gespannt,
was es da in 3.11 und 3.12 und 3.13
und 3.14 und so weiter
geben wird.
Spannend.
Okay, dann sind wir mit den News durch.
Haben wir nicht geschafft, vielen Dank.
Du kommst jetzt zu unseren User-Fragen.
Ach, User-Fragen, genau, ja, richtig.
Wir haben auch eine längere Pause gemacht,
muss man sagen. Das könnte natürlich auch dazu
geführt haben, dass es mehr war als normalerweise.
Ja, und zwar, aber wir hatten auch mehrere Leute,
die quasi das gleiche Thema sozusagen ein bisschen angefragt haben.
Und zwar, das war, wie haltet ihr euch eigentlich so auf aktuellem Stand?
Wo kommt der an Neuigkeiten, Informationen ran?
Ja, das war die eine Frage.
Und die andere Frage, wo du sagtest, das ist fast dasselbe,
war, wie fange ich denn damit überhaupt an?
Ja.
Mit dem Quereinstieg.
Ich fand ja, das waren zwei unterschiedliche Dinge.
Ja, das sind unterschiedliche Fragen im Grunde.
Ja, aber ich würde die gerne auch beide beantworten.
Ja, dann beantworten wir.
Wie haltet ihr euch denn auf dem Laufenden?
Ich frage doch mal den Martin.
Ich? Also ich glaube
meistens dadurch, dass ich einfach Jochen anrufe,
aber ich glaube, diese Optionen haben jetzt
nicht so viele
der Zuhörer.
Schreibt uns immer eine E-Mail, wir machen einen neuen
News-Kanal auf.
Ja, aber ansonsten
naja, also
Bist du auf Twitter?
Ich bin tatsächlich, also sowas wie
Twitter mache ich tatsächlich gar nicht. Ich lese tatsächlich
sehr viel einfach Dokumentation
der Sachen, die ich neu verwende und
was denn immer Neues kommt,
dann wird immer... Das ist, glaube ich, ein ziemlich guter
Tipp, dass man tatsächlich weiß, welche Sachen man
verwenden möchte und dann davon die offizielle
Doku liest. So kommt man tatsächlich, das ist
eine Antwort auf die zweite Frage, glaube ich,
am schnellsten in die Themen rein.
Also es gibt da ja auch dann
immer typischerweise What's New
in den Dokumentationen und da steht
tatsächlich auch die wichtigen Sachen drin. Also daher
habe ich meine Insider-Infos.
Das finde ich tatsächlich gut, weil viele Leute, die anfangen, die
prügeln sich so ein bisschen mit irgendwelchen Tutorials
rum oder YouTube-Sachen oder so.
Und ich finde tatsächlich, dass genau das
in die Hand zu nehmen, was man braucht und dann die Doku lesen,
viel effektiver.
Ja, okay, aber um noch mal
auf das News-Thema zurückzugehen.
Jochen, wo kriegst du denn deine News?
Ja, ich tatsächlich heutzutage
meistens über Twitter. Ich habe früher
sehr viel RSS konsumiert und
davor Newsnet. Und heute
ist es hauptsächlich Twitter, wobei man
da ein bisschen aufpassen muss.
Wenn man auf Twitter irgendwie neu ist,
und nicht viele Leute abonniert hat,
dann kriegt man die ganze Zeit
irgendwie Nachrichten oder Tweets in die Timeline
gedrückt über Celebrities und Fußballer und
Fußballer-Frisuren und weiß ich nicht,
so Zeugs, wo man sich sagt, hä? Aber
wenn man das eine Weile benutzt hat
und dann so ein bisschen selber kuratiert hat, dann
ist es schon ziemlich gut. Also man muss es hart kuratieren
und dann kann man Sachen filtern, wie das der Johannes
auch gern macht. Ja, ich
finde auch, also Twitter ist eine
gute Quelle für Neuigkeiten, aber man muss da wirklich
ganz knallhart filtern. Ich habe
eine ganz lange Liste mit Wörtern, die mich nicht
interessieren.
Da sind Celebrity-Namen
drauf und Politiker-Namen drauf
und politische Institutionen
drauf und Themen, die mich einfach nicht
interessieren, die ich nicht
auf Twitter habe. Also man muss sich seine eigene Filterblase bauen
und quasi sich von der Welt so abschotten,
dass man nur die Dinge konsumiert,
die weitestmöglich brauchen sind.
Zumindest auf Twitter.
Die meisten Meinungen, die auf Twitter kommen,
sind ja erstmal unqualifiziert und deshalb
interessiert mich nicht. Also ich würde das auch Anfängern
tatsächlich nicht empfehlen wollen, weil das ist ganz schön
schwierig, rauszufinden, was einen dann überhaupt
interessiert oder was gute Qualität hat, wenn man noch
gar nicht weiß, was man sucht.
Wenn man
tatsächlich über technische
Themen auf Twitter reden möchte,
dann kann man ruhig alles, dann kann man
ruhig Democrats und Republicans
und Biden und die ganzen Namen,
die es da so gibt, einfach alle rausfiltern, weil
da hat man ja nichts davon.
Da muss man dann aber schon
eben, ja, also man kann jedem mal
eine Chance geben. Ein Follow
geben ist leicht, aber man muss dann auch
sich das durchaus wert sein und jemandem wieder
entfolgen. Und dann bildet
sich so nach einer Weile eine Sammlung
raus von Dingen, die man
lesen kann. Ich glaube, dass das vielleicht noch einer der Challenges
ist im Internet. Also ich habe da auch irgendwann
gesagt, man legt sich so seine Linklisten
an oder sowas und die zu pflegen
ist aufwendig und zwar auch die Infos,
die guten zu finden und die zu karatieren, ist
gar nicht so wenig Teil der eigentlichen
Arbeit dann auch. Also um da halt erstmal rauszufinden,
was sind denn die wichtigen Dinge und die dann zu teilen.
Ich habe auch so ein kleines Linklist, wo man
halt für Einchecker, glaube ich, so ganz gute Tipps findet,
wie man da die ersten Schritte gehen könnte.
Aber da hinzukommen, das dauert
halt einen Moment. Du musst die erstmal entdecken und auch dann filtern.
Wie viele Quellen gibt es denn? Die muss man alle angucken und dann
selber so ein Gespür dafür entwickeln,
was man denn gebrauchen kann, was einem
liegt und sowas, ja.
Ein guter Trick ist auch, das über
Personen zu machen. Also zum Beispiel, wenn man den
Jochen auf Twitter findet, dann
kann man ja gucken, wem der Jochen so folgt.
Oder man kann lesen, was der so den ganzen Tag
macht. Ja, aber ich mache da nicht viel.
Das hilft nicht. Aber tatsächlich, genau, wenn man
sich anguckt, wem ich folge, könnte man
wahrscheinlich eine ganze Menge relevanten Sachen finden,
das stimmt. Ja, oder halt
bei anderen Leuten in der Community sicher auch.
Und ich glaube auch
leider, das ist halt auch sowas, das ist mit der Zeit, glaube ich,
schwerer geworden, weil wenn ich, ich
gucke halt auch ab und zu so auf YouTube und so
und es gibt auch super Sachen auf YouTube, aber
wenn man... Auch da muss man
ganz arg ausfällen. Ganz arg ausfällen und
man muss halt sich durch viel Zeug durchgucken,
wo ich jetzt sagen würde so, aber das weiß man halt
nicht, wenn man anfängt. Ja, gerade die Buzz und Buzzwords,
man kann so sich versumpfen in irgendwelchen Dingen von Leuten,
die selber eigentlich gar keine Ahnung haben, beim Lernen dann
erstmal was aufnehmen, nach dem Motto, ich habe jetzt meinen YouTube-Kanal
gemacht. Ja, gar nicht so einfach, ja.
Das macht es halt schwer, ja.
Also insofern, was ich es auch nicht kann.
YouTube hat übrigens auch immer noch RSS-Feeds,
also da kann man auch die Kanäle alle mit
per RSS abrufen.
So mache ich das.
Ich will das nicht auf YouTube haben.
YouTube hat auch eine API, die man benutzen kann, die kann man sogar in Python benutzen.
Ja, das stimmt.
Aber das wollte ich vielleicht nochmal so als Tipp genau, meine
bevorzugte Art, YouTube-Content
zu konsumieren, ist übrigens
den ohne Bild
zu hören, weil ich nicht so viel Zeit
habe, irgendwie vor einem, also wenn ich
das höre, dann irgendwie gleichzeitig
auf den Bildschirm zu gucken, weil ich gleichzeitig irgendwie
spüle oder einkaufen gehe oder sowas meistens
und was ich mache
und das meinen Podcatcher
Podcast Player kann das, aber das können
bestimmt andere auch, da kann
man, der hat so ein, der macht
so ein Sideload
Action ins
Share Sheet bei
bei iOS und wenn man dann sagt, irgendwie man ist auf einem
YouTube-Video, es gibt ja auch ganz viele
Talks, also das, ach, das ist vielleicht auch ganz interessant, Konferenztalks
oder so, man guckt sich die Konferenzen an, guckt,
welche Themen sind da so interessant und wenn man auf einem Talk ist
auf YouTube und sagt, share. Auch da muss man ganz arg filtern.
Stimmt. Auch da muss man ganz arg filtern,
weil, also selbst auf den guten
Konferenzen, ja, ist die Hälfte der
Talks einfach Themen, die mich nicht
interessieren und dann, auch da muss man
einfach nicht die Sachen angucken, die man
mit allen Dingen, ne, wenn die ganzen Content kann man zu Liebzeiten
ja gar nicht konsumieren und da muss man vielleicht
ein bisschen sich einfach aus, und ich
Ich habe es früher immer so gemacht, ich habe erst mal so das
lästige weggerockt und dann versucht, dann zu den
guten Sachen zu kommen. Das ist eine ganz doofe Idee.
Man muss erst mal zu den guten Sachen anfangen, weil dann
fällt das lästige dann weg.
Es gibt auch einfach so viel
Content, dass man da nicht durchkommen kann.
Und dann, wenn irgendwas einem nicht gefällt, dann
muss man es einfach wegdrücken. Und das muss man aber auch
lernen. Ja, das ist nicht so einfach.
Also vor allem, was dann auch wichtiger ist, dass man halt aufhört,
dann auch irgendwann mit noch einem Talk und noch einem Talk und noch
eine Dokumentation, sondern auch mal ins Machen kommt.
Also halt tatsächlich an Projekten sitzt, die man
irgendwie versucht weiterzubringen, umzusetzen,
Dinge, die einen interessieren,
irgendwie, dass man da einsteigt.
Weil das ist das, was einen am weitesten und am schnellsten weiterbringt,
weil man am schnellsten auf die Probleme stößt,
die man auch lösen muss oder möchte.
Und da halt dann die relevanten Sachen sich rauszusuchen,
die einem da weiterhelfen, ist wahrscheinlich effektiver
als erstmal die Grundlagen dafür zu lesen.
Was nicht immer ist. Das ist schon nett, wenn man
bestimmte Sachen hat. Ja, aber das
klingt so ein bisschen vom Thema ab vielleicht.
Wobei es...
Wenn du YouTube-Videos anhörst,
warum dann nicht direkt Podcasts?
Ja, weil es da nur begrenzt viele gibt.
also ich meine, ich höre natürlich auch Podcasts, also da werden
vor allen Dingen, ja,
TalkPythonToMe,
PodcastInit sind vielleicht so die beiden größten.
Der deutsche Python-Podcast soll sehr gut sein.
Aber das ist ja so ein bisschen
irgendwie, das, ja,
das wissen dann die Leute, die wir uns hören.
Vielleicht.
Martin hatte gerade noch eine Idee.
Ja, was ich immer noch, was immer beim
Lernen für mich immer sehr wichtig war, ist
Code anderer Leute zu lesen.
Und also das macht man
natürlich idealerweise dadurch, dass man
andere Leute Code reviewed, das ist dann
immer das Ideal, dann kann man denen sogar
noch sagen,
blöde
Kommentare reinwirken, genau das,
also ich mache das glücklicherweise
beruflich und glücklicherweise habe ich sehr gute Kollegen,
die sehr gute Programmierer sind und dann
ich habe sehr viel einfach dadurch
gelernt, dass ich deren Code gelesen
und blöde Kommentare
darüber abgegeben habe.
Aber das ist ehrlich gesagt, das ist ja schon so ein bisschen
die steile Stelle
an der Lernkurve irgendwie, also beide Sachen
sowohl einfach so sich über, durch die Dokumentation
von Projekten lesen, wie auch
fremde Leute Code lesen. Ich erinnere mich da noch dran,
dass das halt, also klar, ich würde absolut
zustimmen, da kann man super viel lernen, aber es ist halt auch
echt anstrengend, also
vor allen Dingen, wenn das halt so Sachen sind, die man
gar nicht mehr, ja, da
aber ja, da kann man echt viel lernen, das ist
ja. Es gibt ein Buch
mit dem Titel Learning Python the Hard
Way. Ah, ja.
Das ist jetzt schon, habe ich auch mitgelernt.
Ja.
Finde ich gut.
Ja, aber das ist sehr witzig, weil einige Leute, die dann fremden Code lesen oder eigenen Code lesen, stolpern dann irgendwann darauf mal wieder. Ich habe das, glaube ich, schon mal erzählt, aber ich kenne die Geschichte, wie Jochen dann meinen Code reviewt und dann, ah, nee, oh Gott, oh Gott, oh Gott, schmeiß mal weg, mach mal neu. Ja, okay, neu gemacht, weg schon. Und dann wieder, ah, Gott, oh Gott, oh Gott, na, was ist das denn? Schmeiß mal weg, mach mal neu. Und dann so, ah, irgendwann ein bisschen später wieder so, oh, nee, Gott, oh Gott, was ist das denn? Jochen, das habe ich von dir kopiert.
Ja, wenn man seinen eigenen Code später
sieht, dann passiert einem das auch regelmäßig.
Einen eigenen Code ansehen.
Past Me war schon
ein ganz schlechter. Ja, ja, ein halbes Jahr später
so, oh Gott, oh Gott, oh Gott.
Was ist das denn? Kann das weg? Ja.
Ja, das Wichtigste ist weitermachen, glaube ich, und dass man
halt am Ball bleibt.
Das ist ein bisschen eine Frage, wie viel Zeit man investiert.
Ich habe noch zwei Sachen, die ich
als Quelle habe. Die eine ist
Hacker News. Das ist aber mehr so, was
halt so für den groben
Überblick möglich ist, ja, und auch da
muss man ganz arg filtern, ja, und vielleicht
am Tag einen oder zwei Links
rausholen und auf keinen Fall in die Diskussion
gucken, weil das ist ganz schrecklich.
Ja, ich würde auch nicht ablegen, alle die Links,
sondern ich würde, wenn ich was, mir Zeit nehme,
die dann direkt angucken.
Wenn es interessant ist, kann man
sich das ja ansehen und das
in diesen Stand rein synthetisieren
oder zumindest wissen, dass es etwas gibt.
Ja, aber sofort, direkt einmal drüber.
Das ist wirklich mehr so eine Discovery-Sache, ja, was gibt es denn?
Und da kommen auch immer wieder Python-Sachen durch, wo man sich dann die Dokumentation ansehen kann. Aber das ist wirklich so ein Low-Level. Aber was ich ganz viel mache, ist eben über RSS-Feeds von Personen das Blog lesen.
Also zum Beispiel Jochens Blog, ja, hier auf dem Dorf wird abends geläutet.
Das ist, ja, die etwas altmodische Push-Notification-Methode.
Jetzt ist Feierabend, hier ist jetzt Feierabend auf dem Dorf.
Das kann man auch nicht so gut wegdrücken, es gibt keinen Spam-Filter.
Nee, nee. Aber Jochens Blog zum Beispiel, ja, der Jochen veröffentlicht ja seine Weaknotes,
das heißt, dann weiß ich auf jeden Fall ungefähr, was der Jochen so gemacht hat.
Ich gucke mir von den Podcasts eigentlich gar nichts an
und von den Artikeln nur die Überschriften.
Aber es ist so ein, ja, am Puls der Zeit bleiben,
was man da halt hat.
Ja, also, genau.
Johannes macht ja auch Wignotes und die gucke ich mir auch immer an.
Ich finde das immer sehr interessant.
Ich finde da immer irgendwie Dinge, die ich nicht gesehen hatte,
die irgendwie bei mir nicht vorbeigekommen sind.
Ich dachte, ah, super, das ist ja total interessant.
Also das hilft auch auf jeden Fall.
Also ein paar Newsletter vielleicht auch, aber
da kann man auch, wenn einem was interessiert, dann direkt
lesen. Also ein paar bessere
sind vielleicht irgendwie Data Science Weekly oder
Python Weekly oder so.
Ja.
Genau, ich weiß nicht,
ich habe ein paar, ich habe Postgres Weekly
auch noch, der ist auch noch ganz gut.
Und es gab noch so einen anderen,
den ich gerade vergessen habe, den muss ich mir nicht schon
einfach reinschreiben, vielleicht finde ich den ja noch.
Ja, Newsletter.
Ja, aber ansonsten,
also eben mit Leuten reden, finde ich immer
so das Beste eigentlich.
Wie schon sagtest du immer, Jochen anrufen, fragen.
Ja, nein, aber
wirklich, also wenn man halt irgendwie auf die lokalen
Treffen geht, da trifft man andere Leute,
die sich vielleicht mit demselben Thema beschäftigen.
Ich glaube, das ist eine gute Idee, weil
die wissen meistens auch so ein bisschen was oder jeder
weiß so ein bisschen was mehr und dann hat man
das, irgendwer hat das mal Schwarmintelligenz genannt
oder so. Das finde ich gar nicht so schlecht.
Da kommt immer so ein bisschen was raus. Da kommt man immer
mehrere Schritte weiter, als wenn man da
alleine gegen die Wand läuft und da sich
dann abwälzt und dann drüber klettern will. Das ist
dauert immer ein bisschen länger und manchmal fällt man dann
in so Lücken rein, die niemand sehen wollte
oder die man selber gar nicht entdecken wollte
und verlierst so ein bisschen den Fokus und das ist vielleicht ganz
angenehm.
Ja, ansonsten glaube ich, dann
sind wir damit auch mehr
oder weniger, achso, Quereinstieg,
andere Frage, ne, das wäre vielleicht auch nochmal.
Ja, also die Frage ist,
was bedeutet Quereinstieg und wie viel Zeit investierst du,
ist halt auch da die Frage, wie viel Zeit kannst du denn aufwenden.
Wenn dich Python nur so nebenbei interessiert,
dann hast du vielleicht fünf Wochen
die Stunde Zeit.
Fünf Wochen die Stunde, fünf Stunden die Woche.
Das ist zwar schon ganz schön viel,
wenn man sich überlegt, dass man so fünf Stunden die Woche für so ein
Hobby erübrigt, aber wenn man das jetzt
mit jemandem vergleicht, also ich habe zum Beispiel die ersten zwei Jahre
70 Stunden die Woche ungefähr investiert
und dann braucht man halt für denselben Stoff
im gesetzten Fall, man ist das genau gleich
effektiv, 28
Jahre, wie für diese zwei Jahre, um
einfach denselbe Menge irgendwie aufzunehmen,
wenn man fünf Stunden die Woche macht, rein rechnerisch
und das ist halt einfach so die Frage, also wie viel Zeit
steckt man wirklich rein, um weiterzukommen und was will
man damit anfangen? Also wenn man jetzt
einen Top will, sollte man vielleicht
den harten Weg gehen, ja,
the hard way und sich wirklich die Sachen so ein bisschen auf den
Grund angucken, damit man
vielleicht irgendwo mitkommt, weil man möchte ja
vielleicht auch ein Level haben.
Ja, aber ich finde es schwierig, also ich meine, das sind
halt eben auch, im Rückblick
ist es halt so viel Zeit, die man investiert hat.
Wenn einem das jemand gesagt hätte, wie viel Arbeit
das ist, dann hätte man damit gar nicht angefangen.
Ich hätte mir gedacht, nee, dann gehe ich lieber
mit Holz, genau.
Irgendwie gehe ich spazieren
und gucke mir irgendwie die Bäume an und die Blüten
und denke mir, ach ja.
Aber der Grund, warum das dann passiert ist, ist ja eigentlich,
dass das halt einfach Spaß gemacht hat.
Und dann merkt man das nicht so.
Dann denkt man sich, hupsala, schon wieder ein Tag vorbei.
Ja, genau, aber das ist dann eher in der Nacht.
Es muss halt gut sein.
Das muss halt einem Spaß machen und irgendwie liegen, ne?
Ja.
Also wenn euch das wirklich so...
Man darf ja auch nicht so viel Stress machen.
Ja, genau.
Der Dominik stresst uns ja jetzt,
dass man hier so und so viele Stunden reintun muss.
Aber es geht ja auch, man kann es auch nebenher machen.
Man kann es auch zum Spaß machen.
Ja, man sollte es zum Spaß machen.
Ja, auf jeden Fall.
Ein Python ist sehr gut, um es zum Spaß zu machen.
Aber halt tatsächlich auch für einen Lebensunterhalt.
Also es geht eigentlich ganz gut.
Aber man muss halt dann bereit sein, auch was zu tun.
Ich wollte jetzt niemanden stressen,
aber es geht halt darum,
wenn du jetzt einen Queranschick wirklich finden willst
und sagst, du hast dich eben entschieden,
das ist jetzt dein Ding, dann mach's
ordentlich.
Würde ich jetzt behaupten.
So regionale Treffen sind da, glaube ich,
was supergut ist. Also ich bin, als ich
nach Düsseldorf gekommen bin, bin ich einfach in den
Python-Fu gegangen und jeden Donnerstag
da hingegangen.
Ich kenne das ja, im Chaosdorf
in Düsseldorf. Genau, im Computerclub in Düsseldorf.
Jeden Donnerstagabend
ist Python-Fu und da kommen einfach Leute,
die interessiert sind. Das hat auch gar kein Programm
und gar keine Agenda oder so, sondern
es ist einfach
Gleichgesinnte treffen und das
führt dann schon automatisch
dazu, dass man darüber spricht. Und dann kann man ja auch
gucken, ob man irgendwo was hat, was
man gerne machen möchte oder ob man irgendein Thema hat,
was einen interessiert. Und da findet sich dann immer jemand,
der irgendwas dazu sagen kann. Oder
auch jemand anders, der ein Thema hat,
wo man dann selbst was dazu sagen kann. Und dann
kommt man da so in den Austausch rein. Also das
ist auch eine ganz nützliche Sache.
Ja, kann ich mal bestätigen.
Ja, ja. Okay, gut.
dann würde ich sagen, haben wir uns mit diesem
Themenbereich auch beschäftigt.
Dann können wir ja ein neues Kapitel anfangen.
Um den Laser des Todes
geht es dann jetzt. Ja, genau.
Ja, da musst du jetzt, glaube ich,
erstmal ein bisschen ausholen, Martin. Was ist das denn?
Genau. Und was macht ihr da überhaupt?
Also, du musst doch nochmal von dem Institut
leichter zählen, Hintergrund und dann. Also, wir sind
der European XFEL. Das XFEL
steht für Röntgenfreie
Elektronenlaser.
Wir sind eine Großforschungseinrichtung in
Hamburg oder eher bei Hamburg.
Und, ja, wir haben dort einen der stärksten Röntgenquellen der Welt. Ja, ich glaube, wir sind aktuell sogar Nummer eins. Da ist immer so ein Wettlauf, wer da jetzt gerade den Arzt fahren hat.
Kleiner Understatement.
Ja, es gibt ja auch nicht so viele auf der Welt. Also so ein Röntgen und Laser zusammen, das ist tatsächlich gar nicht so einfach. Das kostet halt auch gleich mal anderthalb Milliarden Euro.
Warum macht man das zusammen?
Ja, also Röntgen ist halt ganz praktisch.
Also es geht effektiv, ein großer Witz daran ist,
dass man effektiv ein sehr, sehr gutes Mikroskop hat.
Man kann deutlich kleinere Sachen sehen,
als man mit einem normalen Lichtmikroskop sehen kann,
weil die Wellenlänge von Röntgenlicht tausendmal kürzer ist,
als die von Sichtbewerbem Licht und dann sogar mehr als tausendmal.
Und dann kann man halt tausendmal kleinere Sachen sehen
Und dadurch kann man dann zum Beispiel sich das Spike-Protein von Corona angucken. Das war bei uns natürlich gerade das Thema schlechthin. Naja, also das ist auch alles sehr interessant, aber bis die wissenschaftlichen Ergebnisse dann tatsächlich in der Praxis ankommen, wird hoffentlich Corona vorbei sein.
Ist natürlich trotzdem interessant. Ja, und solche Sachen können wir uns dann halt angucken, wobei wir auch viele andere Sachen machen. Also zum Beispiel, also meine Gruppe hat sich viel um Magnetismus gekümmert. Da ging es um tatsächlich solche banalen Sachen wie, wie schnell kann man eigentlich grundsätzlich, also prinzipiell auf eine Festplatte schreiben.
Ja, die Forschung, also tatsächlich war es so, dass man lange Zeit Angst hatte, man könnte gar nicht so, also man käme da an eine Grenze, dass man also prinzipiell physikalisch nicht schneller eine Festplatte schreiben kann, als halt, ich weiß nicht, was damals vorgeschlagen wurde.
Und dann haben wir das mal, also nicht wir, also die Physik hat das nachgemessen und festgestellt, nee, diese Grenze gibt es gar nicht, die man sich da gedacht hat. Das geht sogar tausendmal schneller, als man sich das gedacht hatte. Und ja, dann wollte man halt eigentlich wissen, ja, was passiert denn da? Also offensichtlich hatte man das Problem nicht verstanden.
Und wir haben uns dann tatsächlich mit einem solchen Randgläser, stellen wir uns die Frage, wie schnell geht das eigentlich? Und richtig, also die eine Sache ist, dass man sehr kleinere Sachen sich angucken kann und das andere ist, dass man sich sehr, sehr schnelle Prozesse angucken kann, weil wir sehr kurze Pulse machen können. Also wir kommen unter eine Femtosekunde drunter, wem das was sagt, also 0,1501 Sekunden.
Das ist sehr langsam. Also schnell.
Ja, genau. Und das ist der andere Grund, warum man das macht.
Und dann auch noch im Röntgenbereich, es hat halt dann auch noch die gleichen Vorteile, die man normalerweise beim Röntgen hat, dass man halt durch Sachen so gewissermaßen halb durchgucken kann und dann so in Sachen reingucken kann.
Das ist natürlich dann auch noch ein schöner Nebeneffekt.
Und dann, das Ding läuft dann permanent und macht ihr irgendwelche Experimente und die wertet ihr dann irgendwie aus mit Bildern, die auf Platten gespeichert werden, die ihr dann?
Ja, also wir haben da uns so, also da gibt es halt diesen Laser, der ist halt dreieinhalb Kilometer lang und am Ende kriegen wir dann immer wochenweise, verwenden wir den dann, da gibt es dann irgendwelche Benutzer, nennen wir die, die dann uns Ideen geben, was man denn da messen könnte und die kommen dann bei uns vorbei.
Also heutzutage kommt es nicht mehr bei uns vorbei wegen Corona, aber jetzt müssen wir es alle mal selber machen, sehr anstrengend, aber normalerweise kommen die dann bei uns vorbei und machen dann mit dem Röntgenlaser Experimente und genau da kommt dann halt die Flexibilität tatsächlich von Python ins Spiel, dass wir ja im Prinzip, also wir haben da immer mehrere Teams und wir wechseln uns typischerweise ab, also eine Woche kriegt das eine Team auf den Röntgenlaser,
Laser verwenden, dann nächste Woche in den anderen.
Insgesamt, es sind immer drei Teams parallel,
insgesamt sind wir sechs Teams, also
immer drei, erst die einen drei, dann die
anderen drei, wieder die einen drei, die anderen drei.
Und ja, dann kommen unsere Benutzer
halt vorbei und die haben dann die verrücktesten Ideen, was sie
da mit dem machen wollen.
Und dann stehen sie dann vor uns und sagen, ja, da macht
mal. Und
häufig muss man dann halt
Sachen, also
wir haben dann noch das
Bonusproblem, dass es halt ein Röntgenlaser
ist und bei
da sollte man halt nicht unbedingt daneben
stehen. Also wirklich gefährlich ist das eigentlich auch
nicht. Also gerüchtete Weise,
wenn man da in
anderen Weltregionen ist,
dann ist denen das auch egal. Da stellen sie
einfach direkt daneben. Aber bei uns ist das, in Deutschland
ist das nicht erlaubt. Und das heißt,
es muss alles ferngesteuert werden und alles automatisiert
werden. Und
alles ferngesteuert, okay, das machen das alles Computer.
Um mal so eine Größenordnung zu
geben, also anstatt, dass ich mich
dorthin stelle und was rumschraube, muss dann halt
ein Motor das tun. Wir haben dort weit
über 1000 Motoren, die dort gesteuert werden
und das
machen wir tatsächlich alles mit Python
und zwar vorwiegend deshalb, weil
wenn dann so ein Benutzer vor uns steht
und dann sagt, ja
wir haben
hier die Probe und der Röntgenlaser
ist leider viel zu stark, wir müssen den jetzt
die Probe jetzt immer hin und her bewegen, damit
wir nicht immer denselben Punkt treffen,
sondern damit er halt nicht kaputt geht, dann
muss ich mich halt hinsetzen
und das dann programmieren, dass dann die
Probe halt
geschickt so hin und her wackelt, dass sie
dabei nicht kaputt geht,
dass wir sie mit einem Laser beschießen.
Und dann hat der dann verschiedene Achsen in den Motoren, die
ihr irgendwie kennt und dann könnt ihr mit tausend Motoren
viele Dimensionen, die da irgendwie
möglich sind, tun. Ja, richtig.
Und wir
brauchen wirklich die Flexibilität, dass wir
dann, also wir haben wirklich
für eine Woche schreiben wir dann tatsächlich
ja, so
viel Code ist das ja praktischerweise in Python
jetzt auch nicht, aber es macht es halt möglich.
Und dass man halt da live dann programmiert und live dann Dinge ändert. Also uns passierte dann regelmäßig, dass wir festgestellt haben, oh, das ist alles nicht stabil genug, wir schießen die ganze Zeit daneben und können das aber messen, wie viel wir daneben schießen.
Und dann muss halt ein kleines Python-Programm geschrieben werden, womit wir dann immer messen, wie weit schießen wir denn daneben und fahren dann die ganze Zeit den Laser wieder dahin, dass wir halt nicht mehr daneben schießen.
Also ein kleines bisschen IoT in groß?
Ja, also dazu muss man sagen,
für echtes IoT sind wir noch nicht mal sonderlich groß.
Also so eine Automobilfabrik ist da,
ach so, IoT, nein, also ja.
Also es gibt da deutlich größere Einrichtungen,
die ähnliche Sachen machen.
Automobilfabriken zum Beispiel,
die haben da auch tausende von Motoren.
Aber die werden typischerweise jahrelang vorbereitet
und laufen dann jahrelang durch.
So ein bisschen so, als würde einer in der Autofabrik
sagen, und morgen machen wir jetzt nicht mehr hier den Golf
12, sondern wir machen jetzt
einen Clown-Car und
fahr doch mal bitte irgendwie
die Motoren so, dass das dann
passiert. Ja, aber hopp, hopp. Genau.
Und so läuft das bei uns tatsächlich die ganze Zeit
und das macht es halt deshalb
Python.
Und ja,
die andere Sache ist, dass wir
natürlich dann immer sehr viele Sachen dann parallel
machen müssen, dass halt
dann die Motoren häufig dann
irgendwie parallel fahren müssen, dass man da
den Laser
anschaltet, Motoren hin und her fährt und der
ausschaltet. Habt ihr denn Joystick
für oder sowas?
Ja, der Punkt ist das ja, dass das ja automatisch
gehen soll. Deshalb kein Joystick.
Aber wenn ihr jetzt eingreifen müsst oder so?
Ja, nee,
das geht tatsächlich, also das ist glücklicherweise
selten genug, dass wir dann wirklich so mit
Maus und Klick auf Buttons dann das
machen. Das ist
ja, wobei
da dann natürlich
Da kann man, also gerade wenn man so flexibel ist, kann man dann halt auch sehr schöne, flexible Sachen machen, dass wir dann, also viel schöner als ein Joystick ist, dass wir das hinbekommen haben, dass man, ja, wir machen einfach ein Foto der Probe, bevor wir sie in den Laser reinschießen und dann können wir einfach auf das Foto draufklicken und dann schießt der Laser dahin.
Das sind jetzt alle Spielereien, die lassen sich mit so kleinen Skripten schnell mal zusammenschreiben und das ist halt der große Vorteil, dass wir halt nicht, wie das bei einer Automobilfabrik wäre oder auch tatsächlich auch in der Forschung in anderen Bereichen ist, dass man halt lange vorher einen Antrag schreiben muss und dann gibt es dort eine Softwareabteilung, die dann da irgendwelche Entwicklungen für einen macht.
das wäre für uns einfach nicht flexibel genug.
Wir müssen wirklich
sofort eingreifen können
und das können wir auch.
Aber dann kommt wieder die ganze Sache
mit dem, dass wir die ganze Zeit Sachen parallel machen müssen
und ja,
da kommt dann halt wieder der vorhin erwähnte
Gil ins Spiel,
dass wir halt eben tatsächlich
kein Multithreading machen,
weil Multithreading
ist ja der Horror
und dann tatsächlich alles
mit Asimgai auch machen.
Das ist ja das, was normalerweise immer die ganzen Leute im Web ganz viel machen.
Wir machen jetzt kein Web, aber tatsächlich ist es so,
dass Async.io sich auch für Steuerung von Sachen super eignet.
Das heißt, wenn man fünf Motoren gleichzeitig bewegen will
und dann warten muss, bis die alle angekommen sind,
das lässt sich super in so einer Async.io-Umgebung schreiben.
Das heißt, ihr kommt mit Batteries included quasi zurecht?
Ja, also ja, wir führen so ein bisschen Katalog darüber, welche Pakete wir so verwenden. Ich glaube, inzwischen sind wir so bei 30 Paketen, die wir da noch mit reinmachen.
Also natürlich insbesondere ganz wichtig sind so was wie NumPy und SciPy. Also daher kommt das ursprünglich eigentlich, dass die Datenauswertung in der Physik schon länger mit NumPy und SciPy gemacht wird. Das ist da schon sehr beliebt, schon recht lange.
Und dass man dann halt das gewissermaßen umgekehrt den Weg gegangen ist, dass wir geguckt haben, also als wir uns entscheiden mussten, wie machen wir denn unsere Experimente Steuerung, da haben wir uns gedacht, okay, die Datenauswertung läuft schon unter Python, lass uns das doch uns einfach noch ein Niveau vorher auch schon machen und machen dann auch schon die Steuerung des Experimentes in Python.
Und das hat natürlich auch dann den Vorteil, dass man das dann die Übergabe der Daten, also wenn wir dann unsere Kameras steuern, da muss man dann natürlich dann halt gewissermaßen den Auslöser der Kamera, das ist ein Kontrollproblem und das Auslesen der Daten ist dann fast schon ein Big-Data-Problem. Und wenn man das mit demselben machen kann, dann ist das natürlich super.
Und so, um mal Größenordnung zu geben, unsere Hauptkamera, die wir da verwenden, ist halt eine 2 Megapixel Kamera, die mit 5000 Bildern pro Sekunde aufnimmt.
Da kommen ein bisschen Daten zusammen?
Ja, da kommen ein bisschen Daten zusammen.
Ich muss gerade überlegen, wie viel sind das?
Ja, mal gucken. Also 2 Megapixel mal 2 Byte macht 4 Megabyte mal 5000, 20 Gigabyte pro Sekunde.
Kleiner Datendurchsatz.
Ja, da muss man, also, habt ihr so viel Platz bei euch?
Läuft das dann die ganze Woche quasi so durch oder nur zu bestimmten, oder wie viel Zeit pro Woche, wenn ihr messt, fallen denn dann tatsächlich Daten an?
Tatsächlich ist es so, dass ein großer Teil einer solchen Woche erstmal in Einrichtung und Charakterisierung besteht. Also wenn wir weniger als einen Tag brauchen, dann machen wir richtig gut. Aber die restlichen, also ein Tag der Woche ist eh immer Maschinentag, da wird repariert, gewartet und was weiß ich was gemacht. Einen Tag lang brauchen wir sicherlich auch noch zum Einrichten.
Wir haben noch fünf Tage übrig.
Und in den fünf Tagen,
ja, da können wir auch schon mal
dann wirklich, also
ja, ich würde
sagen, 15, 20 Stunden können wir dann tatsächlich
auch schon messen. Und ja, das sind Datenmengen,
die dann da durchfließen.
Und wobei
da dann das große Problem natürlich auch wieder ist,
dass wir nach Möglichkeit, dass
alles dann wieder ausgewertet werden muss.
Also
eines der großen Vorteile unseres
Ein Terabyte pro Minute
habe ich gerade ausgerichtet.
Ja, um solche
Größenordnungen geht es.
Glücklicherweise bin ich nicht
für das Datenmanagement zuständig.
Das sind eine Million Terabyte in euren 15 Stunden.
Tausend Terabyte.
Das kann nicht sein.
Tausend Terabyte.
1.080 Terabyte.
Ja, das ist, wir haben da,
also Petabyte ist bei uns
Jede Woche.
Das ist nichts, also jetzt
Besonderes, also
unsere Daten, also die
Leute, die bei uns, ich bin glücklicherweise nicht
dafür zuständig, die Daten zu
speichern und zu halten,
aber
die, die das sind, haben damit tatsächlich,
also, ja, das tut
tatsächlich weh.
Und, ja gut, man versucht natürlich
dann immer, die Daten irgendwie einzudampfen, dass man
halt versucht,
doch nur die Daten zu speichern, wo
wirklich was Relevantes drauf ist.
Also von den
5.000 Bildern pro Sekunde.
Naja,
also
nicht auf allen Ecken
des Bildes sind immer interessante
Daten drauf. Vielleicht läuft dann irgendwie eine Reaktion,
die mal zwei Sekunden dauert oder nur eine zehntel Sekunde
mal flackert oder sowas und die muss man vielleicht haben.
Ja, also je nachdem.
Also was
viel gemacht wird, ist, wenn wir da
solche Proteine in den Strahl schießen,
dass man dann, ja,
also. Jetzt hast du wieder was gesagt,
Was macht ihr? Ihr stießt Proteine in den Strahl.
Genau, also zum Beispiel dieses berühmte Spike-Protein von Corona.
Also das Problem ist, wenn man mit einem Röntgenlaser da drauf schießt, dann ist das Protein kaputt.
Das bricht durch.
Das explodiert.
Das explodiert.
Ja, also das ist die Magie, dass wir so schnell sind, dass wir gewissermaßen ein Foto schießen.
Ihr habt irgendeine Trägersubstanzflüssigkeit,
in der schirmt das rum und das ist auf so einem Glas drauf
und das schießt dann der Laser rein, oder?
Nee, das wird tatsächlich ...
Ja, das ist in einer gelösten typischerweise in einer Lösung
und das wird dann in gewissermaßen ein feiner Strahl,
sozusagen wie ein Finkelstrahl,
der dann mit dem Laser beschossen wird.
Und da das sofort kaputt geht,
muss das die ganze Zeit nachgefüttert werden.
Deshalb wird das mit Hochdruck als ein sehr dünner Strahl durch ...
Da kommen die ganze Zeit Proteine, fließen da so durch.
Genau.
Das heißt, irgendwer pinkelt Proteine dann über diesen ...
Und da kommt der Laser, der ballert dann dazwischen.
Genau.
Und immer, wenn was passiert, wird fotografiert, 5000 Mal pro Sekunde.
Genau, also immer dann, wenn der Laser schießt.
Der Laser schießt bis zu 5000 Mal pro Sekunde.
Je nachdem, was man genau macht, kann das auch mal mehr oder weniger sein.
Und der ist dreieinhalb Kilometer lang.
Das heißt, es gibt so eine Riesenröhre irgendwo da und da schießt er durch.
Richtig, das ist eine Tunnelröhre,
die ist mit einer Tunnelbohrmaschine gebohrt worden,
die dann von,
also wir sind, das fängt
in Hamburg an und ist tatsächlich so lang,
dass wir dann, dass das Experiment selbst
dann nicht mehr in Hamburg stattfindet, weil
zu weit weg. Genau, dann sind wir
in Schleswig-Holstein.
Wie lange braucht der Strahl?
Ja, Lichtgeschwindigkeit, ne?
Ja, das ist wahrscheinlich ein Augenblick.
Ja, so Mikrosekunden, ja.
Aber ihr könnt es schneller wahrnehmen.
Ich habe gesagt, Phantosekunden könnt ihr auch.
Ja, das hat ja nichts miteinander zu tun. Tatsächlich ist es so, dass in unserer Tunnelröhre mehrere von diesen Röntgenblitzen hintereinander sich auf unsere Probe zubewegen, sogar ganz viele.
Tatsächlich kommt das, ist es nicht so, dass da 5000 so irgendwie so gleichmäßig über eine Sekunde kommen, sondern die kommen immer in Trains, nennen wir das, von 500 auf einmal an und das dann zehnmal die Sekunde und die 500, die kommen halt sehr schnell hintereinander an und dann kommt eine Pause und dann kommen die nächsten 500.
Und dabei kann man dann tatsächlich sehen, wie dann durch diesen Strahl, der muss ja dann auch relativ schnell mit Druck dadurch die ganzen Proteine zerstäuben oder explodieren.
Die bleiben in dem Wasserstrahl einfach gelöst und jetzt ist es natürlich so, dass, das ist mehr oder weniger Zufall, ob man jetzt mit dem Röntgenlaser tatsächlich eins dieser Proteine trifft oder nicht.
Und wenn man eins trifft, dann hat man halt ein Signal und wenn man gerade keins trifft, dann hat man kein Signal.
Und idealerweise schmeißt man dann natürlich die Bilder, wo kein Signal ist, einfach weg. Wobei ich jetzt ganz ehrlich gesagt nicht in der Gruppe bin, die dafür das Wegschmeißen zuständig ist. Wie gut die da jetzt schon sind, weiß ich tatsächlich nicht.
Muss man auch erst mal rausfinden, oder, dass da ein Signal ist.
Ja, das ist eine Riesenmagie, die da passiert.
Und ja, wie gesagt, ich bin nicht in der Gruppe, die das macht.
Aber man kann so wirklich Molekülstrukturen tatsächlich sehen.
Also so, wie man sich das aus dem Chemieunterricht früher vorstellt.
Man sieht die, nein.
Also man sieht halt ein Streumuster dieses Moleküls.
Nun ja, also da sind dann so auf der Kamera so ein paar Punkte drauf und dann macht man damit ganz, ganz, ganz viel Rechenleistung, muss das Ganze zurückgerechnet werden.
Und da sind dann, also Clusterweise sind dann die Rechner, die dann, also gewissermaßen ist es so, dass das Molekül befindet sich halt in einer zufälligen Orientierung und deshalb muss man auch ganz oft drauf schießen, weil man es dann gewissermaßen einmal aus allen Richtungen betrachtet.
Man sieht aber gewissermaßen nur den Schatten des Moleküls, ja gewissermaßen, also am Ende sind das immer nur ein paar Punkte auf dem Detektor und aus denen muss man das sich dann wieder mit unglaublich viel Rechenaufwand zurückrechnen.
Dafür gibt es dann aber auch wieder ganze Arbeitsgruppen, also ganze Institute, die sich nur mit dieser Rückberechnung beschäftigen.
Weil man nur diese einzelnen partiellen Bilder aus verschiedenen Blinkwinkeln hat und die man dann quasi zu einem ganzen…
Genau. Und daraus kann man dann tatsächlich am Ende das ganze Molekül wieder rekonstruieren und weiß dann…
Kann man das irgendwie kalibrieren, dass man hinterher weiß, ob man das Richtige zurückgerechnet hat, dass man etwas nimmt, wo man die Struktur kennt?
Natürlich haben wir angefangen mit Molekülen, die wir schon kennen.
Und Mathematik lügt auch nicht.
Ja, oder es ist einfach schon mit anderen Methoden gemessen worden
und dann weiß man, was da geht.
Wobei ich mich persönlich weniger mit Molekülen beschäftige
als halt mit Magneten.
Und die haben das große Problem,
dass datentechnisch das sogar eher anstrengender ist,
weil wenn man da so einen Magneten reinhält,
den muss man nicht reinschießen, sondern der bleibt da einfach stehen.
Und das heißt, da ist dann auf jedem Bild was drauf.
Das sorgt dafür, dass wir dann noch viel mehr Daten haben.
Dafür ist das dann mit dem Rückrechnen nicht so schwer,
weil es da meistens um deutlich einfacher ist.
Denkst du, wenn du da mal Gedehnen reinhältst,
gibt es eine gewisse Abweichung dann immer in eine Ecke, oder?
Ja, also was man halt macht,
also mit Röntgenstrahlen kann man halt sehen,
ob der Magnet magnetisch ist, gerade.
Also eine Festplatte speichert man ja dadurch,
dass man auf einer klassischen Festplatte,
also keine Solid State, sondern auf einer klassischen,
dass man dort eine magnetische Schicht hat
und dann den Magneten entweder so rum oder so rum dreht.
Und was wir dann machen, ist,
dass wir schießen mit einem handelsüblichen Laser,
ja, also auch mit einem Hochintensitätslaser da drauf,
dann wird das heiß und dadurch wird der Magnet demagnetisiert.
Und danach schießt man einmal mit dem XL drauf
und guckt, ob er noch magnetisch ist.
Und dann kann man die Zeit zwischen den beiden ändern
und gucken dann, wie lange es denn dauert,
so einen Magneten zu demagnetisieren.
Und das ist dann halt die kürzeste Zeit,
mit der man grundsätzlich Daten auf einer Festplatte schreiben könnte.
Die Zeiten, die glücklicherweise so schnell sind,
das weiß man inzwischen, dass das für einen Computer
tatsächlich dann am Ende egal ist.
Es geht also tatsächlich nur noch darum,
das tatsächlich prinzipiell zu verstehen,
was da eigentlich passiert und nicht mehr
auszuschließen,
dass man da in irgendein physikalisches
Limit läuft mit einer Technologie, wo man jetzt
irgendwie wahnsinnig viel investiert.
Das ist eine Magnetechnologie, mit der man mit Laser
die Platten beschießt, um die
Sachen zu speichern?
Also
das Problem ist, dass das Einzige, was so schnell ist,
sind Laser. Und deshalb müssen
wir Laser nehmen. Also wie
eine Technologie dazu aussehen würde,
die Frage, braucht man da...
Aber das hört sich an, als wäre es deutlich schneller als SSD.
Ja, genau.
Also, wie gesagt, das ist
viel, viel schneller als alles.
Also, das Schalten eines solchen Magneten
geht prinzipiell
viel, viel schneller, als das jemals ein Computer
dort schreiben können.
Und weshalb wir da keine, es gibt
von der Geschwindigkeit, es gibt
keine theoretische Grenze. Keine physikalische Grenze,
die da irgendwie... Also, es gibt eine, aber die ist so
weit von gut und böse,
dass wir diese 100 Jahre nicht mehr erreichen werden.
Genau, vor allen Dingen nicht bis
SSDs übernehmen.
Das ist aber
nicht das Problem, oder?
Warum Festplatten langsam sind.
Das Problem ist, dass die richtige Stelle nicht da ist.
Ja, genau.
Dieses Problem, wie gesagt,
ist keins mehr. Das ist damals,
das ist ja auch schon wieder 30 Jahre her,
dass damals die meinten, in das
physikalische Limit zu laufen.
Das ist eine schöne Vorstellung.
Ja.
Vor 30 Jahren
hat man gedacht, jetzt können
Computer gar nicht mehr schneller werden. Das ist
jetzt leider vorbei.
Genau. Aber es hat sich dann leider doch
raus, zum Glück doch rausgestellt.
Ja.
Ich fand das aber ganz interessant. Ich glaube,
das interessiert vielleicht noch andere Menschen.
Wie funktioniert denn das jetzt überhaupt,
so ein Magnetspeicherband?
Wenn du sagst, da muss man Magneten
drehen, dann speichert man
irgendwas? Ja, also effektiv,
also so eine Magnetplatte,
wie sie in Festplatten
vor der Zeit von S&M genau
verbaut waren, es ist ja einfach
nur eine magnetische
Struktur, also
irgendein
Stoff, der grundsätzlich magnetisch ist und oben drüber
und den kann man halt
also
da kann man sich so winzige, kleine
Magnetchen
vorstellen, aus denen das draufsteht,
aus denen das besteht, aus denen
es natürlich ganz, ganz, ganz viele gibt,
nämlich für jedes Bits, das gespeichert werden soll,
eins und
ja, dadurch, dass man dann mit einem
Wenn eine Magnetspule drüber fährt, dreht man das entweder so,
dass der Nordpol nach oben steht oder der Südpol nach oben steht.
Und so speichert man Daten auf einer Magnetfestplatte?
So speichert man Daten auf einer Magnetfestplatte.
Und danach dann, und umgekehrt wird das ausgelesen,
dadurch, dass man dann halt misst,
ob denn jetzt gerade der Nordpol oder der Südpol oben ist.
Und genau, und wir wollten, also es gibt halt Grenzen,
wie schnell man das schreiben kann.
Aber wie gesagt, es gibt sie effektiv nicht,
Also es ging halt die Frage tatsächlich, wie weit kann ich denn so einen Magneten den Nordpol zum Südpol rumdrehen?
Also grundsätzlich, wie lange dauert das eigentlich, dass sich dieser Magnet dreht?
Dreht sich da wirklich was oder wird das umgepolt?
Ja gut, das kann man, das ist eine Definitionsfrage.
Was heißt denn dann Umpol?
Ja gut, es geht da immer um die Spins der Elektronen.
Also Elektronen haben gewissermaßen ein Oben- und ein Unten.
Und in Magneten ist es so, das ist, was ein Magnet ist. Ein Magnet ist so, dass die Spins, also dass die Elektronen, benachbarte Elektronen aneinander gekoppelt sind dahingehend, dass die, wenn das eine Elektronen nach oben zeigt, zeigt das andere gerne auch nach oben.
Und dann bilden die halt so eine Gang sozusagen und gruppenmäßig zeigen sich alle in eine Richtung. Und der Witz an einem Magneten ist, dass dann benachbarte Elektronen aneinander gekoppelt sind. Also alle Elektronen haben einen oben und einen unten, aber normalerweise sind sie nicht aneinander gekoppelt, das heißt in einem Stück Holz passiert da nicht viel.
Also kann man mit einem Magneten die Spins rumdrehen, das kann man machen, das bringt aber nicht viel.
Während man mit einem Magneten die Elektronen umdreht und danach das Magnetfeld wieder ausschaltet, dann bleiben die Elektronen halt in derselben Richtung stehen, wie sie vorher waren.
Das wäre auch gar nicht klar gewesen. Das bedeutet, dass es überhaupt Magnete gibt aus Metall. Das ist der gleiche Effekt, wie etwas darin zu speichern. Im Grunde ist das das, was man darin gespeichert hat.
sozusagen die Art,
ja, also, ja.
Ja. Ja.
Cool. Also, einem normalen
Magneten ist das, die
Information halt ein Bit.
Ja.
Ja.
Bei einer Festplatte sind halt dann ganz, ganz, ganz viele
nebeneinander und man muss dann aufpassen, dass die sich
nicht beeinflussen und so. Genau.
Sie sollen, das ist immer das Problem, die Elektronen
sollen sich ein bisschen gegenseitig beeinflussen, weil sie
ansonsten ihre Position nicht halten,
aber denen ist es aber auch nicht zu viel,
Aber das ist dann wieder sehr viel Wissenschaft.
Die Dichte, wie die ineinander hängen und so weiter.
Genau, da kann man unglaublich viel mit rumspielen.
Eine schöne Sache an der ganzen Geschichte ist übrigens,
dass das Material, was man da lange Zeit verwendet hat,
das war Eisenoxid, also Rost.
Eine Scheibe voll Rost und daraus bauten sich so viele Magneten,
dass man seine Sachen drauf speichern kann.
Finde ich sehr schön.
Heute nicht mehr, heute benutzt man Kobalt
und irgendwelche komplizierten Sachen,
aber für die meiste Zeit war es einfach Eisenoxid.
Ich kenne halt den, ja,
so diese Kose-Name für Festplatten
dieser älteren Bauart.
Ist ja auch, Leute nennen das rotierenden Rost.
Also das ist halt, ja.
Und es stimmt.
Trifft es, glaube ich, ganz gut.
Und Kassetten und so weiter
und Magnetbänder funktionieren ganz ähnlich,
nur halt nicht digital,
sondern mit einer analogen Magnetisierung.
Wer das noch kennt von früher,
oh, jetzt habe ich mich geoutet.
Jetzt wisst ihr alle, dass ich alt bin.
Kassetten, was könnte das sein?
Vor- und Zurückspulen, Durchreißen, Aneinanderkleben.
Genau.
Ja, sehr schick.
In einem Land vor unserer Zeit.
Habt ihr denn da schon immer Python verwendet?
Oder seit wann verwendet ihr Python?
Oder überall?
Oder gibt es auch noch andere Technologien,
die verwendet werden?
Ja, also es gibt auch immer noch
eine gewisse
ja, Menschen, die sich nicht davon
abbringen lassen, weiterhin C++
zu programmieren.
Sie sind nicht tot zu
kriegen. Nein, also tot wollen wir sie
auch gar nicht haben, aber
überzeugt
haben wir es auch noch nicht geschafft.
Ich habe es noch nicht geschafft, sich vor den Laser zu stoßen.
Genau, und
ja,
tatsächlich ist es so, dass in der Physik
jahrzehntelang war
C++ tatsächlich einfach die Sprache schlechthin.
Es wurde einfach alles in C++ geschrieben.
Stimmt gar nicht, außer das, was in Fortran geschrieben wurde.
Das ist dann halt wieder eine Generation weiter vorher.
Und ja, es gibt sie auch noch, die Fortran-Leute.
Die sind glücklicherweise inzwischen sehr wenige geworden.
Aber es gibt sie immer noch.
Aber ja, inzwischen ist das so.
Ja, C++ ist jetzt halt doch nicht mehr die modernste Sprache.
Und jetzt die neue Welle, da ist Python einfach ...
Gibt es auch Rust?
Aber er hat auch noch
Vortragsbauteile. Genau, natürlich, ja.
Ja, selbstverständlich, also das ist
ja klar, das ist...
Gar nicht so weit von uns entfernt.
Ich erinnere mich nur gerade an
ein Zitat, ich weiß gar nicht, wer das
ursprünglich gesagt hat, aber ein sehr wissenschaftlicher Fortschritt ist
immer so, one funeral at a time.
So irgendwie.
Ja.
Ja, natürlich.
Also das ist tatsächlich,
also in der Welt der Physik war,
nicht nur da, in vielen anderen Bereichen auch,
War der Witz an Python eigentlich, dass man damit halt unglaublich viele verschiedene Bibliotheken, auch aus Steinzeit, aus Vortrag und Steinzeit oder was weiß ich wo, zusammenkleben kann.
Und dass das am Ende irgendwie trotzdem alles dann zusammenläuft.
Und das ist zum größten Teil das, was, also das war halt das Killer-Feature, dass man die ganzen alten Vortrag-Bibliotheken tatsächlich bis heute weiterverwenden kann.
Python als Glue.
Absolut.
Ja, und ich glaube auch, ich weiß gar nicht, wie
einer der großen Vorteile
bei Fortran ist halt, dass man, also weshalb
das glaube ich jedenfalls, was ich weiß, für
numerische Geschichten oft verwendet wird, ist, dass halt
da die Sprache so ist, dass die Compiler
automatisch vektorisieren können, was ja bei C und
C++ eigentlich nicht geht. Also geht auch, aber
man muss dann halt selber quasi
sagen, was er tun soll.
Ja, beziehungsweise du kannst so
Datentypen definieren, die Vektoren
sind. Und diese ganzen Operationen gehen dann
automatisch. Und wenn du eben einen 16-breiten
Vektor hast, dann
hat der Compiler genügend
Informationen, um da schlaue Sachen
draus zu machen. Gerade jetzt
heutzutage, wo es ja Prozessoren
gibt, die ganz viele Operationen auf 8 oder
auf 16 Sachen gleichzeitig machen können
und das kriegst du dann halt einfach so umsonst,
weil du dein Programm so geschrieben hast, dass
du immer direkt 16 Sachen gleichzeitig
machst und dann kompilierst
es und es wird dann halt automatisch schneller
und das ist schon verlockend,
das kann ich schon verstehen.
Da ist
eine schöne Abstraktionsebene
gefunden, glaube ich,
dass man eben nicht wie bei C++
oder bei C jeden Maschinenbefehl
selber schreiben muss und gleichzeitig hast du
trotzdem noch
genügend tiefe
Abstraktionen,
um
schnelle
Programme schreiben zu können.
Das eigentliche Problem an Fortran ist,
glaube ich, eher, dass einfach die Sprache
schon alt ist und dass die ganzen
Diese Sachen, die man heute als Komfort für sich so kennt und auch nicht vermissen möchte, die gibt es da halt einfach nicht mehr.
Ja, so Altphilologen in der Computersprache, selten, dass Leute so ein Interesse daran haben, ein forensisches, erstmal die alten Sprachen nochmal alle nachzulernen, statt was Neues, Modernes anzufangen.
Das macht man da eher nicht. Wobei, also den Markt gibt es ja durchaus noch und auch wieder.
Kobol-Entwickler.
Ich weiß von einigen Firmen, die wieder Kobol-Programmierer ausbilden, weil sie es halt noch brauchen.
Und genauso gibt es wissenschaftliche Einrichtungen, die Fortrat-Programmierer ausbilden, weil sie es halt noch benutzen, weil sie es noch brauchen.
Möchte man das denn entwickeln?
Ja genau, ich dachte mir gerade, dass Leute da ausbilden wollen, verstehe ich.
Dass Leute sich da ausbilden lassen, das ist schwerer zu verstehen für mich.
Ja gut, das ist ja auch eine ökonomische Abwägung.
Naja gut, aber die ist auch nicht gerade.
Vortragsvorlesungen in der Universität
gehört. Das war schon
interessant auch. Einfach auch mal aus
historischer Sicht. Man kann ja auch
durchaus viel davon lernen. Nur
jeden Tag machen möchte ich es nicht.
Man muss auch dazu eindeutig sagen, dass
tatsächlich das eigentliche Rechnen in Python
wegen des Gil
funktioniert halt nicht.
Wenn es wirklich darum geht, möglichst viele
Multiplikationen und Additionen auf dem
Prozessor zu jagen, da braucht man mit
Python gar nicht anzufangen.
Sondern da muss man dann wirklich halt über NumPy zum Beispiel dann, das kann das dann ja.
Und da kommt dann auch wieder, gut okay, da kommt dann auch, tatsächlich ist da nicht so viel Fortran drunter, wie man sich das denkt, weil gerade die großen alten Fortran-Bibliotheken tatsächlich mehrfach nachimplementiert wurden.
Also es gibt da ja die großen, also die wichtigste sind immer noch die BLAS, die Basic Linear Algebra Subroutines, die halt sowas wie Matrix-Multiplikationen enthalten, die halt von den Prozessorenherstellern oder sehr enthusiastischen Hobbyisten handoptimiert wurden, teilweise bis in die Assembler-Ebene runter, um möglichst schnell auf einem Prozessor sowas wie Matrix-Multiplikationen machen zu können.
Und das ist tatsächlich, also das ist noch eine Fortran-API, aber unten drunter ist tatsächlich irgendwas Handoptimiertes, weshalb das eigentlich mehr so Schein als Sein ist, dass das noch Fortran sei.
Aber das ist halt so eine bewährte API und so eine bewährte API, die wirft man auch nicht weg, vor allem, weil die API ist ja auch nicht das, was weh tut.
Und das Programmieren, das tut natürlich dann erst recht weh, weil wenn man dann tatsächlich auf Assembler runtergeht und das machen die, dann das tut natürlich weh. Oder natürlich heutzutage auch auf Grafikkarten ist das ja auch dann sehr beliebt und das ist dann halt sehr schön, dass es dann halt so standardisierte Bibliotheks-APs gibt, bei denen es dann eigentlich völlig egal ist, auf was das dann am Ende läuft.
Ja, das war interessant, weil man denkt halt manchmal, dann peisen wir langsam, aber wenn man dann sowas wie NumPy benutzt, hat man ja quasi die Python-API, die man dann ansprechen kann, in der man entwickelt und da unten drunter sind dann ja viel mehr...
Genau, und das ist halt wieder die Sache mit dem Python als Glue.
Wobei ich sagen muss, dass was jetzt tatsächlich ein eher größeres Problem bei uns ist, da zerbrechen sich auch gerade viel schlaue Leute die Köpfe drüber, das ist nämlich zuverlässige Datenauswertung.
Das Problem ist das, was ich erzählt habe, von wie wir unsere Experimentsteuerung machen, dass man da schnell mal was runterhackt, das ist ja ganz schön.
für sowas. Aber das Problem ist, am Ende wollen die Daten
ja auch ausgewertet werden. Und tatsächlich,
also was wir sehr viel mit Jupyter Notebooks
machen,
die haben aber immer das
Problem, dass man sich fünf Minuten, nachdem man die
Aussetzung gemacht hat, nicht mehr daran erinnern kann,
was man eigentlich gemacht hat. Und
welches denn der Jupyter Notebook-Zellen man
denn jetzt nur ausgeführt hat und welche nicht. Und an welche
man schnell noch einen Parameter gedreht hat und welche nicht.
Wer länger mit Jupyter Notebooks
gearbeitet hat, kennt das wahrscheinlich sehr gut.
Hin und her. Ja, und was
natürlich der Reproduzierbarkeit, also
reproduzierbar sind unsere Daten in dem Sinne ja
sowieso nicht, weil wir sind der einzige Röntgenlaser,
der diese Intensitäten
schafft. Das heißt, wir
können die nur bei uns reproduzieren, aber
wenn man wenigstens mal die Auswertung der
tatsächlich vorhandenen Daten reproduzierbar
machen könnte, wäre das ja schon mal schön.
Ja, weil sonst muss man auch erstmal wieder warten, bis man so einen
Slot gebucht hat, wo dann das Dreierteam dann reingeht und mit der
ganzen Preparation das nochmal macht. Genau, ja,
aber gut, aber dann auch
die Auswertung, also es wäre zum Beispiel
auch mal eine gute Idee, dass man, wenn man zum Beispiel
die zwei verschiedene vergleichbare Materialien sich anguckt,
dass man mal vergleicht, wie ich das eine auswerte
und was ich das andere auswerte.
Und wenn man dann zwischendurch das typische Notebook
wieder mal vergessen hat, was man da eigentlich gemacht hat,
dann ist das sehr unpraktisch.
Und das ist tatsächlich bei uns aktuell,
also was heißt aktuell, das ist schon seit Längerem ein Problem,
wie man das in Hand habt,
dass man da reproduzierbar Daten auswertet.
Tatsächlich ist es sogar so, dass schon das Problem,
dass wir, naja, also wir werten da Daten aus
und nach einem halben Jahr kommt einer an
und hat nochmal eine Idee,
wie man da vielleicht nochmal
mit einem anderen Blickwinkel drauf guckt.
Und dann sollte es einem besser nicht passieren,
dass man versehentlich NumPy upgedatet hat
und plötzlich funktionieren die Skripte nicht mehr.
Oder kommen zu einem anderen Ergebnis.
Das ist dann tatsächlich ein Problem,
weshalb wir tatsächlich angefangen haben,
einfach komplette Virtual-Envs nehmen wir jetzt gerade noch.
Wir haben darüber nachgedacht,
jetzt ein Conda zu nehmen
und dann die kompletten Virtual-Envs mit den Daten zusammenzuspeichern.
So ein Virtual-Env ist dann verglichen mit den Daten einfach winzig,
damit man, wenn man ein Jahr später nochmal versucht,
die gleiche Auswertung zu machen,
dann tatsächlich zum gleichen Ergebnis kommt.
Ja, aber das stelle ich mir auch,
weil die ganzen Betriebssystem-Bibliotheken
hat man im Virtual-Env ja nicht drin,
also LibC oder auch diverse andere Geschichten.
Das heißt, wenn die sich geupdatet haben, dann kann...
Das ist richtig.
Das heißt, dann müsste man dann konsequenterweise
weiter zu Docker-Containern gehen oder ähnlichen Technologien.
Ja, wenn Ansible irgendwas bauen.
Ja, Ansible hilft ja nicht,
weil Ansible würde dann ja dasselbe Problem haben
mit den Systembibliotheken,
dass man das, Ansible installiert ja auch typischerweise
nur auf ein existierendes System drauf.
Ja, aber du kannst ja sagen,
was du da jetzt extern installieren sollst.
Und wenn du das Betriebssystem selber auswählen kannst,
dann kannst du wahrscheinlich auch die Pakete pinnen.
Ja, das ist richtig, ja.
Und genau, aber ich muss ganz ehrlich gestanden sagen,
daran arbeiten wir noch. Also bisher
sind wir ganz stolz darauf. Da sind wir, glaube ich,
schon fast Vorreiter.
Nein, wahrscheinlich nicht. Aber dass wir
wenigstens unsere Daten mit den Virtual Env's
speichern, dass wir wenigstens
da eine verlässliche Datenauswertung haben,
dass wir, also in der Physik war es
bisher doch recht häufig
üblich, dass man
die Daten auswertet und
dann, wenn man eine Publikation macht,
die Auswertung auf eine CD
brennt und dann mit ins
Archiv gibt.
Ich weiß nicht, wie oft jemand tatsächlich so eine CD wieder rausgeholt hat.
Und wenn, ob die dann noch funktioniert, ist auch sehr unklar.
Das war dann doch eine eher symbolische Aktion.
Und das bei den Physikern.
Ja, also da.
Ja gut, das ist ja noch vergleichsweise fortgeschritten.
In der Medizin wirst du halt die Auswertung gemacht und dann sind die Daten fertig.
Oder du drückst sie aus.
Ja, wobei ich glaube, dass die Medizin da sogar im Gegenteil mit solchen Sachen sogar weiter ist.
Weil sie, weil, ja, also gerade wenn in irgendwelche Zulassungsverfahren gehen, da gucken die Leute tatsächlich drauf.
Ja, Zulassungsverfahren, klar.
Aber Forschungspapers normalerweise, also wenn du eine Appendix hast, kannst du, wie der Dominik sagt, kannst du ja abtippen, wenn du die Rohdaten überhaupt kriegst.
Ja, also bei uns ist die Rohdaten zu kriegen illusorisch, weil sie sind einfach zu groß.
Wie lange speichert ihr denn eure Daten?
Wie lange könnte man denn zu euch kommen und sagen,
hier, ich habe mir jetzt noch was eingefallen?
Das ist eine Frage, die ich dir tatsächlich noch nicht beantworten kann,
weil noch sind die Platten nicht voll.
Ah, okay.
Irgendwann ist das Ziel erreicht.
Der Serverraum steht gar nicht bei uns,
sondern irgendwo in Hamburg ist da so ein Serverraum.
Den habe ich noch nie gesehen.
Weiß ich nicht, wie groß der ist.
Ich weiß nicht, wie viel Platz da ist, wie viel Platz wir grundsätzlich noch finanzieren können. Also bisher mussten wir noch, das muss man sagen, es gibt so Wochen, wo wir so viele Daten produzieren. Wenn wir mit unserem Hauptdetektor arbeiten, dann ist das so, dann kommt da so viel Daten raus.
Wenn wir nicht mit unserem Hauptdetektor arbeiten, es gibt auch völlig andere Experimente, wo man alle zehn Sekunden ein Bild schießt von zwei Megapixel und dann, ja.
Das ist ja fast redundant dann im Vergleich.
Genau, das ist dann, wenn du plötzlich beginnst, dass tatsächlich dann Virtual Env das Größte auf der Platte ist. Aber das ist dann auch egal, weil im Vergleich, also dann hat man halt …
Das spielt keine Rolle.
Genau, das geht dann unter. Das ist dann auch immer sehr schön. Also da muss man sagen, wenn man da mit unserem Hauptdetektor mit den 5000 Bildern pro Sekunde arbeitet, dann muss man halt wirklich, da hängt halt wirklich auch Rechenpower hinten dran.
das dann also ausrechnet und dann gibt es dann
haben wir auch ganze Stäbe von Leuten, die nur
dafür zuständig sind, das am Laufen zu halten, dass dann die
ganzen Prozessketten da hinten dann das nur machen.
Während wenn wir dann mit nur
alle 10 Sekunden ein Bild nehmen, ist das viel schöner, weil
dann kann man das tatsächlich
auch alles mit ein paar Python-Skripten machen
und dann ist man auch deutlich
flexibler darin,
irgendwas Schönes zu machen.
In welchem,
das kommt mir jetzt gerade so in den Sinn,
in welchem Format werden die Daten denn dann
abgespeichert? Wird das
einfach, also es gibt ja diese diverse Formate
für wissenschaftliche Zwecke, also
NetCDF oder wie heißt das?
Ja, also unseres ist
HD5.
Oder SQLite, habe ich jetzt gerade gedacht.
Könnte man ja auch nehmen. HD5
nehmen wir.
Wobei,
da muss man eine ganze Menge
daran herum entwickeln, dass wir
überhaupt
schnell genug schreiben können. Tatsächlich
ist das so, dass wir in
mehrere HD5-Dateien
in parallel reinschreiben, weil ansonsten
die HD5-Bibliothek
doch an ihre Grenzen käme.
Ich
finde sowas super spannend, weil
in diesen Bereichen trifft man dann
auf so Probleme, die man sich so
als normaler Entwickler gar nicht
vorstellen kann. Schon
allein die Bandbreite zu haben,
die Daten aus diesem Sensor auslesen
zu können, das muss ja
gigantisch sein und das geht ja weit
über das hinaus, was man so als normaler Mensch in einem
Computer je sehen kann
und wenn man sich
überlegt, wie viel Bandbreite da an
Speicherplatz einfach rauskommen muss,
da zerbrechen viele von den
Abstraktionen, die man normalerweise so hat.
Ja, bei uns kommen tatsächlich die Glasfaser da
bündelweise aus den Detektoren raus
und
das ist, ja, da hängt
richtig Rechenpower dahinter.
Ja klar, und das muss dann in irgendwelche Speicherbänke
reingehen und von den Speicherbänken muss es
irgendwo auf, ja,
Speicher gehen, aber ein Kabel
reicht an keiner Stelle. Das heißt, das muss sicherlich
alles parallel sein.
Ja, genau.
Stapelweise an Rechnern
stehen dann da übereinander, die das dann
verteilen.
Die es alle gleichzeitig abkriegen.
Ja, das ist
tatsächlich
das ist immer sehr lustig,
ich habe das nicht, also
das ist immer so lustig, dass
wenn wir anfangen Daten zu nehmen, dann dauert
dass mehrere Sekunden, bis alle
TCP-Verbindungen aufgebaut sind, um
dann die Daten zu
einfach nur das Aufbauen der
Verbindungen dauert mehrere Sekunden.
Das ist ja schon.
Ja, das hält man sich tatsächlich
recht wichtig vor, wenn dann irgendwie die Sachen
durcheinanderfliegen, so eine Riesenmenge,
wie man den auffangen will.
Also das ist auf jeden Fall, glaube ich, eher Big Data
dann tatsächlich irgendwo, so ein bisschen.
Ja, wobei es auf der einen Seite natürlich
schon, dass es natürlich Big Data ist, also von der
rein schieren Größe her.
Auf der anderen Seite, also was man normalerweise
unter Big Data sind, sind halt deutlich strukturierter
als das, was wir da haben.
Wir haben da ja einfach nur Bilddaten.
Okay, also
augmentiert ihr die direkt oder sowas?
Oder gibt es ein Post-Processing,
dass da viele Informationen mal reinfließen?
Oder ist das einfach nur dann pro Experiment
irgendwie so ein
Metainformationsding?
Also wir müssen tatsächlich
während des Experiments darauf reagieren können,
Und das heißt, während des Experimentes werden bereits alle Daten rudimentär ausgewertet, damit wir eine Idee kriegen, ob die Daten überhaupt gut sind. Wir können es uns nicht leisten, dort mehrere Stunden lang irgendwas zu messen und am Ende festzustellen, dass wir leider vergessen haben, die Probe in den Strahl zu fahren oder so etwas.
Ja, sowas passiert halt auch regelmäßig.
Ja, oder auch, dass man dann halt feststellt,
okay, wir haben mit viel zu viel Intensität gemessen,
also der ist völlig ausgeleuchtet, der Detektor,
man sieht gar nichts mehr oder es war jetzt alles viel zu dunkel
oder was weiß ich was, das kann ja alles gleichzeitig passieren.
Und deshalb muss die ganze Zeit auch,
währenddessen werden die Daten rudimentär ausgewertet,
dass man sofort sehen kann, was da passiert.
Wobei wir das, ja, das Ganze wird dann auch visualisiert,
wobei wir das meiner Meinung nach noch sehr steinzeitlich machen.
Das machen wir, da verwenden wir tatsächlich PyQT.
Eine Version, das Nummer, weißt du die?
PyQT 5, also schon das Neueste.
Und na ja, also wenn man mich heute fragen würde,
würde ich ja natürlich sagen, das macht man doch viel besser mit
Visualisierung, doch besser in einer Web-Anwendung
und nicht so mit einer
mit einem Standalone
Desktop-Ding. Genau,
aber ja, die Entscheidung ist
damals dafür gefallen und
das
läuft jetzt so.
Und das ist ja auch Python, also so ist es jetzt nicht.
Ja, und ihr habt auch keine Lizenzprobleme,
weil ihr eine öffentliche Institution seid wahrscheinlich?
Nee, ist das ja nicht.
Wir sind eine öffentliche Institution, aber
Aber PyCode ist doch LGPL.
Genau. Sogar als es
GPL war, da wir grundsätzlich alles
sagen wir so,
wir würden, also eigentlich sollte alles
quelloffen sein.
Ja, wir halten
uns da dran, dass jeder,
in der GPL steht ja drin, dass jedem, dem
man den Binärcode gibt, dann auch den Quellcode geben muss.
Das tun wir auch. Bisher ist es allerdings so,
dass bisher noch keiner vorbeigekommen ist.
Nur die Binärfreunde.
Ja, und ich glaube, der Grund, dass wir es noch nicht veröffentlicht haben, ist, dass wir, ja, noch nicht, vielleicht haben wir es inzwischen sogar schon veröffentlicht, dass wir das Ganze auch noch so machen wollten, dass das schön aussieht, damit es uns nicht zu peinlich ist.
Ja, gerade in der Anfangszeit ist doch alles sehr schnell gestrickt worden, was ja das Schöne ist, dass es mit Python geht, dass man mit Python auch mit schön gestricktem Code, also mit schnell gestricktem Code am Ende doch noch sehr schöne Sachen rauskriegt, ja.
Es ist total witzig. Ich war vor ein paar Jahren auch in so einem Big Data Projekt drin, kommerzieller Natur, nicht ganz so groß wie eures. Und da gibt es auch eine Visualisierungsoberfläche, die auch in PyQt geschrieben ist. Und auch da wird über eine Weblösung nachgedacht und man ist aber noch nicht so weit. Also es ist schön zu hören, dass die Probleme doch überall die gleichen sind.
Ja, also grundsätzlich finde ich ja, PyQt 5 ist tatsächlich eigentlich grundsätzlich eine sehr schöne Bibliothek, wenn man so eine Desktop-Anwendung machen will, aber wenn man ehrlich ist, sind solche Desktop-Anwendungen eigentlich heutzutage so ein bisschen eigentlich nicht mehr.
Ja, man hat das ja früher gemacht, weil es halt nicht anders ging, weil du halt irgendwelche Grafiken anzeigen musstest und dann irgendwelche interaktiven Sachen machen musstest mit diesen Grafiken und dann, ja, normal vor fünf bis zehn Jahren war das im Web noch nicht so einfach, aber heutzutage ist es ja kein Problem mehr.
Genau, also wir haben angefangen damals mit der Programmierung, also 2009, damals tatsächlich noch Python 2. Wir haben dann glücklicherweise den Umstieg schnell genug geschafft.
Ja, aber genau, damit habt ihr schon immer die Motoren und so gescheitert, weil dann hattet ihr das Problem, dass ihr da quasi ja nicht blockieren konntet, während ein Motor sich verstellt hat, schon länger und iSync.io gibt es ja jetzt erst seit 2015, 14, 15, irgendwann ging das los, ne?
Ja, also vorher hatten wir, waren wir einfach noch nicht so weit, dass wir, also in Betrieb gegangen sind wir 2017. Und vorher waren das, hatten wir ja ein paar Demonstrationsdinger noch nur da rumstehen. Wir haben es halt lange gedauert, die tausend Motoren da überhaupt einzubauen. Und erst wenn du dann genügend von denen eingebaut hast, stellst du dir dann halt die Frage, dass man die auch tatsächlich parallel fährt.
dann haben wir glücklicherweise noch im richtigen
Moment die Kurve gekriegt
und das Ganze nochmal, also
dann kam glücklicherweise im richtigen Moment auch
Asien-Korea vorbei und dann konnte man
das alles gleichzeitig. Bei den tausend Modulen
muss ich immer an das von Johannes
veröffentlichte Ding da zum Raumschiff fliegen denken.
Du hast doch mal, das ist so ein
Blockantrag. Welche Raumschiffe fliege ich? Ja, das ist irgendwie so
ein Blockantrag, ich weiß nicht, mit der Steuerung, die man da machen kann.
Ich weiß nicht, ich denke schon die ganze Zeit drüber nach,
wie man das wohl in der Home-Automatisierung
verwenden könnte,
wo man seine tausend Motoren in der Küche platziert,
die dann, keine Ahnung, die Gewürze dosieren
oder die... Aber wie ist das denn?
Wobei wir
dann, das muss man auch der Ehrlichkeit
halber noch dazu gestehen, noch
einmal eine Ebene unten drunter haben, das ist
dann eine
kommerzielle Lösung tatsächlich von
einer Firma namens Beckhoff, die dann
die Motoren, die eigentliche
Motorensteuerung macht.
Das, was wir in Python bisher nicht
machen, ist die Echtzeitsachen.
Dafür ist, glaube ich,
Python auch einfach nicht gut genug.
Also nicht die geeignete
Sprache, weil, also
wenn man, wenn der Motor
dann tatsächlich, also
da muss man dann irgendwann am Ende unten dann mit
also mindestens mal 100 Hertz dann den
Motor abfragen, wo bist du denn jetzt? Und dann
ihn dann dementsprechend schneller oder langsamer machen.
Und das
geht mit Python
eher nicht.
Also ein Realtime-Python
Das ist auch häufig so, glaube ich, dass man dann noch so eine Schicht hat, wo man einfach sagt, ich möchte, dass der Motor zum Zeitpunkt X an der Stelle Y ist und das dann einfach wegschiebt und sagt, sorg mal dafür.
Ja, dafür haben wir uns eine kommerzielle Lösung gekauft, aber ich muss sagen, dass die kommerzielle Lösung genau das Problem hat, dass kommerzielle Lösungen immer haben, dass wir da dann, wenn man da an eine Grenze kommt, dann ist die Grenze auch hart.
Dann läuft man mit dem Kopf gegen die Wand.
Oder man muss viel Geld ausgeben.
Richtig.
Also jetzt ist es tatsächlich so,
dass wenn man für anderthalb Milliarden
so einen Tunnel gegraben hat,
dann kann man auch mal tatsächlich
ein bisschen Geld in die Hand nehmen.
Aber das ist nicht so.
Du musst auch irgendwo ein Ende haben.
Ja, genau.
Und für ganz Kleinigkeiten will man dann auch nicht mehr.
Und solche kommerziellen Lösungen scheitern doch am Ende sehr.
an der Flexibilität. Muss auch
sagen, dass die,
die, als wir
auf die Idee gekommen sind, dem
Hersteller Beckhoff zu erzählen, dass wir
unsere Projekte in einer Versionskontrolle
halten, da
haben die schon ganz schön
geschluckt. Und
als es dann hieß, wir finden aber nicht
Subversion, sondern Git,
da haben die richtig
Angst bekommen.
Das ist tatsächlich
in der Welt der Automatisierung
Sind das alles noch Träumereien? So was macht man nicht. Da werden noch irgendwelche Projekte von Projektleitern geleitet und dann Anträge geschrieben und dann irgendwie die Versionen einzeln auf irgendwelche festen Datenträger transferiert und dann an den Kunden ausgeliefert.
Und warum ist das, warum kriegen die Angst? Also, weil das, ja, also man kriegt da halt so eine komplette, es geht viel zu schnell, viel zu schnell, die liefern einem halt eine komplette IDE und die IDE, die speichert halt die Sachen in ihrem eigenen Format, also ich weiß nicht, also das ist am Ende ist das auch nur, also die Sprache, die die haben, ist eine Pascal-ähnliche Sprache, die international genormt ist und dafür tatsächlich auch gar nicht so doof ist.
Also es ist sehr interessant, diese Welt sich mal anzugucken, zum Beispiel also die Welt von Steuerung, Software, von...
nennt sich das, Speicherprogrammierer bei Steuerung
nennt sich das auf Deutsch.
Da gibt es eine Programmiersprache, die so ganz
andere grundsätzliche Eigenschaften haben,
die zum Beispiel keine
dynamische Speicherverwaltung kennen
und das absichtlich nicht,
weil wenn man eine Maschine hat, dann
braucht man nicht plötzlich mehr Speicher.
Und bei denen
wird, das ist eine Sprache, die von vorne
Man will das auch gar nicht, weil
das könnte ja abstürzen.
Das ist ganz schlecht.
Und
das sind dann konzeptuell
andere Sprachen, die aber auch für den
Anwendungsfall tatsächlich sehr gut sind, muss ich
sagen. Und das Einzige
ist, dass die dann irgendwie dann in
IDEs reingepackt werden
und das sieht dann sehr
Pascal-ähnlich aus und warum man dann
diesen Pascal-Code dann
am Ende in XML-Dateien
reinstecken muss, habe ich
nicht verstanden.
Weil man mit XML alles macht.
Weil man mit XML einfach alles
machen kann.
Deshalb und
dann dieses XML dann wiederum
in eine Versionskontrolle
wie Git reinzutun, ist dann
ja, also irgendwie
fühlt sich das
nicht gut an.
Also insbesondere, wenn man
dann mergen will und dann, ja,
was passiert denn, wenn
in dem XML rundherum
sich was geändert hat und will das dann mergen?
Das ist ja,
ja.
Da gibt es dann noch solche Sachen wie, dass dann die, also man kompiliert dann seinen Code und man hat dann ja immer den Computer, der vor einem steht und dann als zweites diese speicherprogrammierbare Steuerung, die dann möglicherweise, die dann halt an der Maschine verbaut ist.
Und jetzt ist es so, dass also die gesamten Debug-Informationen, die schreibt man natürlich nicht mit auf die Maschine drauf. Am Ende kommt noch der Kunde vorbei und dekompiliert den Code. Das heißt, die Debug-Informationen des Codes sind nicht mit dem Code zusammen, sondern auf deiner Maschine, auf deiner eigenen.
So, und wenn du dann nach drei Jahren wieder kommst und der Kunde sagt, an der Maschine, kannst du mal gucken, was da los ist, dann musst du dann deinen eigenen DBA-Code bei dir wiederfinden.
Ja, wie löst man das? Ja, das ist ganz einfach, man speichert, also man kompiliert das und checkt dann das Binary mit in Subversion ein.
Ja, das sind alles Sachen, da dreht sich einem als Python-Programmierer der Magen um. Aber naja, dafür läuft es da dann halt. Ja, die haben halt auch Zuverlässigkeitsanforderungen.
Ja, aber wäre da nicht, also weil das höre ich auch immer aus dem Musikbereich oder so, wo es auf Echtzeit ankommt, die verwenden da oft jetzt also CircuitPython oder MicroPython oder sowas. Wäre das nicht eine Idee, das mit sowas zu machen?
also ich wäre
dafür. Da bewegt
sich, glaube ich, einiges. Ja, definitiv.
In den letzten Jahren.
Wobei ich da eigentlich
ganz, also
ich habe das tatsächlich mal probiert,
also glücklicherweise,
also
das ist tatsächlich so gebaut, dass
die ganzen Motoren hängen dann
an,
wie nennt man das, Klemmen dran, also
an Motorklemmen, auf Englisch
Terminals, vielleicht hilft das besser.
die dann halt miteinander per Ethernet miteinander verbunden sind. Und tatsächlich mit Ethernet, da läuft kein IP drüber, sondern direkt über Ethernet. Und das ist dann in einer Echtzeit-Version namens EtherCAT.
Möglicherweise ist das Protokoll vollständig veröffentlicht und ich habe dann tatsächlich mal, das ist ja nicht so das Problem, dann sich mit Python diese Pakete, die man da über das Netzwerk schicken muss, dann halt zusammenzubauen und dann kann man das damit tatsächlich machen.
Ja und dann merkt man halt dann plötzlich, dass man halt nicht Reden, dass man nicht Echtzeit ist und da tut dann auf einmal Echtzeit tatsächlich weh.
Also es fängt dann bestimmt mit schon an, dass der Hersteller dann anfängt, solche Sachen zu machen, wie dass die Buffer, die in den Netzwerkkarten drin sind, abgeschaltet werden müssen, weil die die Latenz kaputt machen.
Ja, klar.
Weshalb die dann…
Das heißt, wahrscheinlich willst du dann auch gar kein Betriebssystem haben, sondern du willst direkt im Kernel sein oder so oder irgendeine…
Die Firma Beckhoff hat einen sehr engen Vertrag mit Microsoft, dass sie direkt am Kernel von Microsoft arbeiten können.
Oh, aber mit Linux könnte man das doch auch, da gibt es doch sogar irgendwie in Linux so eine Schnittstelle, wo man, ja es gibt ja auch so RT-Linux-Sachen.
Es gibt auch in Deutschland einen zweiten Hersteller, der tatsächlich das Ganze auf Linux macht, das geht alles, auch mit Realtime und allem drum und dran.
Ja, mein Unternehmen hat sich, also wir sind zwar eine staatliche Einrichtung, aber rein rechtlich sind wir ein Unternehmen im Staatseigentum und wir haben uns damals, also was heißt wir, hätte man mich gefragt, ich hätte es nicht genommen, aber man hat sich halt für eine Windows-Lösung entschieden, weil das ja professionell ist.
Achso, natürlich, du bist ein richtiger Anfänger.
Jetzt ist mir auch eingefallen, was der Johannes meinte, den Bit-Controller, den hätte ich gerne da für die Steuerung dieser Motoren. Geht das, Johannes?
Achso, ja, da hast du irgendwo einen Controller drin, der sowas macht, ja. Das geht da oft ganz tief runter.
In dem Bereich bewegt sich ganz viel, auch was so Industrie 3 und Industrie 4 angeht, weil man halt ganz viel mit Rechenleistung erschlagen kann.
Ich habe vor einigen Jahren bei einem kleinen deutschen Hardwarehersteller, bei einem mittelständischen Hardwarehersteller Beratung gemacht und die hatten noch ganz viele so Sachen, die halt aus einer Zeit kommen, wo du alles ausnutzen musstest, was so ein Prozessor halt mitgebracht hat.
Und heutzutage ist es ja mehr so, ja, hier hast du den Prozessor, der 180 Megahertz hat und vier Kerne und der kostet auch nur fünf Euro. Da ist es dann schon so ein bisschen egal. Da kannst du schon viele Sachen machen, die du früher halt einfach nicht machen konntest, einfach durch Rechenleistung erschlagen.
Und wenn du aber nur ein Megahertz hast und nur einen Prozessor und musst aber acht Motoren gleichzeitig steuern und die sollen auch gewisse Kurven einhalten, dann ist das halt anstrengender. Und deshalb ist ganz viel von dieser Hardware noch so ein bisschen anders aufgebaut, als man das vielleicht heutzutage machen würde.
Auch weil sich diese Welten sehr langsam bewegen, auch weil da sehr viel Geld drin ist. Diese Geräte, die ihr da gekauft habt, um eure tausend Motoren zu steuern, die werden sicherlich alle ein paar Euro gekostet haben.
Ja, definitiv. Interessanterweise ist es dann so, dass das bis heute so ist, dass diese ganzen kleinen Prozessörchen in gewisser Maßen emuliert werden. Also früher war es immer so, man hatte immer eine langsamere Steuerung, die solche Sachen machen, die nur an und aus gehen, also so ein Ventil auf, Ventil zu.
Man hat eine schnelle Steuerung gehabt, die Motoren halt mit, da muss halt schnell ein Feedback kommen, ob der Motor schon weit genug ist oder nicht. Und heute werden die dann tatsächlich getrennt von zwei Prozessen dann emuliert.
Das macht eigentlich heutzutage ja gar keinen Sinn mehr.
Dann läuft da einer auf dem einen Prozessorkern,
die langsamere Steuerung, die dann irgendwie so mit 100 Hertz arbeitet
und daneben noch eine zweite, die dann mit 10 Kilohertz arbeitet
und die dann über ganz magische Dinger sich miteinander unterhalten.
Und das wird dann sehr bald sehr hanebüchen.
Das ist alles halt nur noch historisch zu erklären.
Und ja, ich würde sowas gerne alles durch Python ersetzen,
aber so schnell bin ich nun auch wieder nicht,
da alleine die Industrie
kurz mal umzukrempeln.
Ja, nein.
Aber wir sind ja jetzt zu viert hier.
Also sind wir schon mal viermal schneller.
Ja, das ist gut.
Interessanterweise habe ich das dann mal ausprobiert,
dass tatsächlich so eine Steuerung
in Linux zu basteln
und stellte dann fest, dass tatsächlich
die beste dafür geeignete
Hardware ein Raspberry Pi war.
Und zwar deshalb, weil dessen
Netzwerkkarte...
Keine Buffer hat.
Genau.
Das war dann auch
sehr praktisch, weil so ein Ding ist einfach auch
bei weitem schnell genug
und auch zuverlässig
genug.
Ja, interessant auch, was man
da so alles achten muss, wenn man da so die Steuerung zusammen
stecken möchte.
Ja, ja, ja,
faszinierend. Ja, sehr, sehr interessant.
Sehr, sehr interessant.
Ja, ich weiß nicht,
vielleicht,
was ist denn, was findest du denn so
bei dieser ganzen Geschichte,
das mit Python zu steuern.
Was sind die Dinge, die dich da interessieren?
Oder was fandest du cool?
Oder was funktioniert mit Python noch nicht so gut?
Oder, ja, ich weiß nicht.
Also, was mich immer wieder begeistert,
ist, mit welcher Geschwindigkeit
man einfach so kleine, praktische Sachen machen kann.
Also, wie ich da erwähnt habe,
dass man da einfach ein Foto nimmt
und dann auf das Foto draufklickt
und dann fährt der Motor dorthin.
Das sind so Dinge,
Für die würde man halt nicht das als Auftrag stellen
und dass dann monatelang Entwickler dran sitzen.
Aber in Python waren das alles dann auch am Ende auch nur ein paar Zeilen.
Und also diese kleinen, schönen Dinge, die das Leben einfacher machen,
das ist tatsächlich das, was ich dafür, dafür mögen mich auch meine Kollegen,
dass denn die, also nicht unbedingt die so absolut notwendig sind,
sondern die einfach einem das Leben vereinfachen,
dass man einfach die Kapazität hat, das zu tun.
Weil man so schnell programmieren kann,
weil man so schnell Sachen raushauen kann,
dass man seine Kollegen glücklich machen kann.
Also, dass die auch keine Hemmungen haben,
mir zu fragen, hier, Martin, da muss man immer so blöd klicken
und das funktioniert nicht richtig.
Kannst du das nicht mal schön machen?
Und dann wird, ja, kein Problem, hack ich dir zusammen.
Und dann, ja, da muss man ein bisschen aufpassen,
dass man nicht zu sehr hackt und dass man am Ende
das dann am Ende auch noch irgendwie zu einem brauchbaren
Projekt macht und dass das dann nicht irgendwie so einem
Datengrab auf irgendeiner Festplatte landet.
Ja, ist schon richtig, aber
das ist halt das, was
das Schöne daran ist.
Und dass
das halt auch alles
ja, so sehr schnell geht.
Also was ich auch sehr schön finde,
ist das, was ich
gerne mag einfach. Gut, das
ist die Geschmackssache, dass
wir kommen, also wir haben halt unglaublich
viele irgendwelche experimentellen
Gerätschaften, dass wir dann, also
der Strahl, der da bei uns
in den Strahl reinpinkelt,
der wird halt von einer
Hochdruckpumpe gesteuert
und dann
kommt da plötzlich mein Kollege mit dieser Pumpe da an,
stellt sie vor dich hin und sagt, ja, das muss ja
heute Nachmittag laufen und
das ist dann
eigentlich gar nicht so das
Problem, weil man halt, also Batteries
included, halt immer gleich alles da hat
und halt unglaublich schnelle
Entwicklungszeiten, also
ein großes Problem ist, dass man, ja, da
kommt der User, kommt da mit so einem
Ding an, also der Benutzer, muss ich auf Deutsch
so sagen, kommt da mit irgendeinem
Ding an, das hat,
das, keine Ahnung, das
kostet 100.000 Euro,
da kann man, der kann mir nicht
Monate vorher das zum Ausprobieren
schicken, damit ich dafür was programmiere,
das geht nicht, sondern der kommt
drei Tage vorher an und sagt,
sorg mal dafür, dass diese Pumpe
da läuft und dass
da in den Strahl reinpinkelt
und dann
heißt es und los
und dann
ist es halt echt von Vorteil,
dass man da völlig, ja,
auch
das, was einer mal gemeint hat,
hab ich mal gehört,
Expressibility,
dass man in Python recht komplexe
Sachen
schön ausdrücken kann,
dass man, also
ja, wie sieht das, also
ja, natürlich
objektorientierte Programmierung, Klassen
gibt es überall,
das machen ja inzwischen alle, aber
dass man dann in der Klasse dann tatsächlich,
also wir haben dann eine Pumpe
und die kann dann an, aus und was weiß ich,
Druck und Volumen oder so etwas
und dann kann man da,
dann schreibt man halt rein, Klasse Pumpe,
Klaas Pumpe,
natürlich alles auf Englisch, weil
Das liegt ja in seiner Firma. Und dann schreibt man einfach direkt die Parameter rein, Druck an, aus und sonst etwas. Und das ist dann gleichzeitig aus Sicht des Benutzers, sind das dann die Buttons, auf die man draufklicken kann oder die Funktionalität, die man von dem verwenden kann.
Und gleichzeitig auf der anderen Seite steht dann bereits reingeschrieben, was man denn dem Gerät sagen muss, dass das auch so funktioniert. Wir haben uns dann ein ganzes Framework zusammengeschrieben, dass dann, wie heißt das bei euch Webleuten, Django Forms oder so, dass wir halt Forms, die halt keine Webseiten sind, sondern Beschreibungen für Geräte sind.
Und in die kann man halt dann die Parameter,
die so ein Gerät hat, einfach reinschreiben.
Und aus der Benutzerseite kann man da dann die Werte reinschreiben.
Und ja, unser Framework guckt sich dann halt an.
Und auf der anderen Seite schickt es dann die Kommandos an die Pumpe raus.
Und das kann man alles so in einem Framework machen
und einfach so hinschreiben.
Und ja, also wie das in einer anderen Programmiersprache aussehen würde,
weiß ich, da das ja
die Konkurrenz immer noch in C++
macht und da müssen
dann halt Kopfstände gemacht werden,
weil, also wie soll ich denn da deklarativ
da in C++ überhaupt
da was hinschreiben?
Da wird dann immer das
ausführbare Code dann hingeschrieben,
der dann magische
Datenstrukturen im Hintergrund
aufbaut,
die dann irgendwie aus...
Also, furchtbar.
Furchtbar. Man kann halt
in sowas wie C++ nichts
deklarativ hinschreiben, wo man einfach sagen kann,
das ist so.
Und das dann von einem
Framework auslesen lassen, sondern man kann halt
nur Code hinschreiben.
Und das ist halt
das, was
so ein Framework halt sehr mächtig
macht. Und mit
solchen Sachen kann ich dann halt innerhalb von
einem Nachmittag so eine blöde
Pumpe zum Laufen kriegen.
Wie lange wird der C++-Entwickler
dafür brauchen?
Ach, eine Woche wahrscheinlich.
Jetzt sind wir wieder bei einem der wichtigsten
Dinge, glaube ich, für Python auch, oder?
Das ist halt so dieses Time-To,
ich nenne es jetzt mal Market.
Genau. Also und das ist bei uns,
wie gesagt, wir haben Experimente im
Wochentakt, ist bei uns halt,
wir haben halt unglaublich viel Wegwerf-Code
einfach. Das ist dann das, was wir
Makros nennen, wobei das auch keine Makros,
also das ist jetzt nicht einfach Code,
der runtergeschrieben ist, sondern wirklich,
da haben wir dann genau so ein Framework,
wo man dann so Parameter
dann deklarieren kann und
am Ende dann Sachen ausgeführt werden
können. Und
das Schöne daran ist auch, dass wir es
geschafft haben, dass
also ich bin nun
angestellt tatsächlich als Programmierer,
aber dass auch unsere Wissenschaftler tatsächlich bereits
in der Lage sind,
sich dann so einfache Sachen selber zusammenzuschreiben.
Das ist
mit Python, ja gut,
was auch daran liegt, dass in der Physik doch Python
inzwischen sehr weit verbreitet ist und man
den den sagen konnte, hier, das machst du doch schon in der Datenauswertung,
du machst auch schon immer deine Jupyter-Notebooks
mit deinem Python.
Hier, guck mal, da schreibst du ein bisschen anders und dann kannst
du damit auch irgendwelche Motoren nach links
oder rechts fahren. Das wird man
verstehen dann, ja. Genau, das ist dann
Python ist ja so gesehen auch nicht schwer
von der Syntax her dann.
Nee, überhaupt nicht.
Auch nicht so. Ich finde, das ist eins der schönsten
Sachen an Python ist, man
kann es
zu, also eigentlich vollständig
verstehen. Also
wir hatten mal da Bewerbungsgespräche,
wo dann
sich C++ und
Python-Programmierer beworben
haben. Die haben wir dann immer gefragt, ja,
bei einer Skala von 1 bis 10,
wie gut sind deine C++-Kenntnisse?
Und wenn dann einer sagte
9,
dann war das sozusagen eine Herausforderung,
irgendwie sich eine fiese Template-Geschichte zu überlegen,
die keiner kennt
oder keiner kann.
Die kann man ja problemlos
problemlos
sofort aus dem Hut zaubern.
Also ich muss dir die Antwort ja nicht kennen, ich muss dir bloß die Frage
stellen. Während
wenn dann da ein Python-Programmierer
steht und sagt, gut,
wie gut ist dein Niveau, Python
9, dann muss ich
sagen, dass ich schon, also
sogar, also Fangfragen zu stellen,
schon, also ich glaube,
dass es viele Leute gibt,
vielleicht sogar in diesem Podcast, die
90 Prozent von Python verstanden haben.
Ja, wobei es auch schwerer wird mit der Zeit, also in letzter Zeit kommt halt immer mehr dazu und ich meine, ja, das wird auch nicht, oder das ist auch etwas, was viele Leute beklagen, dass es halt für Anfänger jetzt immer schwerer wird, weil halt der Sprachumfang, also gerade wenn man jetzt sowas nimmt wie Typannotationen oder so, finde ich persönlich auch gar nicht mehr so furchtbar einfach, immer das so hinzuschreiben, dass es dann passt, das ist halt schon, das ist halt wieder so ein ganz eigenes, ja, also Python wird halt irgendwie umfangreicher mit der Zeit.
Ja, also
es war auch früher...
Das hört sich auch an einer guten Episode an,
die man da mal aufnehmen könnte.
Fangfragen und die Ecken und Kanten.
Ich überlege, weil mir fällt sofort ein Ding
ein, schreib mal die
Funktion
min oder max in Python hinzuschreiben, ist halt
sehr, sehr einfach. Schreib mal die
Type-Annotation richtig dafür hin.
Das ist halt,
die Type-Annotationen sind
wesentlich mehr Code als die Funktion selber.
Das ist echt
schwierig. Nimm zwei Parameter vom
Typ Any und gib zurück.
Ja, ja, aber nee,
gut, das geht natürlich, dann ist es einfach,
aber es darf nicht Any sein und es sollte keine
False Negatives haben.
Dann ist es halt schon so.
Ja, wobei
ich bei Type Annotations, ich muss sagen,
ich habe mich da nie wirklich reingefuchst, weil
also zumindest das, was ich von gesehen
habe, vielleicht klärt ihr mich eines
Besseren auf,
also was mich jetzt
interessiert, also Typen interessieren
mich jetzt tatsächlich eigentlich
wenig, weil bei uns, was
eher reinkommt, ist eher die Frage
Einheiten. Also so
etwas wie so ein Motor bewegt sich
typischerweise um eine Länge
und das berühmte Beispiel
des irgendeiner abgestürzten
Satelliten auf dem Mars oder so etwas
ist ja hinlänglich bekannt, wo sie da dann
Zoll mit Millimeter verwechselt haben.
Wenn man da geschickt annotieren
könnte und meine... Ja, das ist ein Type, oder?
Nee. Ja, gut, also
schon irgendwie, aber dann halt
auch, dass... Nee, das ist doch kein Type.
Nein. Der Type ist Zahl.
Genau. So kann
man das sehen. Oder man kann jetzt für
jeden Einzelnen dann auch wieder...
Ja, ich würde
versuchen, sowas zu definieren.
Ja, aber dann...
Oder bist du lange beschäftigt. Genau. Also bis man da
einmal sämtliche Einheiten, die man dann
durchhält... Ja, wahrscheinlich ist halt die Frage, wenn der Input falsch ist,
woher weiß man dann, welche Einheit ist denn das dann, ne?
Wenn das nur Zahl ist.
Ganz einfach. Weil man kann das ja einfach
das Komma verschieben und dann hat man eine andere Skala
Ja, aber man könnte halt auch viel...
Das ist halt die Grenze, ja.
Das sind die Grenzen von so einem Typsystem.
Du hast immer Sachen, die vom gleichen Typ sind,
aber unterschiedliche Bedeutung haben.
Das klassische Beispiel ist die String-Format-Methode,
Printf im klassischen Sinne.
Die nimmt zwei Strings und der eine ist das Format
und der andere ist das, was in das Format eingesetzt wird.
Und du kannst die nicht auf Typebene unterscheiden,
weil das sind beide Strings.
Und diese Grenze gibt es immer.
Also das ist immer eine Grenze zwischen Bedeutung und Inhalt.
Ja, das beste Beispiel in der App von Python war damals ja, wo jetzt besser Python 3 eingeführt wurde, dass Bytes und Strings, es gibt vielleicht noch welche von euch, die lang genug an Python dabei sind, dass das mal früher 1 war.
Ja, das war schrecklich, schrecklich.
Ja, was auch interessanterweise daran liegt, dass halt Python älter ist als der Unicode-Standard und man das halt damals einfach noch nicht machen konnte. Und Java ist halt ein bisschen jünger und Java konnte es halt gleich rechtlich machen, aber Python halt nicht.
Und das war glaube ich das einzige Mal, dass von der Seite irgendwelche Lacher kamen.
Aber wenn man zum Beispiel die Unterscheidung
zwischen Bytes und Unicode einfach hätte
durch Type Annotations machen können,
dann hätte man gar keine neue
Python-Version machen können müssen, sondern hätte
einfach nur das annotiert
und
deine IDI sagt dir dann, ach, an der
Stelle versuchst du aber Unicodes plus Bytes
zu machen, das geht doch nicht, böse, böse.
Und
ja.
Habt ihr denn eine Lösung für dieses
Einheitenproblem? Habt ihr da was, was
kannst du uns Tipps geben?
Es gibt eine Bibliothek namens Pint, die ist ganz gut,
aber die arbeitet halt erst auf der Ausführungsebene,
nicht auf der IDE-Ebene, dass man halt die Werte,
die tatsächlich, die haben dann eine Einheit
und das funktioniert dann auch ganz gut.
Da kann man sich dann Meter, Millimeter addieren
und das macht dann alles Richtige.
Und wenn man versucht, Meter mit Sekunden zu addieren,
dann sagt er einem, das geht nicht.
Aber das Blöde ist, das macht es halt erst auf Ausführungsebene.
Wenn man dann irgendwie tausend Meter reingegeben hat,
aber tausend Sekunden meinte, ist dann doof.
Ja, genau.
Also dann stürzt es einfach ab.
Oder es wird halt eine Exception geworfen, klar.
Es wäre natürlich schön, wenn man das bereits,
Type Annotations laufen ja halt viel früher.
Das ist ja schon in der ADI das Richtige.
Da sieht man da schon, dass das passiert.
Und nicht erst, wenn dann blöderweise ein einziges Mal
diese komische Funktion beim Landen auf dem Jupiter ausgeführt wird.
Und dann halt eine Exception
geworfen wird, anstatt dass...
Ja, das ist dann halt der falsche
Zeitpunkt.
Das sind so einige Experimente, die man einmal machen kann.
Das ist schon sehr kritisch von mir.
Ja, ja, ja.
Ja, das ist...
Ich bin mal auch gespannt. Ich meine, TypeScript geht da ja
auch sehr...
Forsch voran. Ja, genau.
Und da habe ich das letztens gesehen, ich weiß nicht genau,
dass da Leute...
man kann fast aus den, wenn man die Type-Annotationen
richtig, kann man fast den Code da
schon generieren, sozusagen, weil
da schon so viel Information drin ist, dass man
sagen kann, okay, jetzt ist klar, was die Funktion machen muss,
aber es fühlt sich
irgendwie auch ein bisschen, also es ist auf der einen Seite
interessant, auf der anderen Seite denkt man sich so, wow,
das ist aber ganz anders. Ja, aber ich glaube
tatsächlich, diese ganzen Typen-Geschichten
heben wir uns für eine andere Folge auf.
Jaja, das, genau, müssen wir mal irgendwann
ja,
genau.
Ich fand das sehr interessant, Martin. Vielen Dank dafür.
Das ist immer total spannend, für was Peißen alles so benutzt wird
und was man da so stolpert.
Das ist super wichtig,
was man da für schöne Sachen mit zaubern kann.
Das ist ein bisschen Magie hinterher.
Man hat halt immer so die schnelle
Magie in den Fingern.
Das finde ich mal klasse.
Habt ihr noch irgendwas zu diesem
Thema oder kommen wir
langsam dem Ende entgegen?
Möchtest du noch was erzählen, Martin?
Nö, ich glaube, ich bin jetzt dann auch durch.
Also ich fand es super, super spannend.
Dieser ganze Problembereich, lauter Sachen,
die man so als normaler Programmierer, sage ich mal,
nicht so sieht, die da auftreten.
Und dass Python da trotzdem gut funktioniert,
ich finde es großartig.
Ich finde es super spannend und ich finde es großartig.
Dann haben wir immer die Tradition,
dass wir einen Pick der Folge machen.
Ich weiß nicht, ob du das schon kennst.
du musst ein Python-Modul
irgendwo raussuchen und sagen,
warum du das toll findest. Du musst nichts mit
deinem Thema zu tun haben.
Man kann auch was anderes mal nehmen, muss nicht unbedingt ein Python...
Er hat ja gerade schon Pint gesagt.
Du hast doch rein freischossen.
Soll ich mal anfangen?
Ich habe nämlich eine.
Ich habe vor einer Weile eine Bibliothek gefunden, die heißt
Deutschland.
Pip Install Deutschland.
Es ist noch keine
1.0 ist leider noch eine
kleinere Version und
das sind einfach Sachen
drin mit Daten über Deutschland.
Verschiedene APs
angebunden, verschiedene Dinge
angebunden, sodass man
einfach sich Sachen über Deutschland
anschauen kann. Hast du es gerade
offen, Dominik? Bundesanzeiger,
Handelsregister.
Einfach interessante
Daten über Deutschland.
Geografie und
genau, Autobahndaten,
das Presseportal, die
Polizei Brandenburg,
Reisewarnungen,
Zollwarnungen, einfach ganz viel
Kram über Deutschland, was man sich
abrufen kann.
Und das ist jetzt Version 0.1.9,
also ist noch nicht, Deutschland ist noch nicht reif
genug für eine
1.0, aber
wer mit deutschen Daten arbeiten möchte,
kann sich die so einfach reinholen, auf eine
sehr pythonische Art und Weise.
Man müsste mehr damit machen.
Johannes hat mir nicht was über PyTest erzählt
und ich habe gesehen, dass man Rich auch mit PyTest machen kann
und PyTest Rich genommen.
Einfach, dass es dann ein bisschen hübschere PyTest-Ausgabe
gibt.
Ja.
Ja.
Du wolltest was außerhalb von PyPy nehmen?
Ja, genau. Ich habe deswegen nur so
gemeckert, weil ich was hatte, was da nicht reinpasst.
Deswegen dachte ich, muss ich da mal schon mal gleich
irgendwie
entsprechend mich positionieren.
Genau, was ich picken würde, das habe ich
von der PyCon mitgebracht und das hat der
in dem Lightning Talk
Florian Bruhin von
einer der Pettest-Maintainer hat das
vorgestellt. Und zwar
weil er immer nachgucken musste,
wie F-String-Geschichten, mit denen
man ja wahnsinnig viel machen kann, wie man das
denn dazu, in welchem Fall macht,
hat er ja eine Seite
schnell mal hochgezogen,
die nennt sich fstring.help
slash cheat slash.
Also so ein
Cheat-Sheet
für Python F-Strings.
Und ja, das ist
tatsächlich sehr gut gemacht und
hat mir auch schon geholfen. Finde ich super.
Genau. Sollte man sich irgendwo hinlegen,
wo man das dann irgendwie wiederfindet.
Ja.
Die etwas
ältere Variante davon heißt PyFormat.
PyFormat.info.
Da kann man über Prozent
und Punkt Format Formatierung nachlesen.
Habe ich auch schon sehr, sehr häufig
aufrufen müssen.
Ja, vielen Dank Martin, dass du dabei warst und uns mit deinem Wissen bereichert hast.
Ja, danke auch, dass ich schön erzählen konnte.
Ja, danke Johannes und bleibt uns alle gewogen, hört uns, schreibt uns wieder rein, irgendwelche Kommentare an hallo.peisenpodcast.de und einfach bis zum nächsten Mal.
Alles klar, tschüss, tschüss, bis dann, ciao.