#39 Suchmaschinen-Optimierung (SEO)

avatar
Niklas Büllesbach
avatar
Nico Kreiling

In Folge 39 berichtet SEO-Experte Niklas Büllesbach von seinen Erfahrungen im Suchmaschinen-Umfeld. Natürlich gibt Niklas einige Tipps zur Optimierung der eigenen Seite, darüber hinaus werfen wir aber auch einen Blick auf die Funktionsweise von Suchmaschinen. Dabei starten wir bei AltaVista, besprechen die ersten On-Page (TF/IDF) und Off-Page (PageRank) Optimierungen und schließen bei aktuellen Entwicklungen sie Semantischer Suche, hochdimensionale A/B-Tests, Tools wie Google-Search-Console (ehemals WebMaster-Tools) und den Core Web-Vitals sowie Best Practices für sensible Bereiche: Expertise, Authority, Trust.

Darüber hinaus skizzieren wir die typsichen Verarbeitungsschritte einer Suchmaschine:

  1. Crawling: Der GoogleBot besucht eine Homepage und hangelt sich von hier in die verschiedenen Bereiche der Website. Bei großen Online-Portalen wie etwa Nachrichtenseiten kann das managen des sogenannten Crawl-Budgets eine Herausforderung darstellen.
  2. Rendering: Google Caffeein rendert die gecrawlte Websitenstruktur, um anschließend revelante Inhalte zu extrahieren. Bei nicht serverseitige gerenderten Websiten wie etwa Single-Page Applikations kann dies insbesondere auf Grund des zeitlichen Versatzes eine komplizierte Angelegenheit darstellen.
  3. Indexing: Die gespeicherten Inhalte werden in Shards unterteilt und auf verschiedene Daten-Center verteilt, die nach URL-Keywords (Reverse-Index) strukturiert werden.
  4. Ranking: Die Reihenfolge der zurückgelieferten Suche wird gerade in den letzten Jahren immer mehr durch semantische Suche bestimmt und mittels Neuronaler Netze und dem Google Knowledge Graph bestimmt.

Links:

#38 Aufbau eines Tech-Startups

avatar
Janosch Sadowski
avatar
Nico Kreiling

In Folge 38 ist Janosch Sadowski zu Gast und erzählt von seiner sehr erfolgreichen Gründung des Spiele-Startups Kolibri Games und dem vier jährigen steilen Wachstumskurs von der Uni-WG hin zu einem der heißesten Berliner Startups mit vielen Millionen Spielern.

Gemeinsam mit vier Kommilitonen vom Karlsruher Institut für Technologie (KIT) hat Janosch 2016 das Spiele-Startup Fluffy Flairy Games (später in Kolibri Games umbenannt) gegründet. Nach einem ersten misslungen Spiele-Konzept entdeckten die Studenten das “Idle-Games” Genre und prägten es mit dem Erfolgstitel Idle Miner Tycoon, dessen erste Version sie nach nur vier Wochen veröffentlichten. Mit viel Mut und dem Engagement das Spiel jede Woche etwas besser zu machen konnte das Startup bald erste Mitarbeiter einstellen und zog dann mit über 20 Personen zum Jahresbeginn 2018 geschlossen nach Berlin, um dort einfacher talentierte Mitarbeiter gewinnen zu können. Dort nahm das Wachstum dann noch weiter zu und das Führungsteam musste diverse Probleme lösen, von komplexer werdenden Kommunikationswegen bis hin zu kurzfristig Hardware Shopping Touren im Media-Markt nach einem bzw. zwei nächtlichen Einbrüchen.

Jannosch erzählt jedoch nicht nur die spannende Entwicklungsgeschichte des Startups, sondern teilt auch seine Einschätzung dazu, was eine gute Firmenkultur ausmacht und erzählt, worauf er bei Vorstellungsgesprächen besonders achtet.


Die Folge 38 hat leider aufgrund von kurzfristig notwenidger Ersatzhardware eine schlechtere Audio-Qualität als gewohnt, dafür bitte ich euch um Entschuldigung – das wird nächstes mal wieder besser!


Einige weitere Artikel rund um Kolibri-Games:

#37 Datenvisualisierung

