Files
latex-bewerbung2/knowledge/projects.md
T

132 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
## Roche Prozessrallye
- Zeitraum: April bis November 2021
- Quelle: `vr-bits/RocheProzessRallye`.
- Kontext: Unity-Anwendung zur spielerischen Vermittlung von Prozessschritten in Produktion, Produktionskoordination, Ansatz, In-Process-Kontrolle, Abfüllung, Verpackung und Endfreigabe.
- Herausforderungen: Abbildung eines fortlaufenden Lernspiels mit aufeinander aufbauenden Stationen; Verwaltung von Versuchen, Erfolgen, Zeit und Budget; Navigation zwischen Weltkarte, Innenräumen und Minispielen sowie Einbindung von Lernvideos.
- Lösungen: Sieben Minispiele mit ereignisgesteuerter Freischaltung der nächsten Station; persistente Spiel-, Charakter-, Zeit-, Budget- und Ergebnisdaten sowie ein mit Paritätsbit geschützter Fortsetzungscode; Navigation über NavMesh mit additiv geladenen Innenraumszenen und vorab geladenen Szenen; Video-UI mit Streaming-URLs, Ladezustand, Seitenverhältnis- und Wiedergabesteuerung.
## Roche RMD Rotkreuz – WebGL-Training für Laborabläufe
- Zeitraum: September 2022 bis Januar 2025
- Quelle: Git-Repository `Roche-RMD-Rotkreuz`
- Kontext: Unity-WebGL-Anwendung für interaktive, modulare Schulungen zu Laborbereichen und -abläufen, darunter Chemieraum, Kühlraum, Schleusen, Flowbox, Freezer und Abfallmanagement.
- Herausforderungen: Wiederverwendbare Umsetzung zahlreicher Teiltrainings mit geführten 3D-Interaktionen; zuverlässige Persistenz und Auswertung von Trainingsfortschritten im Browser; Übergabe der Lernstände an das Cornerstone-LMS; wartbare mehrsprachige Inhalte und automatisierte Auslieferung der WebGL-Anwendung.
- Lösungen: Mindport VR Builder mit JSON-basierten Prozessen sowie eigene Komponenten und Editor-Werkzeuge zum Generieren von Teiltrainings und `ScriptableObject`-basierten Workplans; Zustandsverwaltung pro Trainingsmodul und Rücksetzen der Browserdaten über `PlayerPrefs`; C#-/JavaScript-Brücke mittels `Application.ExternalCall`, `postMessage` und eingebetteter Iframes zur Übernahme und Meldung erfolgreicher Teiltrainings sowie des Gesamtstatus an das LMS; SCORM- und anschließend AICC-HACP-Paketierung für Cornerstone; Anpassung von Unity-Localization-String-Tables anhand von CSV-Dateien; GitHub-Actions-Pipeline mit GameCI für WebGL-Build und Deployment.
## VR Builder Scene Generation / TrainingGenerator
- Zeitraum: Oktober 2024 bis September 2025
- Quelle: lokales Git-Repository `_vrbits\de.vrbits.vrbuilder.scenegeneration`.
- Kontext: Aus dem Roche-RMD-Projekt ausgegliedertes Unity-UPM-Paket zur wiederverwendbaren Erzeugung von 2D-Web-/Standalone- und VR-Trainingsszenen aus Lokalisierungs-CSV-Dateien. Das Paket liegt in Version 0.2.0 vor und verwendet Mindport VR Builder 5.3.2.
- Herausforderungen: Reproduzierbare Erzeugung vieler Teiltrainings samt Lernfortschritt aus einer Inhaltsquelle; konsistente Verknüpfung von Unity-Szene, Lokalisierung, Workplan und VR-Builder-Prozess; Unterstützung sowohl interaktiver Editor-Nutzung als auch automatisierter Erstellung und Prüfung.
- Lösungen: UI-Toolkit-basierter Unity-Editor-Wizard mit Auswahl von 2D- oder VR-Szenentemplates und String-Tables; CSV-Import in Unity Localization, Auswertung der Inhalts-Schlüssel für Teiltrainings und Infopunkte sowie Generierung der zugehörigen `StringTable`-Collections; Erzeugung von `ScriptableObject`-Workplans und VR-Builder-Prozessdateien aus JSON-Templates, einschließlich Eintrag des jeweils erzeugten Prozesses in die Runtime-Konfiguration; Paketstruktur mit getrennten Assembly Definitions, Samples und 2D-/VR-Templates; JSON-parametrisierter Batchmode-Aufruf über Unity CLI mit anschließendem WebGL-Build; NUnit-Regressionstests für UI- und Objektpositionen, Kamera, Addressables, VR Builder und Lightmaps.