Files
my-knowledge/projects.md
T

268 lines
33 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.
## VRketing Website – WordPress-zu-Jekyll-Relaunch
- Zeitraum: Juli 2021 bis August 2022, belegt durch eigene Git-Commits.
- Quelle: lokales Git-Repository `#_Abgeschlossen/VRketing_webseite/Vrketing-Website`, WordPress-Exporte sowie die historische Repository-Kopie `VRketingWebsite_VRBITS_repo`.
- Kontext: Kompletter Relaunch der bestehenden WordPress-Unternehmenswebsite für den Kunden VRketing als statische Jekyll-Website. Die bisherige Website und ihr WordPress-Export dienten als Inhalts- und Strukturgrundlage; ausgewählte bestehende Seiten und Blogbeiträge wurden in das neue System übernommen.
- Herausforderungen: Ablösung einer CMS-basierten Website ohne Verlust relevanter Inhalte und bestehender Aufrufpfade; Aufbau eines anpassbaren, kundenkonformen Seitendesigns ohne WordPress-Theme; redaktionell pflegbare Seiten für unterschiedliche Leistungs-, Referenz-, Kontakt- und Bloginhalte; responsive Bedienbarkeit sowie mehrsprachige Inhalte.
- Lösungen: Entwicklung eines eigenen Jekyll-/Liquid-Templatesystems mit Seitenbasis, Header, Navigation, Footer und lokalisierter Inhaltsstruktur; Aufbau einer wiederverwendbaren Card-Architektur mit zwölf Layoutvarianten (unter anderem Bild-, Text-, Video-, Kontakt- und dreispaltige Karten) und gemeinsamen Komponenten für Buttons, Überschriften und Bilder; Nutzung von Jekyll-Collections und YAML-Front-Matter zur konfigurierbaren Zuordnung von 42 Card-Inhaltsdokumenten zu Seiten; Umsetzung responsiver Sass-Layouts, mobiler Navigation, Cookie-Consent, Kontaktformular und Blogdarstellung; Übernahme ausgewählter WordPress-Inhalte, darunter fünf Blogbeiträge, in Markdown; Pflege von Apache-`.htaccess`-Weiterleitungen für alte WordPress-URLs sowie Jekyll-basierte Sprach- und Startseiten-Redirects; Build- und Deployment-Konfiguration für Testing und Produktion mit GitHub Actions, AWS S3 und CloudFront.
## VISOR/OProc – Visualisierung offener Stadtentwicklungsprozesse
- Zeitraum: August 2017 bis Mai 2018, belegt durch eigene Commits in den drei Projekt-Repositories.
- Quellen: lokale Git-Repositories `/Users/rob/code/visor/oproc`, `/Users/rob/code/visor/in-transit` und `/Users/rob/code/visor/d3-oproc`.
- Kontext: BMBF/Prototype-Fund-gefördertes Civic-Tech-Projekt in Kooperation mit Forschenden der HTW Dresden zur maschinenlesbaren Beschreibung und interaktiven Visualisierung öffentlicher, insbesondere partizipativer Stadtentwicklungsprozesse.
- Teilprojekte: `oproc` enthält die Spezifikation eines offenen JSON-Datenmodells; `in-transit` implementiert den webbasierten VISOR-Prototyp; `d3-oproc` dokumentiert die Idee eines separaten Gantt-artigen Visualisierungsmoduls, blieb aber ein nicht implementiertes Konzeptgerüst.
- Entwicklung des OProc-Datenmodells, Aufbau der Timeline, Datenimport und -fluss; Zeitachsen, Zoom und Verschieben; Swimlanes und kollisionsarme Prozessanordnung; Filterung, Suche; Weiterentwicklung und visuelle Integration des Abhängigkeitsgraphen.
- Herausforderungen: Abbildung hierarchischer und miteinander verbundener Prozesse in einem offenen Datenformat; gleichzeitige Vermittlung von zeitlichem Verlauf, Abhängigkeiten und Beteiligten; lesbare Anordnung überlappender Prozesszeiträume; konsistente Interaktion und Filterung über mehrere gekoppelte Ansichten.
- Lösungen: URL-basiertes OProc-Modell mit JSON-Objekten und Referenzen; komponentenbasierte Single-Page Application mit Preact; zentraler Anwendungszustand und abgeleitete Filterdaten mit Redux; SVG-basierte Timeline mit dynamischer Zeitprojektion, Zoom, Pan, Swimlanes und Überlappungsbehandlung; gerichtetes Graphlayout mit Dagre; Datumsausgabe mit Moment.js; gekoppelte Hover-, Auswahl-, Such-, Filter- und Detailinteraktionen.
## Django-Lernprojekt mit Umfrage- und Blog-App
- Zeitraum: 20. bis 28. Juni 2018
- Quelle: `/Volumes/rob/code/django-first-app`.
- Kontext: Schrittweiser Aufbau einer Django-Webanwendung mit den Apps `polls` und `blog` zum Erlernen der zentralen Framework-Konzepte.
- Herausforderungen: Strukturierung von Projekt und Apps; Verknüpfung verschachtelter URL-Konfigurationen; Modellierung und Abfrage relationaler Daten; Verarbeitung von Formular-POSTs sowie Trennung von Darstellung und Anwendungslogik.
- Lösungen: Django-ORM-Modelle `Question` und `Choice` mit Fremdschlüssel und Migration; SQLite als Entwicklungsdatenbank; Registrierung der Modelle im Django-Admin; funktionsbasierte und generische `ListView`-/`DetailView`-Ansichten; Templates und Kontextvariablen; Namespaces, `get_object_or_404`, `reverse` und Redirect-after-POST für den Abstimmungsablauf.
## info.ngo – Django-CMS-Prototyp
- Zeitraum: Juli 2019, belegt durch die Projektdateien vom 30. Juli 2019.
- Quelle: lokales Projektverzeichnis `/Volumes/rob/code/django-cms/info.ngo`.
- Kontext: Prototyp einer redaktionell pflegbaren Website auf Basis von Django CMS 3.6 und Django 1.x.
- Herausforderungen: Aufbau frei editierbarer Seitenlayouts; Integration eines umfangreichen CMS-Plugin-Ökosystems; Navigation, Sitemap sowie konsistente Verwaltung von statischen Dateien und Medien.
- Lösungen: Django-CMS-Templates mit Toolbar, Menüs, Sekizai-Blöcken und Platzhaltern für Vollbreiten- und Sidebar-Layouts; CMS-Sitemap und Django-Admin; SQLite-Datenbank; Plugins für CKEditor-Text, Links, Bilder, Dateien, Spalten, Styles, Snippets, Google Maps und Videos sowie `django-filer`, `easy-thumbnails`, Treebeard und MPTT.
## info.ngo – Event-, Karten- und Datenplattform
- Zeitraum: Juli bis August 2019; Teamprojekt mit eigenen, durch Git belegten Beiträgen vom 30. Juli bis 27. August 2019.
- Quellen: Git-Repository `/Volumes/rob/code/info.ngo/info.ngo`, Django-Anwendung `/Volumes/rob/code/info.ngo/info.ngo/InfoNgo_django` und Wiederaufbaukopie `/Volumes/rob/code/info.ngo/rebuild-rob/InfoNgo_django`.
- Kontext: Gemeinsame Entwicklung einer Python- und Django-Plattform zur Gewinnung, Normalisierung, Speicherung, Filterung und kartografischen Darstellung von Veranstaltungs- und Stiftungsinformationen.
- Eigene belegte Beiträge: Abruf und Parsing der Stiftungssuche; Einlesen von Thunderbird-Mailboxen und Grundstruktur eines Mail-Parsers; Weiterentwicklung der Kalenderdaten-Auswertung; Dokumentation und Zusammenführung von Teamänderungen.
- Herausforderungen: Heterogene Websites, HTML-Seiten und E-Mail-Formate; unregelmäßige Datumsangaben; Vermeidung doppelter Events und Orte; Geokodierung und räumliche Darstellung; gemeinsames Filtern und Paginieren; Überführung eigenständiger Scraper in eine Webanwendung bei weiter möglicher Standalone-Ausführung.
- Lösungen: Requests, Beautiful Soup, `lxml`/`html5lib`, Python-`mailbox` und MIME-Verarbeitung sowie CSV-Ausgabe für die Datenerfassung; Django-2.1-Anwendung mit ORM-Modellen für Events und Locations, Migrationen, Many-to-many-Beziehung, eindeutigen Feldern und transaktionaler Importlogik; Factory-/Service-Layer zur JSON-Serialisierung und DB-Übernahme; Geokodierung mit Geopy und GeoJSON-Punkte mit `djgeojson`; Listenansicht mit `django-filter`, Datumsbereichsfilter und Paginierung; Leaflet-Karte mit zeitabhängig eingefärbten Material-Markern; Django-Templates, Authentifizierung, Crispy Forms, Bootstrap und jQuery; MySQL-Konfiguration mit SQLite-Sicherung sowie Python-3.7-/Conda-Umgebung und vorbereiteten Abhängigkeiten für PostgreSQL, Gunicorn, WhiteNoise, Heroku und S3-Speicher.
- Varianten: Die Wiederaufbaukopie enthält denselben grundlegenden Django-, App- und Service-Layer; die Hauptvariante erweitert sie um dynamische Popup-Inhalte, zeitabhängige Farbwerte und Material-Icons für Leaflet-Marker.
## 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.
## CARLA-VR – VR-Fahrschul-Demonstrator
- Zeitraum: Dezember 2021 bis Februar 2022, belegt durch eigene Git-Commits.
- Quelle: lokales Git-Repository `#_Abgeschlossen/CARLA-VR`; ergänzende Projektdokumentation „V(R)ahrschule“ und „Carla - VR - How To“.
- Kontext: Machbarkeits- und MVP-Demonstrator für eine VR-Fahrschule auf Basis des Open-Source-Selbstfahr-Simulators CARLA. Ziel war, ein Fahrzeug mit einem Lenkrad-/Pedal-Controller in einer simulierten Umgebung zu fahren und die Simulation in Echtzeit über ein VR-Headset zu erleben.
- Herausforderungen: Zusammenführung der heterogenen Komponenten CARLA, der dafür benötigten Unreal-Engine-Laufzeit, VR-Ausgabe, Python-Client-API sowie Logitech-G29-Lenkrad und Pedalen; Einarbeitung in den CARLA-Aufbau als Unreal-Plugin und dessen Client-Server-Architektur; Umkonfiguration einer primär für autonome Fahrfunktionen ausgelegten Simulation für eine interaktive, echtzeitfähige VR-Fahrdemonstration.
- Lösungen: Aufbau konfigurierbarer Startskripte für CARLA-Server und -Client, einschließlich Prüfung von Laufzeit- und PythonAPI-Pfaden, VR-Startparameter und koordiniertem Start; Start der CARLA-Unreal-Runtime im VR-Modus (`-vr`) und Anpassung des Python-Clients, sodass die VR-Ausgabe durch die Runtime erfolgt statt durch den Kamera-Stream des Clients; Konfiguration und Auswertung der Achsen von Lenkrad, Gas-, Brems- und Rückwärtspedal über Pygame sowie Übertragung der Eingaben als `VehicleControl` an CARLA; Anpassung des manuellen CARLA-Steuerungsclients für ein festgelegtes Fahrzeug, robuste Fahrzeugphysik und Fahrtelemetrie mit Kollisions-, Spur-, GNSS- und IMU-Sensoren.
## VR-Training für EnviaM-Umspannwerk
- Zeitraum: Dezember 2019 bis Juli 2022
- Quelle: `vr-bits/EnviaM_Umspannwerk`.
- Öffentlicher Showcase: https://www.vrbits.de/portfolio/virtuelle-trainingsanwendungen-enviam/
- 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 ein URL-basierter Dateicache mit MD5-Prüfsumme und Laufzeitmetadaten; 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; Konzeption und Anforderungserhebung für den universellen Downloader, detaillierte CacheManager-Spezifikation sowie tägliche Fortschritts- und Testdokumentation.
- Schnittstellenkontext: Der begleitende Telekom-MMS-Ordner enthält die OpenAPI-3.1-Spezifikation des Asset Service (v1.0.14). Sie definiert OAuth2-geschützte Verwaltung von Assets, Revisionen und Labels sowie binäre Download-Endpunkte. Die Unity-Bibliothek ist bewusst als generischer URL-basierter Download-, Cache- und Importclient abgegrenzt; sie implementiert nicht die Verwaltungs-, Such- oder Upload-Endpunkte des Service.
- Das projekt wurde durch mich mehr oder weniger komplett mittels KI erstellt unter der Maßgabe verlässlches TestDriven Design anzuwenden. Das hat sehr gut funktioniert.
## Telekom MMS AI Assist – Avatar-/Voice-Agent-Integration
- Zeitraum: mindestens Februar 2025 (Stand des vorliegenden Repository-Snapshots).
- Quelle: lokales Git-Repository `#_TelekomMMS/ai-assist_ai-assist-service`.
- Kontext: KI-Assistenz mit Unreal-basiertem Avatar und einem Python-basierten Voice-Agent-Service. Der Service stellt eine WebSocket-Schnittstelle bereit und verbindet konfigurierbar Speech-to-Text, Large-Language-Model und Text-to-Speech, einschließlich OpenAI-, Azure- und lokaler Dienste.
- Eigener Beitrag: Erstellung der Docker- und Kubernetes-Anweisungen zur Einbindung des Dienstes in die Telekom Open Digital Cloud (ODC); Ausrichtung der lokalen Compose-Umgebung und der Delivery-Konfiguration auf Container-Registry, versionierte Images und den Betrieb im Cluster.
- Abgrenzung: Die Unreal-Avatar-Umsetzung und die KI-Anbindung wurden von Kolleg:innen verantwortet.
- Herausforderungen: Einen Echtzeit-Sprachdienst mit mehreren konfigurierbaren KI-Diensten reproduzierbar lokal und in der ODC betreiben; externe Secrets sicher behandeln; die WebSocket-Kommunikation zwischen Container- und Clusterumgebungen nachvollziehbar testen.
- Lösungen: Python-3.11-Slim-Container mit Audio-Abhängigkeiten und Entrypoint; Docker-Compose-Setup mit getrenntem Testcontainer, externem gemeinsamen Netzwerk, Umgebungsdateien und optionaler Aufzeichnungsablage; GitLab-CI-Job zum Build und Push versionierter Images in die Telekom-Registry; dokumentierte lokale, Container- und Kubernetes-Cluster-Endpunkte sowie WebSocket- und Bot-zu-Bot-Tests.
## 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.
## TenneT 2GW Platform
- Zeitraum: Februar bis Oktober 2023, belegt durch eigene Commits im Repository.
- Quelle: lokales Git-Repository `Tennet2GWPlatform`.
- Öffentlicher Showcase: https://www.vrbits.de/portfolio/tennet-2gw-program/
- Kontext: Interaktive 3D-Webvisualisierung von TenneTs 2-GW-Offshore-Konverterstation. Sie erläutert die direkte 66-kV-Anbindung von Windparks, die Kombination aus Umspannwerk und HGÜ-Konverter sowie den Stromfluss bis zur Landanbindung in Deutsch, Englisch und Niederländisch.
- Herausforderungen: Hochwertige 3D-Visualisierung einer komplexen Energieinfrastruktur für Web und XR; intuitive Navigation zwischen Außen-, Innen- und Detailansichten; browserübergreifend lesbare, mehrsprachige Inhalte auf Desktop, Tablet und Mobilgeräten.
- Lösungen: Unity-Szene mit Needle-Engine-Export in eine Vite-/TypeScript-/Three.js-Webanwendung und glTF-Optimierung; eigene TypeScript-Komponenten für erweiterte Orbit-Kamerasteuerung mit Raycast-Fokus und weichen Kameraübergängen, Distanz- und Idle-Verhalten, Wasser- und Partikelanimationen; WebXR-Interaktion mit Select-/Squeeze-Ereignissen und Teleportation; HTML-/CSS-Content-Overlay mit Steuerung aus der 3D-Anwendung; responsive Layouts, Medienabfragen, dynamische Textgrößen und Querformat-Hinweise für verschiedene Bildschirmgrößen und Pixeldichten.
## Roche RMD Rotkreuz – WebGL-Training für Laborabläufe
- Zeitraum: September 2022 bis Januar 2025
- Quelle: Git-Repository `Roche-RMD-Rotkreuz`
- Nicht öffnentlicher Showcase: https://local.vr-bits.de/showcases/Roche-iPad/
- 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; Refactoring der Interactables und Software-Design-Patterns, Dokumentation des Lokalisierungs-Update-Prozesses für Kund:innen und interne Teams sowie Analyse und Behebung von UI-Fehlern wie doppelt öffnenden SidePanels.
## SaxoCellTraining – WebGL-Training für die Personalschleuse
- Zeitraum: Juni bis September 2024
- Quelle: lokales Git-Repository `SaxoCellTraining`.
- Öffentlicher Showcase: https://www.vrbits.de/portfolio/digitaler-tuersteher/
- Nicht öffentlicher Showcase: https://local.vr-bits.de/showcases/SaxoCell-iPad/index.html
- Kontext: Auf Basis der Roche-RMD-Erfahrung entwickelte Unity-WebGL-Anwendung für interaktive Schulungen in einer Personalschleuse. Die Anwendung kombiniert eine Übersichtskarte mit einem Trainingsbereich und vermittelt unter anderem Umkleide-, Schuh- und Handschuhabläufe.
- Herausforderungen: Übertragung der modularen Trainingsarchitektur auf ein neues Fachszenario; geführte und nachvollziehbare Teiltrainings mit Fortschritt; mehrsprachige, redaktionell pflegbare Inhalte; nutzbare Darstellung auf Desktop und iPad im Browser.
- Lösungen: Mindport-VR-Builder-Prozesse und `WorkplanData`-basierte Modulverwaltung mit lokalisierter Dropdown-Navigation, Erfolgsmarkierungen, optionaler sequenzieller Freischaltung und automatischem Start des nächsten Trainings; Addressable-Szenen und Lokalisierungsressourcen für das Nachladen von Trainings- und Sprachinhalten; Synchronisation der String-Tables mit Google Sheets einschließlich Rich-Text-Unterstützung; angepasste WebGL-Templates für Fullscreen, Seitenverhältnis, Ladeanzeige und Hinweise bei Hochformat; Entwicklung eines SceneGenerator-Zweigs mit konfigurierbarer Interactable-Auswahl, Workplan-Output und Prozessvorlagen, aus dem später das eigenständige TrainingGenerator-Paket hervorging.
## 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.
## 3D Vista Rundgang: Netzbooster Kupferzell
- Zeitraum: Oktober 2021
- Quelle: Jira-Tickets `VRBITSPROJ-30: Netzbooster BW` und `VRBITSPROJ-37: Netzbooster BW Nacharbeit`; öffentlicher Showcase: https://www.transnetbw.de/de/netzbooster-anwendung/
- Kontext: Mit der Agentur Die Wegmeister (DWM) umgesetzter interaktiver 3D-Vista-Webrundgang für TransnetBW.
- Herausforderungen: Verständliche Vermittlung von Infrastrukturinhalten in einem browserbasierten Rundgang sowie spätere Übernahme neuer Inhalte und Visualisierungen.
- Lösungen: Erstellung eines lauffähigen Web-Pakets für den Server mit fünf bis sechs Interaktionspunkten, Stock-Audio und Minimap; Nacharbeit mit neuer Übersichtskarte, Infopunkten zum Regenbecken und angepassten Renderings.
### **VRBITSPROJ-30: Netzbooster BW**
* **Zusammenfassung:** Entwicklung einer Webanwendung für TransnetBW (Kooperation mit DWM).
* **Details:**
* Umfang: 12 Tage.
* Features: 5-6 Interaktionspunkte, Stock Audio, Minimap, lauffähiges Web-Paket für Server.
* Projektende war für Ende Oktober 2021 geplant.
### **VRBITSPROJ-37: Netzbooster BW Nacharbeit**
* **Zusammenfassung:** Nacharbeiten am Netzbooster-Projekt.
* **Details:**
* Aufgaben: Programmierung einer neuen Übersichtskarte, Einarbeitung neuer Infopunkte (Regenbecken), Einarbeitung angepasster Renderings.
* Aufwand: 3 Tage Programmierung.
## 3D Vista Rundgang: Umspannwerk Conneforde
- Zeitraum: 2022-2024
- Quelle: Jira-Tickets `VRBITSPROJ-48: Conneforde Virtuelles Umspannwerk` und `VAA-197: Tennet Virtuelles Umspannwerk – 3D Vista Anwendung`; nicht öffentlicher Showcase: https://local.vr-bits.de/showcases/UWConneforde/index.htm
- Kontext: Für TenneT erstellte virtuelle Umspannwerkbegehung in 3D Vista; die Abstimmung und Aufgaben liefen über ein gemeinsames Teams-Projekt mit Die Wegmeister (DWM).
- Herausforderungen: Realbildmaterial und audiovisuelle Erläuterungen zu einer verständlichen virtuellen Begehung verbinden.
- Lösungen: Hauptverantwortliche Umsetzung der 3D-Vista-Anwendung als 360-Grad-Videoplayer mit eingebundenen 360-Grad-Bildern und 2D-Videos; Erstellung zusätzlicher Sprachfiles und szenenbezogener Untertitel; Dokumentation des Einsatzes von Realbild-Footage in 360-Touren sowie DeepSpeech-Bootstrapping als technische Grundlage für sprachgesteuerte Umspannwerk-Projekte.
### **VRBITSPROJ-48: Conneforde Virtuelles Umspannwerk**
* **Zusammenfassung:** 3D Vista Projekt für TenneT. Eine virtuelle Umspannwerkbegehung mit 360-Grad-Video.
* **Details:**
* Abrechnung: 7 Tage für Robert Wartenberg.
* Zusatzaufwand: 2 Stunden für ein zweites Sprachfile und 1 Stunde für Szenen-Untertitel.
* Beteiligte: Daniel Pots (Reporter), Frederik Hartmann (Assignee).
* **Kommentare:** Stefan Fibig merkte an, dass es sich um einen 360-Videoplayer unter Einbindung von 360-Grad-Bildern und 2D-Videos handelt.
### **VAA-197: Tennet Virtuelles Umspannwerk - 3D Vista Anwendung**
* **Zusammenfassung:** Erstellung einer 3D Vista Anwendung für TenneT.
* **Details:** Die Kommunikation und Tasks liefen über ein gleichnamiges Teams-Projekt mit der Agentur "Die Wegmeister" (DWM).
* **Beteiligte:** Robert Wartenberg (Assignee & Reporter).
## VRBits SpeakUp
- Zeitraum: 2025 bis 2026.
- Quelle: Jira- und Confluence-Nachweisen.
- Kontext: Technische Umsetzung, Audiointegration und Qualitätssicherung einer VR-Anwendung zur Kommunikations- und Interaktionsunterstützung.
- Herausforderungen: Verlässlicher Anwendungsstart und Umgang mit ID-Codes; konsistente Einstellungen und Benutzeroberflächen; stabile blickbasierte Interaktionen und Avatar-Verhalten; sprachabhängige Audioausgabe und Lokalisierung; Performance auf VR-Headsets.
- Lösungen: Implementierung der VR-ID-Eingabe und Startintegration; Überarbeitung von Settings- und Multiple-Choice-Panel einschließlich Indikatoren und Schriftgrößen; Stabilisierung der Gaze-Interaktion für Zahnrad und Pamphlet sowie Korrektur von NPC-Blickrichtungen, Kopfanimationen und Beinbewegungen; Behebung von Exceptions im `TrainerAgent`; Einbindung von System- und Master-Prompt in die Text-to-Speech-Ausgabe, sprachabhängiges Laden und Fehlerbehebung bei „No Translation Found“; Aufbau und Anbindung von String-Tables an Google Docs zur Lokalisierung; Hall-Effekte im Thought-Mode und Lautstärkeanpassungen.
- Qualität, Dokumentation und fachliche Integration: Anleitung zum Skalieren der zwölf Szenen und Dokumentation der Sprachausgabe; Testdurchläufe, unter anderem für Build `v1.0.58_dev`, mit Schwerpunkt VR-Headset-Performance; Vorschläge zur Einbindung von SpeakUp in universitäre Fragebögen.