avatar
Patrick Stotz
avatar
Nico Kreiling

Die Episode 37 behandelt mit Datenjournalist Patrick Stotz (Spiegel) die Visualisierung komplexer Sachverhalte. Zunächst tauschen wir uns über unser Verständnis einer guten Datenvisualisierung aus und nutzen hierfür Alberto Cairos’ fünf Eigenschaften-Modell: Truthful, Functional, Beautiful, Insightful und Enlightment. Anschließend geht es um Best Practices auf Grundlage langjähriger Forschung (siehe Graphical Perception von 1984), wie Informationen durch Positionen, Längen, Winkel, Flächen und Farben enkodiert werden sollten.

In der Folge werden sowohl klassische Darstellungsformen wie Balken, Torten, Linien und Streudiagramme mit Vor- und Nachteilen besprochen, wie auch eher unbekannte aber sehr mächtige Darstellungen durch Tree Maps, Violin- und Beeswarm-Plots, Sankey Diagramme, Heatmaps und Small Multiples.

Weitere Themen sind der Umgang und die geeignete Darstellung von Unsicherheiten, unterschiedliche Karten-Projektionen sowie geeignete Tools und Bibliotheken um Karten zu visualisieren.

Weitere Links:

Tools:

#36 NLP Update: Attention & Big Science

avatar
Nils Reimers
avatar
Nico Kreiling

Natürliche Sprachverarbeitung (NLP) war bereits vor 2 Jahren das Thema einer Techtiefen Podcast-Triologie. Seit dem hat sich aber sehr viel getan, insbesondere Transfer-Learning und die Transformer Technologie haben mächtige Modelle wie Bert oder GPT ermöglicht, es wird also höchste Zeit für ein Update. Wer zuerst noch einmal die Grundlagen auffrischen möchte, dem sei Techtiefen [NLP] Moderne Sprachverarbeitung empfohlen.

Experte dieser Folge ist Nils Reimers, NLP Forscher bei Huggingface und Autor der Sentence-Transformers Library. Er erklärt zunächst die wichtigen Neuheiten der vergangen Jahre wie etwa Transfer Learning, Attention, Transfomer und Neuheiten bei Tokenization Strategien. Anschließend sprechen wir darüber, wie man am besten aus einem Text variabler Länge Vektoren mit fixer Dimensionalität bestimmt. Diese so bestimmten Vektoren sind dann Grundlage für anspruchsvolle Aufgaben wie Text-Clustering, Semantische Suche oder Question-Answering Aufgaben. Auch besprechen wir, wie man einsprachige Modelle mit Hilfe eines Teacher-Student Verfahrens in fremde Sprachen übertragen kann.

Abschließend berichtet Nils vom Big Science Projekt, einem einjährigen Workshop bei dem 500 Personen aus über 50 Ländern mitarbeiten um gemeinsam auf einem französischen Supercomputer das größte bisher berechnete Sprachmodell zu berechnen. Anders als bei GPT wird sowohl das Modell, wie auch der Prozess dieses zu erstellen offen und transparent. Besonders ist dabei auch der Ansatz, spannende Forschungsfragen bereits vor dem Modelltraining zu formulieren.

Links:

#35 Entwicklertools erstellen

avatar
Florian Wetschoreck
avatar
Nico Kreiling

Techtiefen 35 wird etwas Meta und behandelt keine Technologie direkt, sondern tehmatisiert mit Florian Wetschoreck was es bedeutet ein Arbeitstool für andere Entwickler zu entwickeln. Florian ist Mitgründer von 8080Labs, die nicht nur an der Pandas-GUI bamboolib arbeiten, sondern auch Pakete wie pyforest und den ppscore veröffentlicht haben.

Florian erzhält zu Beginn, wie es zur Idee kam, eine einfachere, interaktive Bedienoberfläche für das Datentransformationstool Pandas zu entwicklen und wie er seine Masterarbeit nutzte, um die Idee zu verwirklichen. Dabei setzte er stark auf die Contextual Inquiry, eine Methodik bei der er den Nutzer zunächst über einen längeren Zeitraum passiv bei seiner Arbeit beobachtet und ihn erst im Anschluss dazu befragt, warum er Aktionen wie durchgeführt hat. Bei diesen Beobachtungen entstand auch die einfache Erkentniss, dass fehlende import Statements immer wieder ein Grund für einfache Fehler sind, welche zwar schnell gelöst werden können aber den Workflow unterbrechen. So kam es etwa zu pyforest, einer kleinen Bibliothek das fehlende Tools unter den gängigen Namenskonventionen import, sollten sie genutzt aber nicht importiert worden sein.

