Helvetic Ruby

Am 24. November gab es in Bern eine Premiere: Die Ruby-Community traf sich zur ersten Helvetic Ruby Conference. Im Kulturzentrum Progr versammelten sich sowohl einige bekannte Gesichter der Schweizer Ruby-Szene als auch internationale Gäste, um ihre Leidenschaft für Ruby zu teilen und zu feiern.

In diesem Blogpost geben wir einen kurzen Einblick in die Veranstaltung. Wir berichten über unsere persönlichen Highlights des Tages, die besonders lehrreich und inspirierend waren.

Vorträge

Dem Organisationsteam ist es gelungen, spannende Sprecher*innen in die Schweiz zu holen. Damit umfassten die Präsentationen Spannendes aus einer breiten Palette von Themengebieten.

Optimieren von Tests

Vladimir Dementyev hat einen erhellenden Vortrag über das Profiling von Ruby-Tests gehalten. Bereits in den einleitenden Bemerkungen bot er einen Ratschlag, wie man die Test-Suite durch eine einfache Anpassung der Konfiguration in der Testumgebung erheblich beschleunigen kann:

# config/environments/test.rb
config.logger = Logger.new(nil)
config.log_level = :fatal

Mit dieser Konfiguration wird der Rails Logger so eingestellt, dass in der Testumgebung kein Logfile mehr erstellt wird, was normalerweise ohnehin nicht beachtet wird. Sollte dennoch in Einzelfällen ein Logfile benötigt werden, lässt sich die Konfiguration über eine Umgebungsvariable steuern. Beispielsweise so:

# config/environments/test.rb
unless ENV['LOGGING'] == 'true'
  config.logger = Logger.new(nil)
  config.log_level = :fatal
end

Dieser nützliche Tipp war aber nur der Einstieg in den Talk. Im Hauptteil präsentierte Vladimir verschiedene Strategien und Werkzeuge zur Analyse der Test-Suite.

Er hat eindrücklich aufgezeigt, dass der Fokus auf die Tests gerichtet werden sollte, welche häufig ausgeführt werden und nicht primär auf diejenigen, welche langsam sind. Oft gibt es gute Gründe, wieso ein einzelner Test langsam ist, und eine merkliche Beschleunigung erfordert meist erheblichen Aufwand. Diese Investition ist jedoch oft besser angelegt, wenn eine grössere Gruppe von nur «halb langsamen» Tests beschleunigt werden kann. Ein gutes Beispiel zu dieser Wirkung ist die am Anfang des Talks erwähnte Anpassung der Logging Konfiguration. Davon profitiert ein Grossteil der Tests in der Testsuite, und in der Summe führt dies zu spürbaren Verbesserungen, auch wenn ein einzelner Test dadurch nur Sekundenbruchteile beschleunigt wird.

Auch eine DB braucht etwas Liebe

Für unsere Arbeit ebenfalls sehr nützliche Tipps nehmen wir aus der Präsentation von Karen Jex mit. In ihrem Vortrag konzentrierte sich Karen auf PostgreSQL.

Als Entwickler*innen und DevOpsSpezialist*innen verwenden wir in unseren Projekten häufig PostgreSQL. Dabei liegt unser Hauptaugenmerk in der Regel auf der Anwendung selbst. Karen bestätigte, dass die Standardkonfiguration von PostgreSQL normalerweise ganz «OK» ist. Sie zeigte jedoch auch auf, dass durch die Anpassung einer kleinen Anzahl von Parametern die Leistung der Datenbank-Engine erheblich optimiert werden kann.

Besonders wichtig sind die Parameter, die zur Konfiguration der verschiedenen Speichergrenzen dienen. Standardmässig sind diese sehr konservativ eingestellt. Es ist daher empfehlenswert, diese Einstellungen je nach verfügbarem Speicher des Host-Systems anzupassen.

Durch die Feinabstimmung dieser Parameter kann PostgreSQL effizienter arbeiten, was wiederum die Gesamtleistung unserer Anwendungen verbessert. Karens Vortrag hat uns daran erinnert, dass ein tiefes Verständnis für alle Bestandteile unseres Tech-Stacks – einschliesslich der Datenbank – unerlässlich ist, um optimale Leistung und Stabilität zu gewährleisten.

Alles Gleichzeitig

Spannend war die Präsentation von Abiodun Olowode. Sie hat uns in das Konzept von Ractors eingeführt und die Vorteile gegenüber traditionellen Threads aufgezeigt.

