Code und Tools

Info

Überblick Link to heading

Stabile und zitierfähige Versionen meiner Software können Sie entweder über die bequeme Subdomain code.seanfobbe.com oder durch einen direkten Link aufrufen.

Die aktive Entwicklung findet auf GitHub statt.

Interessierte können auch meine Linux-Konfiguration (z.B. dot files, package lists, install scripts) für Debian und Fedora in einem laufend aktualisierten GitHub repository einsehen und herunterladen.

Prinzipien Link to heading

Das Science in “Data Science” nehme ich besonders ernst. Ich bin daher ein starker Befürworter von Open Source Software und bemühe mich, meine Software-basierten Publikationen vollständig reproduzierbar zu veröffentlichen. Ich stehe voll hinter dem berühmtem Diktum von Buckheit und Donoho (2010: 385):

An article about computational results is advertising, not scholarship. The actual scholarship is the full software environment, code and data, that produced the result.1

Natürlich ist dies einfacher gesagt denn getan. Um diesem Ideal gerecht zu werden, veröffentliche ich alle meine Datensätze, den vollständigen Source Code (inklusive der verwendeten Softwarepakete und ihrer Versionsnummern) und stelle meine Ergebnisse mit stabilen Identifikatoren langfristig verfügbar auf Zenodo bereit, dem wissenschaftlichen Archiv des Kernforschungszentrums CERN.

Bevorzugte Open Source Tools Link to heading

Info
Meine Forschung wird nur möglich durch unzählige Open Source Tools, die ich glücklicherweise kostenlos herunterladen und nutzen kann. An dieser Stelle möchte ich ein paar meiner bevorzugten Tools erwähnen, einerseits als großes “Dankeschön” an die Entwickler:innen, andererseits für den Fall, dass sie jemand anderes ebenso nützlich findet wie ich.

Allgemein Link to heading

  • Der Firefox Web Browser ist mein Fenster in das World Wide Web (und, angesichts der Bedeutung des WWW, damit auch in die Welt). Seine Geschwindigkeit und Features sind vergleichbar mit denen von Chrome, aber Firefox wird Open Source von der gemeinnützigen Mozilla-Stiftung entwickelt und respektiert die Privatsphäre seiner Nutzer:innen.

  • Der Thunderbird E-Mail Client ist ein Open Source E-Mail Client, der die bequeme Verwaltung von mehreren E-Mail Accounts, Kalendern und Addressbüchern ermöglicht. Ich benutze Thunderbird seit fast zwei Jahrzehnten und er hat mir dabei immer treue Dienste geleistet. Thunderbird wird von einer Tochter der gemeinnützigen Mozilla-Stiftung entwickelt und schützt meine Privatsphäre deutlich besser als kommerzielle Alternativen.

  • Die Mastodon Microblogging Software für das Fediverse steht an der Spitze der Liste meiner Kommunikationswerkzeuge. Das Fediverse (ein dezentrales soziales Netzwerk) ist mein Lieblingsort im Internet, um mich mit Wissenschaftler:innen, Jurist:innen und der breiten Öffentlichkeit auszutauschen. Obwohl ich auf Linkedin solide Präsenz zeige, bevorzuge ich den Geist der Avantgarde und Offenheit der das Fediverse durchweht und freue mich täglich auf die vielen faszinierenden und einzigartigen Persönlichkeiten die sich dort niedergelassen haben. Oft poste ich auf Mastodon zuerst und bin dort viel gesprächiger als anderswo.

  • Die Signal Messenger App ist meine primäre Chat-Anwendung, über die ich Kontakt mit Freund:innen und Kolleg:innen halte. Es mag viele andere verschlüsselte Messenger Apps mit einem mehr oder weniger guten Ruf geben, aber ich halte Signal für die derzeit beste und vertrauenswürdigste Option.

  • Der KeepassXC Password Manager verwaltet die absurd hohe Anzahl an Accounts und Passwörtern, die das moderne Web seinen Nutzer:innen abverlangt. Ich bin mir nicht sicher wieviele Accounts ich derzeit habe und ich traue mich gar nicht mehr nachzuzählen.

  • Der DuD-Poll Terminfinder ist eine zero-footprint, host-proof and Open Source Anwendung, über die ich Meetings mit vielen Teilnehmer:innen koordiniere. Der Dienst wird von der Technischen Universität Dresden angeboten und wurde durch ein Konsortium europäischer Universitäten entwickelt.