Neben Fragen zur Produktentwicklung geht es auch um Themen wie Monetarisierung und die Erkentniss, dass in der Regel nicht Entwickler selbst sondern ihre Unternehmen für ihre Tools zahlen, was dazu führt, das Bambolib 1.0 in der Basisversion frei verfügbar ist und nur für spezielle Features wie etwas Plugins die typischerweise im Unternehmen eingesetzt werden eine Lizenz notwndig ist.

Auch wenn der Podcast ein grobes Verständnis für datenzentrierte Arbeiten und Jupyter Notebooks vorraussetzt (hört in Folge 34 rein, wenn euch das noch nichts sagt), ist er vermutlich etwas weniger technisch und einacher zu konsumieren als andere Folgen. Ansonsten sei euch noch Florians Artikel „RIP correlation. Introducing the Predictive Power Score“ empfohlen, viel Spaß beim hören, lesen und ausprobieren.

#34 Jupyter Notebooks

avatar
Hans Fangohr
avatar
Harald Schilly
avatar
Nico Kreiling

Notebooks sind im Data Science Umfeld allgegenwärtig, in anderen Bereichen der Informatik aber vielleicht noch weitgehend unbekannt. Deshalb erklärt Nico mit seinen Gästen Hans Fangohr und Harald Schilly sowohl was Notebooks überhaupt sind und wie sich das Arbeiten damit anfühlt, geben aber auch zahlreiche Tipps und Empfehlungen für erfahrene Nutzer.

Notebooks können in vielen Szenarien eingesetzt werden. Durch die Kombination von Dokumentation und ausführbarem Code eignen sie sich natürlich hervorragend für Schulungen, aber auch für die Dokumentation von Projekten und explorative und forschungslastigen Arbeiten. Zwar existieren zahlreiche Implementierungen von Notebooks (etwa Googles Colab oder Apache Zeppelin), das Jupyter-Ökosystem bestehend aus den klassischen Notebooks, dem Lab sowie dem Hub. Sie eint die gemeinsame Entstehungsgeschichte basierend auf der IPython-Konsole sowie das gemeinsame, JSON-basierte Dateiformat iypnb.

Dieses Dateiformat ermöglicht einen flüssigen Übergang zwischen verschiedenen Notebook-Implementierungen, die Ausführlichkeit sowie die Klammer-Struktur erschwert aber Versionskontrolle und macht Merge-Requests unübersichtlich. Wir unterhalten uns ausführlich über verschiedene Ansätze, etwa zu alternativen Formaten wie RMarkdown und dem percent-format und deren Synchroni JupyText.

Kommentare

Wenn ihr nicht im Data Science / Python Umfeld unterwegs seid: Kanntet ihr Jupyter Notebooks bereits? Wenn ja, wofür habt ihr sie eingesetzt: Hinterlasst mir einen Kommentar

Links

Jupyter

https://jupyter.org/: Übersichtsseite Projekt Jupyter

JupyterHub: Server für Notebooks mit Benutzerverwaltung

JupyterLab: moderne Implementation, multiple Dokumente, etc.

NBConvert: konvertierung nach plain Text, Python, LaTeX/PDF, HTML

Alternative Jupyter

Colab: Notebooks von Google

Zeppelin: Apache Alternativ Projekt

CoCalc: Echtzeit Synchronisation von Notebooks, uvm

Deepnote: Notebooks für Data Science, etc.

Nteract: Desktop App

Notebooks in einer IDE: PyCharm, VSCode etc.

Magics

Einige unserer Lieblings-Magic-Befehle (hier ist eine ausführlichere Liste)

# Load an external Plugin
%load_ext autoreload

# Automatically re-import libraries
%autoreload

# Messen der Ausführungszeit einerZelle
%timeit

# Ausführen eines notebooks im Namensraum des aktiven Notebooks
%run my_helper.ipynb 