Ractors ermöglichen trotz des Global Interpreter Locks (GIL) echte Parallelisierung und können so mehrere CPU-Kerne effizient nutzen. Die Vorgaben der Immutabilität von geteilten Daten führt zu einer deutlichen Reduzierung der mit Thread-Sicherheit verbundenen Risiken. Abiodun stellte jedoch auch klar, dass Ractors nicht alle Probleme im Zusammenhang mit der Thread-Sicherheit automatisch lösen.

Die Präsentation von Abiodun war sowohl aufschlussreich als auch inspirierend und hat uns daran erinnert, dass die kontinuierliche Verbesserung von Ruby neue und aufregende Möglichkeiten für uns als Entwickler*innen eröffnet.

Wie neue Devs aufbauen

Harriet Oughton zeigte in ihrer Präsentation Postkarten von «Early-Career Developer» und erklärte, wie sie sich innerhalb der ersten Monate in einem neuen Umfeld fühlten. Wir erhielten viele praktische Tipps, wie eine Organisation neue Talente aufnehmen kann und begleiten muss, damit ein erfolgreicher Start in die Softwareentwicklung gelingt.

Natürlich hilft ein einfaches Dev Setup. Obwohl dieses pro Projekt selten durchlaufen wird, ist es nützlich, wenn es ausführlich dokumentiert ist. Beim Setup hilft sicher auch ein Pairing mit der Person, welche das Setup als letztes aufgesetzt hat. Inputs und Erkenntnisse sollen beim Onboarding unbedingt direkt wieder in die Dokumentation einfliessen.

Neben dem Vorgehen und den Zeremonien im Projekt hilft auch eine gute und dokumentierte Code-guidline und Vorlagen für PR und Commitmessages. Positive Erfahrung haben Open Source-Projekte. Um die Community abzuholen, sind explizite Richtlinien wie Code of Conduct oder Vorgehen fürs contributing notwendig. In regelmässigen Hackathons wird dies immer wieder auf die Probe gestellt.

Aus dem Vortrag habe ich zwei Punkte mitgenommen: Ausreichend Support (aka Zeit) ist wichtig und es braucht viel Menschlichkeit. Mit diesen «einfachen» Mitteln begegnen wir den aktuellen Herausforderungen der Branche und dem Fachkräftemangel.

Ruby hat Groove

Zum Abschluss der Talks hat uns Raia eine komplett ungewohnte Anwendung von Ruby gezeigt.
Sie präsentierte eine beeindruckende Demo zu Sonic Pi und zu der faszinierenden Welt des programmierten Sounds. Mit Sonic Pi nutzte sie die Einfachheit und Ausdrucksstärke von Ruby, um komplexe musikalische Muster und Texturen zu erzeugen.

Ihre Demonstration begann mit dem einfachen Spielen einiger Noten, wobei sie die Flexibilität von Ruby nutzte, um verschiedene musikalische Parameter wie Tonhöhe, Dauer und Amplitude zu manipulieren. Sie zeigte auch, wie man mit Sonic Pi Loops und Funktionen verwenden kann, um wiederkehrende musikalische Phrasen zu erstellen und zu variieren. Sie demonstrierte, wie man mit Live-Loops in Echtzeit interaktive Musik erstellt und wie man durch die Manipulation von Samples und der Verwendung von Effekten faszinierende Klanglandschaften erzeugen kann.

Raias Demonstration war ein inspirierendes Beispiel für die kreativen Möglichkeiten von Ruby und Sonic Pi. Sie zeigte uns, dass Programmierung nicht nur eine wissenschaftliche Disziplin, sondern auch eine Kunstform sein kann, die neue Wege zur Ausdruckskraft und Innovation eröffnet.

Einige Stücke von Raia sind auf Youtube zu finden.

Neben den oben erwähnten Präsentationen gab es noch diverse Weitere, welche alle auf ihre unterschiedliche Art spannend und informativ waren. Die vollständige Liste ist unter https://helvetic-ruby.ch/talks/ zu finden.

Nachhall

Wir konnten nicht nur interessanten Vorträgen zuhören, sondern auch viele spannende Gespräche führen. Besonders war an dieser Konferenz, dass wir zum Abschluss gemeinsam Käse in der Berner Altstadt und ein (oder zwei) regionale Bier geniessen konnten.

Herzlichen Dank den Sponsoren, welche diesen tollen Event ermöglicht haben, und ein ganz grosses Merci an Hanna Harencarova, Mario Schüttel und Dimiter Petrov für die einwandfreie Organisation.

Kommentare sind geschlossen.