Clean Code bezeichnet Quellcode, der intuitiv verständlich ist und so zu stabileren und besser wartbaren Systemen führt. Der Begriff entstammt dem gleichnamigen Buch von Robert Cecil Martin (alias Uncle Bob), welches auch eine Vielzahl an Tipps und Praktiken bietet, welche ich mit Torsten Flatter gemeinsam Bespreche. Zunächst geht es um das bekanntlich schwierige Thema von guten Namen für Variablen und Funktionen und Lesbarkeit im Generellen. Anschließend sprechen wir darüber, was neben der Länge eine gute Funktion ausmacht und warum man nicht zu viel kommentieren sollte. Wir sprechen außerdem über Struktur von Software Code, wie vertikale Sortierung und maximale Zeilenbreite, und widmen uns diversen Prinzipien wie das KISS- und das SOLID-Prinzip.
Die abschließende Folge der Reihe rund um Software Deployment und Cloud geht architektonisch in die Tiefe. Nils Domrose berichtet davon, wie er mit seinem Team ein eigenes Cloud-Angebot aufgebaut hat und betreibt. Zunächst besprechen wir die Anforderungen, die es bei der Auswahl eines geeigneten Rechenzentrums zu berücksichtigen gilt. Neben Basisanforderungen wie Strom und Netzwerk besprechen wir auch, wie man an ausreichend IP-Adressen kommt und mit welchen Fehlersituationen man kalkulieren muss. Anschließend geht es um die Planung von Hard- und Software. Hierbei gehen wir insbesondere auf OpenStack ein, ein open-source Projekt zum Betrieb einer Cloud-Infrastruktur. Nils erklärt dabei nicht nur die Grundlagen, sondern berichtet auch von den Abwägungen die sie zu ihrer Lösung gebracht haben und erzählt von Stolpersteinen und Herausforderungen auf diesem Weg.
Die zweite Folge der Serie rund um Cloud und modernes Software Deployment widmet sich unterschiedlichen, derzeit sehr beliebten Strategien um Software bereitzustellen: Container / Kubernetes, Serverless Computing und innerhalb eines Service Meshes. Bevor wir in die Details gehen diskutieren wir zunächst darüber, was überhaupt gutes Software Deployment ist und worin die Unterschiede zwischen imperativen und deklarativen Vorgehensweisen liegen. Dann gibt es einige News aus der Kubernetes Welt, etwa zum Operator-Pattern und K Native. Danach besprechen wir, wo Serverless Computing anfängt und aufhört und erklären, welche Vorteile und Komplexitäten ein Service Mesh mit sich bringt.
In der ersten Folge der neuen Serie rund um Cloud und modernes Software Deployment erklärt Alexander Thiel die wesentlichen Grundlagen von öffentlichen Cloud-Angeboten. Wir führen in grundlegende Konzepte wie Regions und Availability Zones ein und besprechen Basis-Terminologie wie SaaS, PaaS und IaaS. Alex und Nico berichten von den eigenen ersten Erfahrungen mit der Cloud und berichten von Migrations-Projekten. Anschließend gehen wir durch die wichtigsten Unterschiede zwischen einer Software Architektur auf eigener Hardware und in der Cloud und bewerten Vor- und Nachteile hinsichtlich Skalierbarkeit, Verfügbarkeit, Sicherheit, Ease-of-use und Kosten.
Die dritte Folge zu NLP wird noch angewandter: Zu Gast ist Tobias Wochinger von Rasa, mit dem wir gemeinsam einen Chat-Bot entwickeln möchten. Moderne Chat-Bots finden bereits vielfältig Verwendung, sowohl für die Beantwortung von Support Anfragen oder auch für das Buchen von Reisen müssen Sie aber den Kontext der Unterhaltung verstehen und Querverbindungen zwischen Informationen ziehen. Ein Chat-Bot vereinigt so zahlreiche NLP Herausforderungen wie Named-Entity-Recognition, Dependency Parsing und Intent Classification. Ganz praktisch erklärt mir Tobias, wie ich mit Rasa Stories und Actions anlege, um einen Techtiefen Chatbot zu bauen, der etwa Folgen zu einem Thema heraussuchen und abspielen kann. Ansonsten vermittelt die Folge einiges an generellem Wissen zu Chat-Bots und dem Design natürlicher Konversationen.
In der zweiten Podcastfolge der Reihe zu natürlicher Sprachverarbeitung ist Ines Montani zu Gast, Entwicklerin von SpaCy und Mitgründerin von Prodigy. Zunächst sprechen wir generell über den Umgang mit Sprache, warum dieser so komplex ist und wie die open source Bibliothek spaCy hier hilft. Dabei geht es um typische Aufgaben wie Part of Speech Tagging, Lemmatization und Named Entity Recognition genauso wie um geeignete Einsatz-Szenarien in der Industrie. Des Weiteren gibt Ines Einblicke in ihre tägliche Arbeit am open source Tool und erklärt, warum NLP Modelle auch ohne GPU trainierbar sein müssen und Prodigy kein Interesse an den Daten seiner Kunden hat. Letztlich geben wir einen Überblick über das wachsende spaCy Ökosystem, einen Rückblick auf die spaCy in Real Life Konferenz und Ines gewährt einen Ausblick in zukünftige Entwicklungen bei spaCy und Prodigy.
Malte Pietsch und Timo Möller sind zwei der drei Gründer des NLP Startups DeepSet. In Folge 19 besprechen wir gemeinsam die wesentlichen Grundlagen moderner Sprachverarbeitung. Bevor wir aber auf tiefe Neuronale Netzwerke und Bert eingehen, diskutieren wir einige der typischen Aufgaben wie Named-Entity-Recognition oder Text-Classification. Wir besprechen die Entwicklungen der letzten Jahre, die etwa Word-Embeddings, Attention basierte Algorithmen und Transformer hervorgebracht haben. Die beiden Gründer berichten aber auch von den Herausforderungen die sie bewältigt haben, als sie eine deutsche Variante des derzeit beliebten Bert-Netzwerks trainiert haben.
Jens Leitloff und Felix Riese berichten in Folge 18 von ihrer Forschung am “Institut für Photogrammetrie und Fernerkundung” des Karlsruher Instituts für Technologie. Mit der Bestrebung Nachhaltigkeit zu stärken erforschen die beiden etwa Verfahren, um Wasserqualität anhand von Satellitenaufnahmen zu bewerten oder die Nutzung landwirtschaftlicher Flächen zu kartografieren. Hierfür kommen unterschiedlichste Verfahren zum Einsatz wie Radaraufnahmen oder multispektrale Bilddaten, die mehr als die drei von Menschen wahrnehmbaren Farbkanäle erfassen. Außerdem geht es um Drohnen, Satelliten und zahlreiche ML-Verfahren wie Transfer- und Aktive Learning. Persönliche Erfahrungen von Jens und Felix im Umgang mit unterschiedlichen Datenmengen runden eine thematisch Breite und anschauliche Folge ab.
In Folge 17 erklärt Christian Rohmann, warum distributed tracing das Debugging von komplexen Anwendungen vereinfacht. Erst entwickeln wir ein Verständnis für Spans und Traces, um dann am Beispiel einer Web-Applikation ins Detail von distributed Tracing zu gehen. Außerdem werfen wir einen Blick auf Bekannte Implementierungen wie Zipkin und Jaeger, sowie auf die beiden Standardisierungsinitiativen OpenTracing und OpenCensus.
Folge 16 behandelt mit Kotlin mal wieder eine Programmiersprache. Daniel Bälz erklärt die Vorzüge der JVM-Sprache die mit Java kombiniert werden kann und first-class citizen für Android ist. Wir besprechen spannende Neuerungen wie Null-Safety und wie mit Kotlin nativer Betriebssystem-Code geschrieben werden kann. Außerdem erklären zahlreiche Sprach-Features die weit verbreitet sind, aber in Java bislang noch fehlten und jetzt mit Kotlin ermöglicht werden, etwa Default- und Named Arguments und Top-Level Functions.