Betriebssysteme Link to heading

  • Die Debian and Fedora Distributionen des Linux Betriebssystems sind hervorragende Grundlagen für meine alltägliche und wissenschaftliche Arbeit mit Computern. Ich neige allerdings mehr zur Nutzung von Debian, je mehr ich programmiere. Debian ist außerordentlich stabil, die Support-Zeiträume von Fedora (maximal 12 Monate) sind mir zu kurz geworden und zu viele Dinge gehen bei Updates des Betriebssystems kaputt. Brandaktuelle Software ist in Docker-Containern besser aufgehoben. Fedora bleibt aber eine gute Alternative für reguläre Nutzer:innen.

  • Sie können meine aktuelle Linux Basis-Konfiguration (u.a. Dot Files, Package Listen und, Installations-Skripte) für Debian and Fedora via GitHub herunterladen. Für spezielle versionskontrollierte Konfigurationen sehen Sie bitte in den Docker Files der jeweiligen Projekte nach.

  • Docker und Docker Compose sind der Kern meiner reproduzierbaren Workflows, denn sie erlauben mir die Versionen des Betriebssystems, der System-Bibliotheken, von R und der R Packages (via Rocker) einzufrieren.

  • Das Rocker Project (Boettiger and Eddelbuettel 2023) ist meine erste Anlaufstelle, wenn ich versionskontrollierte Docker Images für R benötige. Normalerweise benutze ich die einfache “r-ver” Variante als Basis für meine eigenen Images.

Schreiben (Editor und Literaturverwaltung) Link to heading

Bemerkung
Werfen Sie einen Blick in den Plain Person’s Guide to Plain Text Social Science (Healy 2019) um herauszufinden, ob ein Plaintext-basierter Workflow auch Ihnen gefallen könnte!
  • Emacs (GNU Project 2023) ist mein Haupt-Editor für alle ernsthaften Schreib- und Programmierprojekte. Ich benutze fast keine anderen Editoren mehr.

    • Emacs Speaks Statistics (ESS) (Maechler et al 2021) benutze ich fast täglich als Emacs-Erweiterung für die Programmiersprache R.
    • AUCTeX (GNU Project 2023) ist die Emacs-Erweiterung der Wahl für LaTeX. Der Funktionsumfang ist gewaltig und ich schätze AUCTeX sehr.
    • markdown-mode (Blevins 2017) hilft mir dabei, Markdown in Emacs zu bearbeiten.
    • Polymode erlaubt die Kombination mehrerer Emacs Major Modes. Ich nutze ihn primär dazu um R Markdown-Dateien (.Rmd) zu bearbeiten.
  • Jabref verwaltet seit Jahren treu meine Literatur. Ich schätze an Jabref ganz besonders, dass es die Datenbank nativ im BibTeX-Standard speichert und verwaltet, was mir eine einfache Integration mit LaTeX ermöglicht. Auch lässt sich die BibTeX-Datenbank angenehm aus Emacs heraus durchsuchen und bearbeiten.

Schreiben (Markup und Layout) Link to heading

  • Die Markdown Syntax (Gruber and Swartz 2004) eignet sich hervorragend für Notizen, einfache Dokumente und als Grundlage für Literate Programming mit R Markdown.

  • Die {rmarkdown} (Allaire et al 2023) und {knitr} (Xie 2021) R Packages sind meine bevorzugten Lösungen für reproduzierbare automatisierte Berichte und Literate Programming Workflows.

  • LaTeX (Knuth 1978; Lamport 1984) ist eine Auszeichnungssprache für die Dokumentenerstellung und meine erste Wahl für das Schreiben und Layouten anspruchsvoller Dokumente. LaTeX wirkt auf den ersten Blick einschüchternd, aber Wikibooks bietet eine gute Einführung mit Nachschlagewerk.

Data Science (Allgemein) Link to heading

Bemerkung
Bei der Nennung von R Packages folge ich der Konvention die Namen in geschweifte Klammern zu setzen. Beispiel: {data.table}
  • Die Programmiersprache “R” (R Foundation for Statistical Computing 2023) ist das Herzstück meines Data Science Workflows. Ich schreibe fast alle anspruchsvollen mathematischen und datenbezogenen Projekte in R. Statistisches Programmieren mit R ist fantastisch, egal was die Python Leute sagen.

  • Die Modellsprache “Stan” (Stan Development Team 2023) für Bayessche Statistik ist ein faszinierendes Werkzeug und ich beschäftige mich aktuell viel damit. Ich bin sehr unzufrieden mit der traditionellen frequentischen Statistik und es wirkt, als ob die Bayessche Herangehensweise überzeugende Lösungen für viele Probleme bietet, mit denen ich in meiner Arbeit konfrontiert bin. Es gibt eine Reihe an hervorragenden Einbindungen für R und andere Programmiersprachen.

  • Das unglaublich schnelle und stabile R Package {data.table} (Dowle and Srinivasan 2023) ist Teil jedes (!) Projekts an dem ich arbeite. Die Geschwindigkeit ist wirklich außergewöhnlich, sehen Sie sich die Benchmarks an. Die Syntax ist zudem kurz und präzise, was faulen Programmierern wie mir sehr entgegenkommt.

  • Das {testthat} R package (Wickham 2023) benutze ich mehr und mehr, je mehr Erfahrung ich als Programmierer sammle. Automatisierte Tests sind sehr wichtig, um sicherzustellen, dass die während dem Programmieren getroffenen Annahmen später nicht zu Überraschungen führen. Überraschungen in der Softwareentwicklung enden nie gut.

Data Science (Workflows) Link to heading

  • {targets} (Landau 2023) ist eines meiner Lieblings-Packages für R. Es zwingt mich meine Daten Pipelines in verschiedene Komponenten aufzuteilen, welche dann einzeln in voneinander getrennten Prozessen ausgeführt werden. Für jede erfolgreich ausgeführte Komponente werden die Ergebnisse im Anschluss gespeichert. Bei einer erneuten Ausführung der Pipeline werden nur die Teile berechnet, bei denen sich der Code, die Daten oder die Ergebnisse geändert haben. Die Zeitersparnis ist immens.

  • {tarchetypes} (Landau 2023) enthält viele weitere nützliche Funktionen für die Arbeit mit {targets} Pipelines. Sehen Sie sich das Package einmal an, sobald Sie einen funktionierenden {targets} Workflow gebaut haben!

  • {future} (Bengtsson 2023) ist ein exzellentes Framework zu Parallelisierung von R Code. Ich benutze (fast) nichts anderes mehr und auch {targets} integriert {future} für die Parallelisierung. Das {future} Package erlaubt die Nutzung verschiedener Frontends und Backends, um die Parallelisierung an die eigenen Bedürfnisse anzupassen. In der Regel nutze ich die base {parallel} oder {callr} Backends und die {future.apply} Frontend API. Im Überblick der Futureverse Packages finden Sie weitere Ideen und Ratschläge.

  • {future.apply} (Bengtsson 2023) stellt (fast) identische Ersatz-Funktionen für die parallelisierten Funktionen aus base-R zur Verfügung, beispielsweise future.lapply(). Ich benutze diese Funktionen sehr oft.

Data Science (Textanalyse) Link to heading

  • Das {quanteda} (Benoit et al 2023) Framework für die quantitative Analyse von Texten ist die Grundlage für alle meine Natural Language Processing (NLP) Workflows. Es ist sauber, strukturiert, gut dokumentiert und arbeitet gut mit vielen anderen NLP Packages zusammen. Beachten sie, dass viele Standard-Funktionen aus früheren quanteda-Versionen mittlerweile in Zusatz-Packages wie {quanteda.textstats}, {quanteda.textmodels} und {quanteda.textplots} ausgelagert wurden.

  • Das {stringi} (Gagolewski 2023) R package ist eine Schlüsselkomponente von quanteda. Für die low-level Verarbeitung von Strings nutze ich es auch direkt sehr oft.

Data Science (Web Scraping) Link to heading

  • Das {rvest} (Wickham 2022) R Package bietet normalerweise alles Nötige um statistische HTML-Seiten zu scrapen.

  • Besondere schwere Fälle benötigen {RSelenium} (Harrison 2022), welches den headless Selenium Browser startet, der in etwa alles tun kann, was ein Mensch auch tun kann — nur automatisiert. Meistens benutze ich RSelenium um Javascript-Seiten zu rendern, die dann mit {rvest} weiterverarbeitet werden.

  • {xml2} (Wickham, Hester and Ooms 2023) ist nützlich um XML-Dateien zu parsen. XML kommt in meiner Arbeit immer wieder einmal vor, beispielsweise als Inhaltsverzeichnis und Syntax der Dateien von https://www.gesetze-im-internet.de, der primären Quelle für Bundesgetze und -verordnungen der Bundesrepublik Deutschland.

Data Science (Visualisierung) Link to heading

  • {ggplot2} (Wickham et al 2023) ist vermutlich eines der besten Visualisierungs-Tools überhaupt für Daten. Es erlaubt Schicht-für-Schicht die Erstellung wunderschöner Grafiken und bietet eine gewaltige Anzahl an Erweiterungen mit neuen Funktionalitäten.

  • {ggraph} (Pederson 2022) ist eine Erweiterung von {ggplot2} für die Visualisierung von Netzwerken/Graphen. Ich benutze fast immer {ggraph} wenn ich formale, publikationsfertige Netzwerkdiagramme erstelle.

  • Gephi (Bastian et al 2022) ist ein hervorragendes graphisches (GUI) Tool für die Visualisierung von Netzwerken und ist sehr einfach zu nutzen. Ich nutze Gephi meist um in Netzwerken ein wenig herumzustochern und ein Gefühl für sie zu bekommen. Formale Analysen führe ich eher mit {igraph} und {ggraph} durch. Nichtsdestotrotz gibt es viele Forscher:innen, die nicht programmieren können/wollen und erfolgreich Gephi als primäres Werkzeug für die Netzwerkanalyse benutzen.

Website Link to heading

  • Das {blogdown} R package (Xie, Thomas and Hill 2021) hat diese Website erstellt. Die gesamte Seite ist in Markdown geschrieben und wird dann kompiliert.

  • Der Hugo Website Builder (Hugo Authors 2023) ist das Fundament von {blogdown} und übernimmt den Großteil der Arbeit bei der Kompilierung.

  • Coder (de Prá 2021) ist das Theme dieser Website.

  • KaTeX render mathematische Gleichungen und Symbole (Eisenberg and Alpert 2023).

  • Mermaid.js ist eine Javascript Library, die Flow Charts und UML-Diagramme rendert.


  1. Der ursprüngliche Slogan wurde in Buckheit und Donoho 1995 als Paraphrase einer Idee des Geophysikers Jon Claerbout veröffentlicht. Das exakte Zitat stammt allerdings aus Donoho 2010. Siehe: Buckheit, Jonathan B and David L Donoho. 1995. ‘WaveLab and Reproducible Research’. In Wavelets and Statistics, edited by Anestis Antoniadis and Georges Oppenheim, 55–81. New York: Springer, 1995. Siehe auch: Donoho, David L. 2010. ‘An Invitation to Reproducible Computational Research’. Biostatistics 11 (3): 385–388. ↩︎