# Den Inhalt der Zelle in eine Datei Schreiben
%%writefile <filename>

Weitere Plugins und Links

Sublime Features – ohne die Nico nicht leben kann.

Nico’s Opinionated Guide für Notebook Versionierung

IPython Widgets: Haralds Empfehlung für Interaktivität in Notebooks

JupyText: synchronisation von/nach anderen Text Formaten

NBGrader: Kursverwaltung und automatisiertes Beurteilen von Notebooks von Studierenden mittels eingebetteter Tests

Jupyter{Book} HTML/PDF Publikationen basierend auf Notebooks

Beispiel für Einfuehrung in Python (mit Jupyterbook)

NBVAL zur Validierung von Notebooks (erstellt von Hans)

MyBinder: Ad-hoc ausführen von Jupyter Notebook instanzen, keine Persistenz

Jupyter Book – Zur Erstellung von Büchern in building beautiful, publication-quality books

Nbgrader: automatisches Benoten von Notebooks im Unterricht

OSCOVIDA Projekt: Ein Projekt zur Visualisierung von Covid Daten mittels Jupyter

#33 Postgres als DWH

avatar
Hans-Jürgen Schönig
avatar
Thomas Richter
avatar
Nico Kreiling

PostgreSQL (Postgres) gilt als die fortschrittlichste und mächtigste Open Source Datenbank. Dank breiter Unterstützung des SQL-Standards, langjähriger Stabilität und einer großen Community ist sie heute häufig die erste Wahl zur Speicherung tabellarischer Daten.

Hans-Jürgen Schönig arbeitet seit über 20 Jahren als Postgres Consultant und beschreibt im Podcast, wo die Stärken der relationalen Datenbank liegen und wie Transaktionssicherheit für DDLs das Handling großer Systeme erleichtert. Zudem erklärt er, wieso man Performance-Bottlenecks nicht in Load-Graphen sondern in den Abfragen selbst suchen soll und gibt Tipps um die Ausführungszeiten jener zu reduzieren.

Anders als analytische Datenbanken oder etwa Apache Parquet (Folge 31) ist Postgres zeilenorientiert. Dank der Erweiterung Postgres in vielerlei Hinsicht zu erweitern, bietet sich dennoch die Möglichkeit Postgres auch für analytische Workloads wie etwa im DWH-Umfeld einzusetzen. Thomas Richter hat hierfür (Swarm64) gegründet, ein Startup das Postgres um einen Columnstore Index erweitert und mit zusätzlichen Statistiken und Operatoren die Planung und Ausführungszeit von Abfragen reduziert. Thomas gibt im Podcast hierfür Einblicke wie Postgres Abfragen parallel ausführt ohne Konsistenz-Garantien zu verletzen.

Abschließend vergleichen wir gemeinsam die Performance von Postgres mit kommerziellen Konkurrenzprodukten und open source Alternativen wie Greenplum.

Links:

#32 AutoML

avatar
Marius Lindauer
avatar
Nico Kreiling

Marius Lindauer ist Professor an der Universität Hannover und einer der Köpfe hinter AutoML.org, einer der renommiertesten Forschungsgruppen auf dem Gebiet, die unter anderem Auto-sklearn, Auto-PyTorch und SMAC  entwickelt hat. Er erläutert uns, wie AutoML unterfahrenen Nutzern das Training von state-of-the-art Machine Learning Modellen ermöglicht und Data Scientist als mächtiges Werkzeug dienen kann.

Zunächst besprechen wir am Beispiel des Hyperparameter Tunings welche Verfahren existieren, um automatisch die richtigen Modellkonfiguration aus dem hochdimensionalen Parameterraum auszuwählen. Die statischen Grid- und Random Search Verfahren sind zwar gut parallelisierbar, jedoch sind evolutionäre und bayesian Verfahren durch die Nutzung eines intelligenten Meta-Learners wesentlich effizienter.

AutoML bedeutet jedoch nicht nur die Optimierung von Hyperparametern, sondern die integrierte Optimierung der gesamten Machine-Learning Pipeline, vom Feature-Preprocessing, über das Modelltraining bis hin zum effizienten Tuning und Stacking. Wir besprechen, wie AutoML von den ersten Ansätzen im Bereich Neuroevolution sich weiterentwickelt hat und mit Google AutoML seinen „ImageNet Moment“ erlebt hat. Wir besprechen zudem die aktuell gängigsten Frameworks: Auto-sklearn, Auto-PyTorch, AutoKeras, AutoGluon, TeaPot und AutoWeka.

Links:

#31 Effiziente Datenverarbeitung

avatar
Uwe Korn
avatar
Nico Kreiling

Uwe Korn ist Data Engineer und engagiert sich seit mehreren Jahren in verschiedenen Open Source Projekten, insbesondere Apache Parquet und Apache Arrow.

Apache Parquet ist ein spaltenorientiertes Speicherformat für tabellarische Daten, mit einer guten Schreib- und Leseperformance für Batch-Prozesse. Parquet erfasst dazu beim Schreiben die Datentypen und zahlreiche Metriken, um mit eingebauter Komprimierung die Dateigröße deutlich zu komprimieren. Dazu reden wir auch über andere Datenformate wie Avro, CSV, ORC, Hdf5 und Feather.

Apache Arrow ist ein In-Memory Speicherformat für Daten, welches die Brücke zwischen zahlreichen den Programmiersprachen schlägt. Dadurch wird es möglich, in C-Code, Java, Rust oder einer der anderen implementierten Sprachen auf die gleichen Daten zuzugreifen. Uwe erklärt uns, wie diese Sprach-Brücke funktioniert und wie Arrow zukünftig nicht nur zur Haltung sondern auch zur Verarbeitung von Daten eingesetzt werden kann.

Zum Abschluss befrage ich Uwe zu seinem Engagement im Open Source Umfeld. Wie hat er den Einstieg gefunden? Wie lässt sich Open Source mit Beruf und Privatleben vereinbaren? Und worauf sollte man achten, wenn man selbst ein Open Source Projekt unterstützen möchte?

Weiter Links:

#30 Fuzzing

avatar
Sergej Dechand
avatar
Nico Kreiling

Fuzz Testing (Fuzzing) ist eine dynamische Code-Analyse-Methodik, um absichtlich ungültige oder nicht erwartete Daten an ein lauffähiges Programm zu schicken mit der Hoffnung einen Fehlerfall oder Absturz zu produzieren. Das ist es damit hochwertigeren und fehlerfreien Software Code zu erzeugen. Anders als bei Unit-Tests werden beim Fuzz Testing Testfälle nicht manuell definiert, sondern von verschiedenen Mutationsalgorithmen zufällig und verhaltensbasiert erzeugt. Durch eine hohe Anzahl der so generierten Tests wird das Programm auch auf außergewöhnliche Eingabeparameter getestet, welche häufig Sicherheitsschwachstellen darstellen und daher Angreifern genutzt werden.

Mit Sergej Dechand rede ich über fehlerfreien und somit sicheren Softwarecode und welche Arten von Code-Analyse dazu wie beitragen können. Er erzählt von der Entwicklung des Fuzz Testing, welche bereits bei zufällig gewählten Lochkarten ihren Ursprung hat, zwischenzeitlich an Bedeutung verlor, derzeit aber sehr große Erfolge vorweisen kann. Dies liegt zum einen an technischen Weiterentwicklungen hin zu intelligenterem Fuzzing wie etwa durch AFL, welches das rein zufällige Fuzzing mit Kombination aus Instrumentierung und genetischen Algorithmen intelligenter macht. Fuzzing-Initiativen der großen Tech-Player wie z.B. OSS-Fuzz sorgen für Aufsehen, da sie immense Mengen bisher unerkannter Sicherheitslücken in Open Source-Software automatisiert aufdeckt. Sergej erklärt darüber hinaus auch, wie Fuzzing am besten instrumentiert wird, wohin die aktuelle Forschung zielt und wo derzeit die größten Probleme in der Umsetzung liegen.

Sergej ist Mitgründer von Code Intelligence, welches an einer Software Testing Plattform arbeitet mit der Vision Softwareentwicklern einen einfacheren Einstieg in moderne Testingmethoden u.A. modernes Fuzzing zu ermöglichen.

Links: