#29 Recommender Systems

avatar Marcel Kurovski
avatar Nico Kreiling

Recommendations, also Empfehlungen, sind mindestens so alt wie das Orakel von Delphi und der Hauptbestand zahlreicher Dienstleistungsberufe. Recomendation Systems hingegen sind ein spezieller Bereich des Information Retrieval und erst durch Amazon, Netflix und Spotify wirklich populär geworden. In dieser ausführlichen Techtiefenfolge erklärt Marcel Kurovski mit zahlreichen Beispielen das wesentliche Vorgehen dieser “Informationsaggregationsmaschinen”, welche von Collaborative Filtering über Matrixfaktorisierung bis zu Deep Learning reichen. Wir sprechen über die unterschiedlichen Stufen von Personalisierung und worin der Unterschied zur Suche besteht. Die Vor- und Nachteile von Relevanz als wichtigste Metrik für Recommender Systems kommen zur Sprache, genauso wie alternative Metriken wie Diversität, Novelty oder Robustheit, welche gerade zuletzt größeres Interesse erfahren. Marcel erzählt zudem einige Anekdoten aus der Geschichte der Recommender Systems und gibt einen Ausblick auf aktuelle Forschung und zukünftige Entwicklungen.

Links:

[Dev-Basics] CI / CD

avatar Sebastian Meßingfeld
avatar Nico Kreiling

Continous Integration (CI) und Continous Deployment (CD) sind die Verbindung der unterschiedlichen Schritte im Entwicklungsprozess. Mit entsprechenden CI/CD Pipelines lässt sich Quellcode schnell und automatisiert testen, bewerten, bauen und veröffentlichen. Mit Sebastian Messingfeld spreche ich darüber, wieso entsprechende Pipelines nicht nur ein Zeit- sondern auch ein Qualitäts- und Zufriedenheitsgewinn sind. Wir gehen gemeinsam durch die unterschiedlichen Schritte einer solchen Pipeline, von einfachem Quellcode Liniting bis hin zum Release im App Store. Dabei gehen wir auf die Besonderheiten unterschiedlicher Plattformen (iOS, Windows, Embedded…) ein und geben einige unserer persönlichen Erfahrungen Preis, um den Workflow individuell auf die persönlichen Anforderungen zuzuschneiden. Außerdem sprechen wir über die zahlreichen unterschiedlichen technischen Lösungsoptionen, von integrierter CI im Versionskontrollsystem über klassische CI Server wie Jenkins bis hin zu gehosteten Angeboten wie etwa Bitrise, CircleCI oder Azure DevOps.

Links:

[Dev-Basics] Testing

avatar Rene Lengwinat
avatar Nico Kreiling

Tests gehören inzwischen zur modernen Software Entwicklung genauso wie sauberer Quellcode und Versionskontrolle. Rene Lengwinat erklärt in Folge 27 von Techtiefen warum Tests Quellcode nicht nur fehlerfreier und wartbarer machen, sondern auch zu einem besseren Design führen. Gemeinsam gehen wir durch die Test-Pyramide und besprechen die Vorteile von Unit-, Integrations- und End2End Tests sowie ihren favorisierten Einsatzzweck. Rene erklärt mir außerdem, wann testgetriebene Entwicklung wirklich praktikabel ist und was es mit Fuzzy Testing auf Sicht hat. Darüber hinaus wirft er einen Blick auf aktuelle Entwicklungen im Bereich Softwaretests, die Bedeutung von gutem Monitoring und Chaos Engineering.

Links:

[Dev-Basics] Git

avatar Stefan Lengfeld
avatar Nico Kreiling

Der Umgang mit git oder einem anderen Versionskontrollsystem gehört zum Alltag von so ziemlich jedem Entwickler. git hat als dezentrales System gegenüber SVN oder Subversion zahlreiche Vorteile, ist jedoch auch sehr umfangreich und bietet auch erfahrenen Nutzern nach Jahren der Übung immer wieder neue Tricks, um sich noch effizienter in den persönlichen oder den Workflow des Teams einzufügen.

Mit Stefan Lengfeld spreche ich über das beliebte Versionskontrollsystem, seinen Ursprung und seinen generellen Aufbau, um einmal wirklich zu verstehen, was bei Befehlen wie `git checkout` unter der Shell passiert. Anschließend gehen wir auf die Kollaboration im Team ein, welche verschiedene Branching-Strategien notwendig macht. Stefan und ich berichten außerdem aus unserem Projektalltag und gehen dabei etwa auf das Develope-Master-Pattern ein und wie wir mit Hot-Fixes und Releases umgehen. Und zum Abschluss verraten wir euch dann noch unsere liebsten git Befehle, die unseren Alltag vereinfachen.

Links

[Dev-Basics] Clean Code

avatar Torsten Flatter
avatar Nico Kreiling

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.

Links: 

Über “Uncle Bob”

SOLID-Prinzip

[cloud] Private Cloud mit OpenStack

avatar Nils Domrose
avatar Nico Kreiling

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.

[cloud] K8s, Serverless, Service Mesh

avatar Christoph Petrausch
avatar Johannes Scheuerman
avatar Nico Kreiling

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.

[cloud] Public Cloud

avatar Alexander Thiel
avatar Nico Kreiling

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. 

[NLP] Rasa

avatar Tobias Wochinger
avatar Nico Kreiling

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.

Links:

[NLP] SpaCy

avatar Ines Montani
avatar Nico Kreiling

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.

Links: