# Inhalt Enthält alle Projekte/Kontexte in denen ich schon tätig war. Jedes Projekt/Kontext besteht aus einem Link bzw Quell, einer Beschreibung, den Herausforderungen des Projektes und den verwendeten Lösungen. ## Private Infrastruktur- und Backup-Automatisierung - Zeitraum: November 2018 bis Mai 2026, belegt durch eigene Commits im Repository. - Quelle: lokales Git-Repository `lokale-scripte`. - Kontext: Sammlung eigener Shell-, Batch- und PowerShell-Skripte zur Administration von Linux-, Server- und Arbeitsplatzumgebungen. - Herausforderungen: Zuverlässige Sicherung verteilter Daten, Redundanz durch externe Datenträger, plattformübergreifende Backup-Abläufe und Ausschluss nicht relevanter Daten wie Caches oder Papierkörbe. - Lösungen: Restic-Backups über SFTP; rsync-basierte Synchronisation; automatisierte Offsite-Backups; Geräteerkennung über Labels und UUIDs; VeraCrypt-gestützte Sicherungen unter Windows mit Robocopy; Wiederherstellungs- und Hilfsskripte. ## Nextcloud-Backup und Betriebsautomatisierung - Zeitraum: März 2020 bis Mai 2026, belegt durch eigene Commits im Repository. - Quelle: `lokale-scripte/linux/rsync-nextcloud/` und `lokale-scripte/boogie/`. - Kontext: Automatisierung der Sicherung und Wartung eigener Nextcloud-Instanzen. - Herausforderungen: Konsistente Sicherung einer laufenden Nextcloud-Instanz einschließlich Datenbanken; Zugriff auf Daten in Container- beziehungsweise Serverumgebungen; passwortlose und automatisierbare Serverkommunikation. - Lösungen: Umschalten des Nextcloud-Wartungsmodus während des Backups; rsync über SSH mit dediziertem Schlüssel; PHP-gestützte Datenbank-Dumps und Archivierung; Berechtigungsanpassungen nach der Synchronisation; Skripte für Nextcloud-Dateiscans und Aufräumarbeiten. ## PhotoPrism-Indexierungsautomatisierung - Zeitraum: Oktober 2025 bis Januar 2026, belegt durch eigene Commits im Repository. - Quelle: `lokale-scripte/bfds/root/photoprism-auto-index.sh`. - Kontext: Automatisierte, cron-taugliche Indexierung einer PhotoPrism-Installation in Docker. - Herausforderungen: Vermeidung paralleler Indexierungsläufe, zuverlässiges Aufräumen bei Fehlern oder Abbrüchen und begrenztes Log-Wachstum. - Lösungen: Sperrdatei mit Ablaufzeit; Signalbehandlung für `EXIT`, `INT`, `TERM` und `ERR`; zeitgestempelte Protokollierung und Begrenzung der Logdateigröße; Ausführung des PhotoPrism-Kommandos über `docker exec`. ## MediaWiki-zu-Obsidian-Migration - Zeitraum: August bis Oktober 2024, belegt durch eigene Commits im Repository. - Quelle: lokales Git-Repository `ScrapeMediawiki`. - Kontext: Python-Werkzeug zum vollständigen Abruf eines MediaWiki und zur Ablage der Inhalte als Markdown für Obsidian. - Herausforderungen: Vollständiger Abruf paginierter Wiki-Inhalte, Umwandlung von HTML und MediaWiki-Links in Markdown, Übernahme von Bildern und Revisionsinformationen sowie Abbildung von Seitenhierarchien. - Lösungen: Authentifizierte Abfrage der MediaWiki-API mit Fortsetzungsmarken; HTML-zu-Markdown-Konvertierung; Ablage von Seiten in Verzeichnissen anhand ihrer Titel; Download und Verlinkung von Bildern; Erzeugung eines Inhaltsverzeichnisses und von Metadaten zu Kategorien, Links und Revisionen; interaktive Nachbearbeitung von Wiki-Links. ## Obsidian-Backup mit rsync und Git - Zeitraum: März 2026, belegt durch eigene Commits im Repository. - Quelle: lokales Git-Repository `obsidian-backup`. - Kontext: Konfigurationsgesteuertes Backup eines Obsidian-Vaults auf einem TrueNAS-Server mit Dateisynchronisation und versionsierter Historie. - Herausforderungen: Portabler, sicherer Zugriff auf entfernte Daten; Vermeidung leerer Backup-Commits; reproduzierbare Einrichtung ohne Zugangsdaten im Skript. - Lösungen: Umgebungsdatei für Quelle, Ziel, SSH-Konfiguration und Commit-Präfix; Validierung der Konfiguration; rsync über SSH mit Schlüssel oder benutzerdefiniertem Remote-Shell-Kommando; automatische Initialisierung eines Git-Repositorys; Commit nur bei tatsächlich geänderten Daten. ## Deklarative NixOS-Heimserver-Konfiguration - Zeitraum: Januar bis November 2024, belegt durch eigene Commits im Repository. - Quelle: lokales Git-Repository `bfds-configuration.nix`. - Kontext: Modulare, deklarative Konfiguration eines NixOS-Servers für Dateiablage, private Cloud, Speicherverwaltung, Fernzugriff und Systemadministration. - Herausforderungen: Integration mehrerer Infrastrukturservices mit konsistenten Netzwerk-, Speicher- und Sicherheitsvorgaben; Bereitstellung von Dateiablagen für unterschiedliche Clients; automatisierbarer Betrieb und Upgrade-Prozess. - Lösungen: Aufteilung der NixOS-Konfiguration in eigenständige Module; Nextcloud mit PostgreSQL, nginx, HTTPS und ACME-Zertifikaten; ZFS-Datasets für die Dateiablage; Samba-Freigaben mit SMB2/SMB3 und erzwungener Signatur; Tailscale, OpenSSH und Cockpit für Fernzugriff und Administration; systemd-Service und -Timer für automatisierte Backup-Ausführung sowie automatische System-Upgrades. ## Website für den Fuß- und Radentscheid Dresden - Zeitraum: März bis Juli 2022, belegt durch eigene Commits im Repository. - Quelle: lokales Git-Repository `fuss-und-radentscheid-dresden`. - Kontext: Statische Website einer Dresdner Bürgerinitiative für sichere, klima- und fußverkehrsfreundliche Mobilität. - Herausforderungen: Wiederverwendbare, responsive Seitenelemente für unterschiedliche Informationsinhalte; einheitliche Einbindung von Navigation, Kontakt- und Social-Media-Links; lokal reproduzierbarer Build unter Windows und Linux. - Lösungen: Erweiterung der Jekyll-Website um ein Full-Width-Kartenlayout auf Basis von Liquid-Templates; Anpassung von Karten- und Kontakt-Styles mit Sass; Pflege von Navigation, Footer und Social-Media-Verlinkungen; Dokumentation der lokalen Ruby-/Bundler-Installation und des Jekyll-Entwicklungsservers für Windows und Linux. ## WLAN-gesteuerter LED-Rahmen - Zeitraum: September 2022 bis Januar 2023, belegt durch eigene Commits im Repository. - Quelle: lokales Git-Repository `VRKeting-LED-Rahmen`. - Kontext: Entwicklung eines ESP8266-basierten LED-Rahmens mit browserbasierter Steuerung von Farbe und Lichteffekten. - Herausforderungen: Ansteuerung adressierbarer LEDs, Parametrisierung von Farben und Effekten über ein Netzwerk sowie Trennung von Websteuerung und LED-Logik. - Lösungen: ESP8266-Firmware mit WLAN-Verbindung und HTTP-Routen; eingebettete HTML-/JavaScript-Bedienoberfläche; C++-Klassen zur Kapselung der LED-Ansteuerung und von Effekten wie Farbwechsel, Lauflicht und Regenbogen; Anbindung eines 80 LEDs umfassenden WS2811/WS2812-kompatiblen Streifens über die Adafruit-NeoPixel-Bibliothek. ## Rust-Ratespiel - Zeitraum: Oktober 2018, belegt durch eigene Commits im Repository. - Quelle: lokales Git-Repository `rust_guessing_game`. - Kontext: Konsolenbasiertes Lernprojekt in Rust. - Herausforderungen: Einlesen und Validieren von Nutzereingaben sowie Steuerung eines wiederholten Spielablaufs. - Lösungen: Erzeugung einer Zufallszahl mit dem Crate `rand`; Verarbeitung von Standardeingaben; Umwandlung in einen vorzeichenlosen Integer mit `match`-basierter Fehlerbehandlung; Vergleich der Werte über `Ordering`; Schleife bis zum korrekten Tipp; Cargo-Konfiguration und VS-Code-Task für `cargo run`. ## Threetris: 3D-Falling-Block-Prototyp - Zeitraum: November 2018, belegt durch eigene Commits im Repository. - Quelle: lokales Git-Repository `threetris`. - Kontext: Früher 3D-Prototyp eines Falling-Block-Spiels in Rust. - Herausforderungen: Aufbau einer 3D-Szene, zeitgesteuerte Bewegung eines Spielsteins, Verarbeitung von Gamepad-Eingaben und Begrenzung der Bewegung auf das Spielfeld. - Lösungen: 3D-Fenster, Kamera, Plattform und Würfel mit `kiss3d`; Zustandsmodell über eine `BrickPos`-Struktur; zeitgesteuertes Fallen mit `Instant` und `Duration`; Gamepad-Abfrage über `stick`; Begrenzung der X-, Y- und Z-Koordinaten durch eine eigene Funktion; erneutes Erzeugen eines Würfels beim Erreichen des Spielfeldbodens. ## ChipAcademy AR-Viewer-PackageBuilder - Zeitraum: 2020 - Quelle: lokales Unity-Arbeitsverzeichnis `ChipAcademy/ARViewer Package`, `ChipAcademy/BackendConnector` und `ChipAcademy/Backend/Scripts`. - Kontext: Unity-PackageBuilder für konfigurierbare AR-Lernszenen und deren Bereitstellung im AR Viewer. - Herausforderungen: Wiederverwendbare Konfiguration von 3D-Modellen und Interaktionen; plattformspezifische Bereitstellung von Szeneninhalten; Abbildung von Lern- und Prüfungsinteraktionen mit Text-, Bild-, Video- und Animationsmarkern. - Lösungen: Unity-Editor-Menüs zum Erzeugen von AssetBundles für Android, Windows und iOS sowie zum Export des Builder-Pakets; `ScriptableObject` zur Konfiguration von Modell, Markern und Cross-Section-Darstellung; Laufzeitlogik für Lern- und Prüfungsmodus, Schrittsequenzen, Videoanzeige und Zuordnungsinteraktionen; Drupal-8.7.7-Backend mit XML-Endpunkt für Szenenmetadaten, Bild- und Beschreibungsdaten sowie plattformspezifische AssetBundle-URLs. ## VR-Training für EnviaM-Umspannwerk - Zeitraum: Dezember 2019 bis Juli 2022 - Quelle: `vr-bits/EnviaM_Umspannwerk`. - Kontext: Unity-VR-Anwendung zur Vermittlung von Abläufen in einem Umspannwerk. - Herausforderungen: Geführte und prüfbare Arbeitsschritte mit unterschiedlichen Schwierigkeitsgraden; realistische Rückmeldung von Spannungszuständen; zuverlässige Teleportation und GUI bei Szenenwechseln. - Lösungen: Integration von SteamVR, OpenVR, Oculus und VRTK; StepManager-basierte Schrittsteuerung mit Tutorial- und Testmodus; Zustandsmodell für Schalterverriegelungen und Spannungsprüfung einschließlich LED- und Display-Rückmeldung; Fehlererkennung für falsche Verriegelungen; asynchrones Laden und Entladen von Szenen sowie Teleportation mit konfigurierbarem Bildschirm-Übergang. ## MMS AssetDownloader - Zeitraum: Juli bis August 2025 - Quelle: `vr-bits/AssetDownloader` und Telekom DevOps GitLab. - Kontext: Unity- und .NET-Standard-Bibliothek zum Herunterladen, Zwischenspeichern und Vorbereiten von 3D-Assets für eine Production-Manual-Anwendung. - Herausforderungen: Robuste asynchrone Downloads großer Dateien mit Fortschrittsanzeige, Abbruch und Wiederaufnahme; überprüfbare Cache-Konsistenz; Trennung einer Unity-agnostischen Kernbibliothek von der Unity-Anbindung; Unterstützung mehrerer 3D-Dateiformate. - Lösungen: HTTP-Streaming mit temporären Dateien und Range-Requests für wiederaufnehmbare Downloads; konfigurierbare parallele Download-Jobs, Fortschritts- und Fehlerereignisse sowie Dateicache mit Prüfsummen und Metadaten; Formatprüfung für glTF, GLB, USD und USDZ sowie Unity-Wrapper; testgetriebene Entwicklung mit NUnit, Moq, HTTP-Mocks und Arrange-Act-Assert-Tests für Download, Cache, Abbruch, Integrität, Import und Resume.