Bericht vom 19. Deutschen Perl-Workshop 2017

Bericht vom 19. Deutschen Perl-Workshop 2017

Der 19. Deutsche Perl-Workshop fand vom 26. bis zum 28. Juni 2017 im Bürgerhaus Wilhelmsburg statt. Während dieser drei Tage wurden 15 reguläre Vorträge gehalten, die zwischen 20 und 40 Minuten lang waren. Montag und Mittwoch hielten die Teilnehmer nach den im Programm verzeichneten Vorträgen spontane Blitzvorträge (»Lightning Talks«), die jeweils etwa fünf Minuten dauerten.

Montag

Nach einer kurzen Begrüßung von Max Maischein ging es mit dem ersten Vortrag los.

cperl – the future of perl

Reini Urban hat seinen Projekt cperl vorgestellt. Dieses gehört zum Projekt perl11, das unter anderem die Weiterentwicklungen aus Perl6 nach Perl5 bringen möchte. Cperl basiert auf dem jeweils aktuellen Perl5 und wird von ihm stetig verbessert. Neben Signaturen und Datentypen hat Reini in cperl »unter der Haube« bereits viele Verbesserungen eingebaut.

Nach seinen Aussagen ist cperl sicherer als perl, da er diverse Sicherheitslücken laufend stopft. Außerdem sei cperl schneller, da er unter anderem die Opcode-Generierung optimiert habe.

Einen wesentlichen Unterschied zum Vergleich zum normalen Perl5 hat cperl: Reini hat das Compiler-Backend repariert. Somit kann man mit cperl ausführbare Programme erzeugen.

Der Vortrag war technisch sehr interessant. Außerdem war es spannend, Reini persönlich kennenzulernen und seine Eindrücke von der Weiterentwicklung von Perl5 zu bekommen – seiner Meinung nach wird die Implementierung von perl technisch immer schlechter und die Entwicklung der Sprache Perl stagniert.

Stellenweise wurde der Vortrag zu technisch für mich. Zwischen den Ebenen Opcode und Assembler bewege ich mich mittlerweile zu selten, so dass ich hier nur teilweise folgen konnte.

Ich werde cperl vermutlich demnächst ausprobieren, da wir bei der Arbeit das Problem haben, Nicht-Entwicklern ein Perl-Programm zu geben, ohne Perl installieren zu wollen. Da wäre ein »echter« Compiler natürlich praktisch. Dass wir uns dabei dann aber auf ein Projekt verlassen würden, das von einer Person abhängt, könnte ein zu hohes Risiko sein.

Perl im Unternehmensumfeld: Die Online-Plattform »Cockpit«

Osman Durrani hat zunächst sein Unternehmen und das Produkt »Cockpit« vorgestellt. Er ist seit Beginn der Firma an Board und hat das Produkt mit entwickelt. Inzwischen ist er Leiter der Technik.

Das Produkt basiert auf Perl und läuft über CGI unter Windows. Das kam mir bekannt vor: Auch bei meiner Arbeit stellen wir ein solches Produkt her.

Laut Osman hat das Management entschieden, von Perl zu PHP zu wechseln. Als Grund wurde unter anderem genannt, dass sie keine Entwickler mehr bekommen. Auch das kenne ich von meiner Arbeit. Bei uns war auch dies ein Argument.

Da auf dem lokalen Arbeitsmarkt keine Entwickler verfügbar sind, bilden sie selbst Perl-Entwickler aus. Auch das machen wir bei der Arbeit.

Bei Osman steht die Neuentwicklung des Produktes in einer anderen Sprache noch an. Der Vortrag passte somit gut zu Uwes Völkers Vortrag am Mittwoch, der diese Neuentwicklung schon ein paar Jahre bei seinem Arbeitgeber miterlebt.

Web-Automation mit WWW::Mechanize::Chrome‎

Max Maischein hat bereits Anbindungen an WWW::Mechanize für mehrere Browser geschrieben. Dieses ist sein neuestes Modul in dieser Familie: Die Anbindung an Chrome.

Das Modul ist relativ jung, daher sind weder Dokumentation noch Code vollständig, und vieles vom WWW::Mechanize-API wird noch nicht unterstützt. Die grundlegende Funktionalität steht aber, um Chrome fernzusteuern und beispielsweise Formulare auszufüllen oder Javascript auszuführen.

Max’ Modul spricht über einen Websocket mit Chrome. Hierfür verwendet er Module von Mojolicious.

Ich habe aus diesem Vortrag mitgenommen, dass ich dieses Modul in etwas ausgereifterem Zustand an Stelle von Selenium nehmen könnte. Es hätte den Vorteil, dass ich kein weiteres Programm benötige und ich mich innerhalb der Perl-Welt bewegen würde. Laut Max kann sein Modul sogar mehr als Selenium, zum Beispiel kann man damit HTTP-Response-Codes abfragen.

Mittagspause

Ich bin mit den beiden anderen Mitgliedern von Hamburg.pm, Uwe Völker und Frank Seitz, vor Ort im Bürgerhaus in der Gastronomie geblieben. Entgegen meiner niedrigen Erwartungen war das Essen überraschend gut.

Zu uns haben sich einige andere Teilnehmer gesellt, unter anderem Reini und Osman. Bei den Gesprächen habe ich gelernt, dass Reini früher im Formel1-1-Umfeld bei einer österreichischen Firma gearbeitet hat und daher seine Performance-Kenntnisse bei der Verarbeitung von Massendaten hat.

Gegen 14:00 Uhr ging es dann mit dem nächsten Vortrag weiter.

Catmandu – Lessons Learned‎

Johann Rolschewski hat ein Produkt vorgestellt, das in der Zusammenarbeit mehrerer Hochschulen im Bibliotheksumfeld entstanden ist.

Catmandu bezeichnet sich selbst schlicht als »the data processing toolkit«. Es liest Daten ein, kann sie dabei transformieren und dann exportieren. Über eine Vielzahl von Im- und Exporter werden eine Reihe von Formaten unterstützt. Als Speicher werden ebenfalls viele Datenbanken unterstützt (zum Beispiel Solr, Elasticsearch, und alles, was über DBI angesprochen werden kann).

Catmandu ist quelloffen und liegt auf CPAN. Bei der Entwicklung nutzen sie modernes Perl, moderne Werzeuge (cpanm, Dist::Milla) und moderne Dienste (github, coveralls.io).

Um den Benutzern den Einstieg zu vereinfachen, gibt es massenweise Dokumentation und VMs, auf denen Catmandu fertig konfiguriert installiert ist. Die VM nutzen die Entwickler auch selbst für Workshops und Schulungen.

Der Vortrag hat mir sehr gut gefallen, da ich ihm gut folgen konnte, die Folien aufgeräumt waren, und inhaltlich etwas präsentiert wurde, das sehr »rund« wirkte. Johann hat hier ein Produkt vorgestellt, dass die Benutzer einfach benutzen können. So etwas haben wir in der Perl-Welt viel zu selten. Üblicherweise muss man ja doch noch irgendwo Hand anlegen oder die Umgebung anpassen. Aber da hier eine hohe Testabdeckung vorliegt (94%!) und über die CPAN-Testers alles getestet wird, kann man vorher nachsehen, ob das Produkt in seiner Umgebung funktioniert.

Batch::Interpreter‎

Der nächste Vortrag wurde von Ralf Neubauer gehalten und stand in gutem Kontrast zu dem Catmandu-Vortrag. Hier galt es nicht, massenweise Daten in nahezu beliebigen Formaten zu verarbeiten, sondern einen vermutlich einmaligen Anwendungsfall zu unterstützen: Die Interpretation von Windows-Batch-Dateien unter Linux mit Perl.

Die Motivation dahinter sah so aus: Ein Wechsel der Infrastruktur von Windows- zu Linux-Servern stand an. Die Umstellung der Vielzahl von Batch-Dateien auf Shellskripte oder andere Programme schien zu aufwändig. Daher wurde entschlossen, einen Interpreter zu schreiben.

Herausgekommen ist ein Programm, dass die vorliegenden Batch-Dateien interpretieren kann. Wenn ich es richtig verstanden habe, sind Batch-Dateien selbstmodifizierend und die Interpretation nicht ganz einfach.

Genutzt werden wird das Programm wohl nicht, da die Migration nach Linux abgeblasen wurde. Die Nachwelt hat trotzdem etwas von Ralfs Arbeit: Das Modul liegt auf CPAN.

PerlSum

Herbert Breunung hat im Rahmen ‎seiner Einführungsveranstaltungen an der Uni Dokumentation für Einsteiger erstellt. Er möchte daran anknüpfen und diese Dokumentation einer größeren Leserschaft zu Verfügung stellen.

Herbert hatte keine Folien vorbereitet, sondern wollte im Gespräch mit den Anwesenden ausloten, wohin die Reise gehen könnte.

Er schilderte seine Idee, ein Programm zu entwickeln, mit dem der geneigte Leser auf der Befehlszeile kontextbasiert durch die Dokumentation geführt wurde. Nach seinen Ausführungen hatte Uwe Völker angemerkt, dass Herbert gerade HTML neu erfinden möchte. Wie die Diskussion weiterging, weiß ich nicht, da ich den Vortrag leider nicht zu Ende hören konnte.

Inhaltlich war der Vortrag aber für mich interessant, da ich mit dem Perlhaus die gleiche Zielgruppe ansprechen möchte und hier ebenfalls Informationen für Einsteiger leicht zugänglich bereitstellen möchte. Ich bin daher gespannt, wie es mit dem Material weitergeht.

Lightning Talks

Hier verlässt mich meine Erinnerung. Ich kann mich nur noch einen Blitzvortrag von Tobias Leich erinnern: OWASP Top 10! In den OWASP Top 10 werden die statistisch häufigsten Ursachen für sicherheitsrelevante Vorfälle vorgestellt.

Führend ist hier immer noch die Injektion, bei der Platzhalter ohne weitere Prüfungen mit Benutzereingaben gefüllt werden. Ein Angreifer kann dadurch Zugriff auf Daten erlangen, diese verfälschen, oder sogar Code ausführen. Weit verbreitet ist SQL-Injection, allerdings funktioniert diese Angriffsart auch bei XML, LDAP, SMTP-Headern und vielem mehr.

Die Informationen der OWASP Top 10 werden für Einsteiger in diese Thematik präsentiert und sind in einem übersichtlichen PDF gesammelt. Das verlinkte Dokument ist aus dem Jahre 2013. Es wird geredet überarbeitet, die Fassung von 2017 steht kurz vor Veröffentlichung.

Dieses Dokument sollte jeder, der in der Webprogrammierung unterwegs ist, gelesen haben!

Dienstag

The non-butterfly effect – a universe where Camelia didn’t flap her wings‎

In diesem Vortrag führt Nicholas Clark ein Gedankenexperiment aus: Wie hätte sich Perl5 entwickelt, wenn es Perl6 nicht gegeben hätte? Wie sähe Perl5 ohne die Einflüsse von Perl6 aus?

Anhand einiger Schlüsselereignisse hat Nicholas die Entwicklung der echten und einer alternativen Zeitlinie entwickelt. In der alternativen Zeitlinie haben diese Schlüsselereignisse für Perl6 nicht stattgefunden und Perl5 hat sich dort dann entsprechend anders entwickelt.

Nicholas hat den Vortrag auf Englisch gehalten und schnell gesprochen. Wenn ich ihn richtig verstanden habe, hätten aus seiner Sicht viele Ereignisse in der Perl5-Welt ebenfalls stattgefunden. Allerdings hätte es einiges nicht gegeben: Moose und die Perl-Renaissance zum Beispiel.

Den Vortrag fand ich gut, ich hätte nur gerne mehr von den Andeutungen verstanden. Super war, dass er keine Illustrationen auf den Folien hatte, sondern stattdessen mehrere T-Shirts übereinander trug und die Schichten nach und nach frei legte :-)

Perl@Hamburg – meine Sicht als Team-Leiter

Nun war ich mit meinem Vortrag dran. Darüber habe ich bereits an anderer Stelle geschrieben.

Mittag

Uwe hatte sich für das Mittagessen einen Griechen ausgesucht, den wir mit einer kleinen Gruppe zu Fuß heimgesucht haben. Dort habe ich mir Rückmeldungen zu meinem Vortrag geholt, und wir haben erste Pläne geschmiedet, wie wir Hamburg.pm wiederbeleben können.

Sofortinfos schicken mit Telegram-API und Perl‎

Der nächste Vortrag war wieder technischer. Telegram ist einer der vielen Messenger-Dienste, die im gleichen Teich mit Whatsapp schwimmen und sich unter anderem durch die schwammige Eigenschaft »mehr Sicherheit!« abgrenzen wollen.

Telegram unterstützt zudem Bots und hat eine API dafür. Diese wurde in diesem Vortrag demonstriert. Wieland Pusch hat in seiner Live-Demo einen Nachrichtenkanal mit Nachrichten befeuert.

Dieser Telegram-Kanal wurde auch vorher und später von Workshop-Teilnehmern genutzt, um sich abzusprechen.

Wieland hatte sich Telegram ausgesucht, weil er automatisiert Statusmeldungen von Rechnern versenden wollte und dieser Dienst Bots unterstützt. Für mich sehe ich derzeit weder privat noch beruflich einen Bedarf, den Dienst dafür zu nutzen.

glob() and exponential backtracking‎

Der Anlass für diesen Vortrag von Lukas Mai war ein Anfang 2017 erschienener Artikel, der aufzeigte, wie ineffizient die Algorithmen regulärer Ausdrücke zu der Zeit waren. Er stützte sich auf einen einfach zu verstehenden Sonderfall, anhand dessen ein exponentielles Wachstum der Laufzeit gezeigt wurde.

In diesem Vortrag hat Lukas anhand von Pseudocode die verschiedenen Stufen der Implementierung gezeigt: naiv runtergehackt, Erweiterung des regulären Ausdrucks um Stern und Fragezeichen, der Algorithmus vor dem Fix, und die schrittweise Entwicklung des Fixes inklusive Backtracking.

Dem Inhalt entsprechend war der Vortrag sehr theoretisch. Obwohl der Code jeweils auf eine Folie gepasst hat, bin ich irgendwann ausgestiegen. Auf dieser Ebene kann ich wohl nicht mehr folgen, da meine Aufmerksamkeitsspanne dafür zu kurz ist. Der Vortrag selbst war aber sehr gut. Das ruhige bayerische Englisch von Lukas war prima.

Functions Signaturen Compared – Perl6, Perl5.20 and Sub::Sig‎

Rolf Langsdorf hat einen Überblick über einige Implementierungen von Signaturen von Perl5 gegeben. Außerdem hat er die Signaturen in Perl6 im Ansatz vorgestellt.

Mir wurde durch diesen Vortrag erneut klar, welchen Wildwuchs es auf CPAN für das Lösen dieser Problematik gibt. Offensichtlich gibt es einen starken Wunsch, Signaturen verwenden zu können.

Die Signaturen müssen dringend in den Kern – am besten in der Form von Perl6, denn dort haben sich schon Leute Gedanken über das Design gemacht.

Rolfs Stil wirkte auf mich sehr ruhig und akademisch. Ich mag das :) Schön fand ich seine Rückfragen, ob man ihm folgen könne und etwas aus dem Vortrag mitgenommen habe.

Privatsphäre Sofort‎

Dieser Vortrag von Sören Laird Sörries hatte nichts mit Perl zu tun, sondern präsentierte 20 Rezepte, wie man sich als Anwender etwas Privatsphäre zurückholen kann. Motivation war der Umstand, dass seit den Enthüllungen von Edward Snowden quasi nichts passiert ist.

Sören hat hier Lösungen gezeigt, für deren Umsetzung man nicht programmieren, schrauben oder löten muss. Man kann als Anwender durch Ändern von Gewohnheiten und installieren von Programmen schon viel erreichen.

Ich denke, dass nicht alles davon umsetzen muss, aber immerhin sollte man sich über die Thematik mal Gedanken machen.

Abendveranstaltung

Die Abendveranstaltung oder auch »das Social Event« fand mitten im Industriegebiet Wilhelmsburgs statt. Ich stieß später zu den Teilnehmern und ging daher alleine durch die tristen Straßen. Vorbei an Containern und LKW hatte ich Probleme, die am Montag spontan gewählte »Location« zu finden.

Die Grund hierfür ist, dass in Wilhelmsburg momentan wie wild gebaut wird und eine Bundesstraße um ein paar hundert Meter verlegt wird. Danach wird dort, wo wir waren, kein Industriegebiet mehr sein, sondern ein Wohngebiet mit 10000 Wohneinheiten. Nach Abschluss der Bauarbeiten wird das Restaurant also eine sehr gut Lage haben :-)

Die Küche war leider überfordert, das Essen war aber lecker. Und die Gespräche haben das Essen natürlich noch übertroffen.

Julien Fiegehenn hat mir am späteren Abend noch die aktuelle Version der Komodo IDE vorgeführt, da ich in meine Vortrag ja kühn andeutete, dass es keine vernünftige IDE gebe. Jetzt kann man sich natürlich den Mund fusselig reden, was denn »vernünftig« in diesem Zusammenhang bedeutet, aber Komodo sah schon sehr gut aus. Werde ich mir mal ansehen, nachdem ich meinen Emacs mit der Hilfe von Rolf etwas gepimpt habe :-)

Mittwoch

The State of The YAML‎

Tina Müller hat – wie der der Titel schon vermuten ließ – den Stand der Dinge bei YAML präsentiert.

YAML ist aufgrund der teilweise ungenauen Spezifikation schwer zu parsen. Der Raum für Interpretationen, den die Spezifikation stellenweise einräumt, wird von den Parsern in den verschiedenen Programmiersprachen unterschiedlich genutzt. Als Folge verhalten sich die Parser unterschiedlich und können nicht alle die gleichen Eingaben parsen. Tina hat diese Probleme an YAML-Beispielen erläutert.

2016 hat Ingy döt Net, der Erfinder von YAML, damit begonnen, eine Testsuite für YAML zu entwickeln. Auf Basis dieser Testsuite können die Entwickler der Parser ihre Implementation verbessern. Zusammen mit ihm und Felix Krause hat Tina das erste YAML-Gipfeltreffen im Mai 2017 veranstaltet.

Tina hat eine Matrix erstellt, in der die Ergebnisse für die unterschiedlichen Parser dargestellt werden.

Die Testsuite-Matrix hat mich ein bisschen an die CPAN-Tester-Matrix erinnert …

Bisher habe ich YAML nur als »irgendein weiteres Format für Konfigurationsdateien« genutzt. Ich habe in diesem Vortrag gelernt, das YAML wesentlich mächtiger ist, als ich bisher geahnt habe. Ich musste an einen alten Artikel von Steve Yegge denken, der an einer Stelle sinngemäß sagt, dass alle Konfigurationssprachen irgendwann danach streben, Turing-vollständig zu werden – und man hätte dann auch gleich LISP nehmen können, da hier Code und Daten nicht getrennt sind.

Perl @ XING – ein Update‎

Uwe Völker kenne ich seit meinen ersten Gehversuchen in Hamburg.pm, da er die Treffen organisiert hat und diese häufig bei Xing stattgefunden haben. Xing hatte vor Jahren angekündigt, von Perl zu Ruby wechseln wollen. Uwe hat dargestellt, wie es mit dieser Umstellung aussieht.

Um es kurz zu machen: Der damals ausgegebene Termin, zu dem die Umstellung abgeschlossen sein sollte, wurde nicht eingehalten. Die Migration ist auch heute nicht abgeschlossen.

Uwe hatte damals mit dafür gestimmt, zu wechseln, da die Argumentation schlüssig war. Ein Argument war, dass Stellen nicht besetzt werden können, da zu wenig Perl-Entwickler auf dem Arbeitsmarkt verfügbar sind.

Einige Hoffnungen haben sich nicht erfüllt. Es gibt weiterhin offene Stellen. Uwe stellte die Frage, warum Xing offene Stellen habe, wenn es doch so viele Ruby-Entwickler in Hamburg gäbe?

Auch der Umstieg der Entwickler auf eine andere Sprache ist keineswegs einfach. Auch wenn Perl und Ruby verwandt sind, schreiben Umsteiger zunächst Perl in Ruby. Gestandene Ruby-Entwickler schlagen dann die Hände über dem Kopf zusammen, weil der Code nicht wie »richtiger« Ruby-Code aussieht. Insgesamt sinkt also zunächst die Produktivität.

Uwes Vortrag passt gut zu Osmans und meinem Vortrag. Wir haben einen Aspekt von unterschiedlichen Seiten betrachtet. Interessant ist für mich, dass Xing trotz seiner Größe viele Erfahrungen gemacht hat, die wir bei der Arbeit auch gemacht haben.

Precise Math in Perl 5 – A Lost Cause? Challenge accepted.‎

Kann man in Perl 5 genau rechnen? Und wenn ja, wie und mit Hilfe welcher Module? Haben diese Module Grenzen? Martin Becker widmete sich im nächsten Vortrag diesen Fragen. Er gab einen Überblick über einige Module, die sich mit der Handhabung großer Zahlen und mathematischer Datentypen befassen, und beschrieb, welche Probleme sie haben.

Martin ist Mathematiker und möchte exakte Ergebnisse haben. Aus dieser Anforderung hat er abgeleitet, wie seiner Meinung nach Module geschrieben werden sollten: »Wenn du kein exaktes Ergebnis liefern kannst, dann scheitere laut und deutlich und führe keine heimlichen Operationen durch.«

Ich bin zwar kein Mathematiker, aber diese Anregung fand ich gut, da sie denke ich für alle Module geeignet ist. Diese Leitlinie für die Entwicklung von Modulen nehme ich gerne mit. Ich würde jetzt gerne schreiben, dass ich natürlich schon immer so entwickelt habe, aber ich fürchte, dass dem nicht so ist …

Lightning Talks

Den Abschluss des Workshops bildeten die Blitzvorträge. Meine Erinnerung verlässt mich hier etwas, aber ich bin mir ziemlich sicher, dass Julien drei (!) Vorträge gehalten hat: Er sprach eine Empfehlung zur Nutzung von Test::Class::Moose aus, präsentierte sein Testmodul zum Bereitstellen einer fertigen Session für Catalyst, und führte sein Modul zum Debugger aller Instanzen von LWP::UserAgent vor.

Außerdem gab es einen Blitzvortrag von Tobias Leich zum Thema »Wir bauen ein eigenes Ticket-System, das wir über REST-Schnittstellen automatisiert befeuern«.

Rolf hat kurz gezeigt, wie man mit B::Concise nicht nur den Opcode-Tree, sondern auch den Programmcode bekommen kann. Ich hatte das Gefühl, dass der Vortrag für mich war :) Ich hatte mir ja in meinem Vortrag maschinenlesbaren AST gewünscht.

Dieses Modul hier hilft mir nur etwas, da hier schon der Compiler seine Arbeit verrichtet hat und im Zweifel bereits optimiert hat. Aber trotzdem ist es gut zu wissen, dass das geht. Ich bekomme glatt Lust, das mal strukturiert aufzuschreiben …

Kurz nach Mittag war dann der Workshop zu Ende. Nach einigen abschließenden Gesprächen brachen die meisten Teilnehmer zu ihren Zügen auf.

Ich habe noch ein paar Aufkleber ergattert, damit ich meinen Laptop weiter schmücken kann.

Fazit

Ich habe mich gefreut, endlich mal wieder an einem GPW teilnehmen zu können. Da ich Hamburg.pm wiederbeleben möchte, hatte ich auch einen Grund, einen Vortrag zu halten. Das war schon überfällig.

Der Besuch hat sich in vielerlei Hinsicht gelohnt. Die Mehrzahl der Vorträge war für mich interessant und ich habe Leute treffen können, die Perl mindestens ebenso toll finden wie ich. Die Vortragsthemen waren gut gemischt. Es gab einen bunten Wechsel von technischen und nicht-technischen Themen. Außerdem freut es mich, dass Sicherheit im Sinne von »security« zweimal Thema war!

Meine Perl-Akkus sind nun wieder aufgeladen!

Auf dem nächsten GPW werde ich dann hoffentlich berichten können, dass diese Seite wächst und gelesen wird, und dass Hamburg.pm wieder lebt!

comments powered by Disqus