Files
my-knowledge/technologies.md
T

483 lines
34 KiB
Markdown

# Inhalt
Enthält die Technologien mit denen ich bereits gearbeitet habe.
Jede Technologie wird einzeln genannt und enthält das Level der verwendeten Komplexität, den Einsatz und das dazugehörige Projekt.
## Softwareentwicklung und Extended Reality
### c# in Gameengine Unity3D
- Komplexität: Komplexe, interaktive Anwendungen und plattformübergreifende Produktentwicklung.
- Einsatz: Konzeption, Entwicklung und Betreuung von mehr als 20 VR-, AR- und Flat-3D-Anwendungen; Multi-Target-Entwicklung aus gemeinsamen Unity-Codebasen für XR, Web und Mobile; Client-Server-Kommunikation und Performance-Optimierung.
- Zusätzlicher Einsatz: Konfigurierbare AR-Lernszenen mit Lern- und Prüfungsmodus, Schrittsequenzen, Medienanzeige und Zuordnungsinteraktionen im ChipAcademy AR-Viewer-PackageBuilder.
- Kontext: vrbits GmbH, seit 2019, sowie ChipAcademy AR-Viewer
- Zusätzlicher Einsatz: Implementierung von ID-Eingabe, Settings- und Multiple-Choice-UI, blickbasierten Interaktionen, Avatar-Fehlerbehebungen und `TrainerAgent`-Stabilisierung in VRBits SpeakUp, 2025 bis 2026.
### OpenXR, Meta Quest SDK, Mindport VR Builder und Needle Engine
- Komplexität: Integration unterschiedlicher Plattform-SDKs und XR-Werkzeuge.
- Einsatz: Entwicklung von VR-Trainings, 3D-Visualisierungen und virtuellen Showrooms für unterschiedliche Zielsysteme.
- Kontext: vrbits GmbH.
- Zusätzlicher Einsatz: JSON-basierte VR-Builder-Prozesse für modulare WebGL-Trainings sowie eigene Erweiterungen zum Laden, Generieren und Verwalten von Teiltrainings und Workplans.
- Zusätzlicher Einsatz: Needle-Engine-Export einer Unity-3D-Szene für eine interaktive Web- und WebXR-Visualisierung mit Teleportation und Controller-Ereignissen.
- Projekte: TenneT 2GW Platform, Februar bis Oktober 2023; Roche RMD Rotkreuz, September 2022 bis Januar 2025; SaxoCellTraining, Juni bis September 2024; sowie das daraus ausgegliederte UPM-Paket VR Builder Scene Generation / TrainingGenerator, Oktober 2024 bis September 2025.
### CARLA, Unreal Engine, Pygame und Logitech-G29-Integration
- Komplexität: Realtime-Integration einer Fahrsimulation, einer Unreal-Engine-Runtime, VR-Ausgabe und physischer Fahreingabe.
- Einsatz: Aufbau eines VR-Fahrschul-Demonstrators auf Basis von CARLA; Einarbeitung in die CARLA-Architektur mit Unreal-Plugin sowie Server- und Python-Client-API; Aktivierung der Unreal-basierten CARLA-Runtime im VR-Modus und Anpassung des manuellen Clients für den Betrieb ohne eigenen Kamera-Stream; Konfiguration und Auswertung der Logitech-G29-Achsen für Lenkrad, Gas, Bremse und Rückwärtsgang mittels Pygame; Übertragung der Eingaben an `carla.VehicleControl` und Anbindung von Fahrtelemetrie.
- Projekt: CARLA-VR, Dezember 2021 bis Februar 2022.
### 3D Vista Virtual Tour Pro
- Komplexität: GUI-basiertes Autoring interaktiver 360-Grad-Rundgänge mit rudimentären JavaScript-Erweiterungsmöglichkeiten.
- Einsatz: Erstellung browserbasierter virtueller Begehungen mit 360-Grad-Video und -Bildmaterial, 2D-Videos, Interaktionspunkten, Übersichtskarten beziehungsweise Minimap, Audio und Untertiteln; Veröffentlichung als Web-Paket.
- Projekte: Netzbooster Kupferzell für TransnetBW (2021) und Umspannwerk Conneforde für TenneT (2022).
- Zusatzwissen: Für Pico 4 können Projekte über die 3D-Vista-VR-App veröffentlicht und im Verzeichnis `/3dvista/pico` bereitgestellt werden; im VR-Modus sind nur 3D-Marker sichtbar. Die JavaScript-API ermöglicht unter anderem die Steuerung von Komponenten, Hotspots und Untertiteln.
#### **3DVista Projekt auf VR-Brille Pico4**
* **Anleitung:**
1. VR-Button in 3DVista hinzufügen.
2. Im Publish-Dialog "Pico" selektieren.
3. 3DVista VR App APK auf Pico4 installieren.
4. Projektordner auf der Brille unter `/3dvista/pico` ablegen.
* **Hinweis:** 2D-UI wird in VR nicht angezeigt, nur 3D-Marker.
#### **3DVista - Virtual Tour Pro (VTP) Javascript Reference**
* **Optimierung:** Videos für die UI sollten speziell optimiert sein.
* **Code-Beispiele:**
* Komponenten steuern: `this.getComponentByName('name').set('visible', true);`
* Hotspots aktivieren/deaktivieren: `this.getPanoramaOverlayByName(...).set('enabled', true);`
* Untertitel dynamisch setzen: `this.getComponentByName('wf_subtitle').set('url', '/subtitle/index.html');`
### TypeScript, Three.js, Vite und WebXR
- Komplexität: Browserbasierte 3D-Anwendung mit eigener Interaktions-, Kamera- und XR-Logik.
- Einsatz: Needle-Engine-Komponenten in TypeScript für Orbit-Steuerung, Raycast-Fokus, Kamerafahrten, Idle- und Distanzereignisse, Wasser- und Partikelanimationen sowie WebXR-Select-/Squeeze-Ereignisse und Teleportation; Vite-Build mit glTF-Transformationspipeline.
- Projekt: TenneT 2GW Platform, Februar bis Oktober 2023.
### Unity Editor, UI Toolkit, Scene Templates und Batchmode
- Komplexität: Entwicklung eines wiederverwendbaren Unity-Pakets, das interaktive Editor-Werkzeuge und automatisierte Content-Erzeugung verbindet.
- Einsatz: UI-Toolkit-Wizard zur Auswahl von 2D- oder VR-Szenentemplates und Lokalisierungstabellen; Erzeugung von Teiltrainings, Workplans und VR-Builder-Prozessen; Aufruf über Unity CLI mit einer externen JSON-Konfiguration und anschließender WebGL-Build.
- Projekt: VR Builder Scene Generation / TrainingGenerator, Oktober 2024 bis September 2025.
### Unity WebGL, JavaScript-Bridges sowie SCORM/AICC
- Komplexität: Browserbasierte 3D-Anwendung mit bidirektionaler Kommunikation zu einem Learning-Management-System.
- Einsatz: C#-/JavaScript-Brücke über `Application.ExternalCall`, `postMessage` und Iframes; Übernahme des Lernstands, Meldung erfolgreicher Teiltrainings und Aktualisierung des Gesamtstatus; Paketierung zunächst als SCORM und anschließend als AICC-HACP für das Cornerstone-LMS.
- Projekt: Roche RMD Rotkreuz, September 2022 bis Januar 2025.
- Zusatzwissen: Evaluation der Unity-xAPI-Unterstützung als mögliche Alternative zu SCORM-Paketen.
### Unity Addressables, WebGL-Templates und responsives Layout
- Komplexität: Auslieferung modularer Trainingsszenen und Lokalisierungsressourcen für unterschiedliche Browser- und Bildschirmformate.
- Einsatz: Addressable-Szenen sowie -Lokalisierungsgruppen und Szenenlader; Anpassung des WebGL-Templates für Fullscreen, Ladeanzeige, korrektes Seitenverhältnis und Hochformat-Hinweise auf iPad und Desktop.
- Projekt: SaxoCellTraining, Juni bis September 2024.
### Unity Localization, CSV und Editor-Automatisierung
- Komplexität: Pflege mehrsprachiger Inhalte für eine Anwendung mit zahlreichen Lernmodulen.
- Einsatz: Nachbearbeitung von Unity-Localization-String-Tables aus CSV-Dateien in `StreamingAssets` mit `UnityWebRequest` und CsvHelper; Editor-Werkzeuge zum Erzeugen von Trainingskonfigurationen, Workplans und Prozessdateien aus Vorlagen.
- Zusätzlicher Einsatz: Erstellung von Unity-Localization-`StringTable`-Collections aus CSV-Dateien und Ableitung von Teiltrainings sowie Infopunkten aus den Inhalts-Schlüsseln.
- Zusätzlicher Einsatz: Synchronisation von String-Tables mit Google Sheets einschließlich Rich-Text-Unterstützung sowie Bereitstellung der Sprachressourcen als Addressables.
- Projekte: Roche RMD Rotkreuz, September 2022 bis Januar 2025; SaxoCellTraining, Juni bis September 2024; und VR Builder Scene Generation / TrainingGenerator, Oktober 2024 bis September 2025.
- Zusätzlicher Einsatz: Sprachabhängige Text-to-Speech-Ausgabe, Synchronisation von String-Tables mit Google Docs sowie Fehleranalyse bei fehlenden Übersetzungen in VRBits SpeakUp, 2025 bis 2026.
### Unity AR Foundation, ARCore und ARKit
- Komplexität: Erstellung plattformübergreifender AR-Inhalte innerhalb eines Unity-Projekts.
- Einsatz: Abhängigkeiten AR-Viewer für die Bereitstellung konfigurierbarer AR-Lernszenen.
- Projekt: ChipAcademy AR-Viewer
### Unity AssetBundles, ScriptableObjects und UnityEditor
- Komplexität: Konfigurierbare 3D-Inhalte und plattformspezifische Distribution aus einem Unity-Projekt.
- Einsatz: Editor-Menüs zum Erzeugen von AssetBundles für Android, Windows und iOS sowie zum Export eines Unity-Pakets; `ScriptableObject` für Modelle, Marker, Overlays und Cross-Section-Einstellungen.
- Projekt: ChipAcademy AR-Viewer
### SteamVR, OpenVR, Oculus und VRTK
- Komplexität: VR-Interaktion und Navigation für eine mehrszenige Trainingsanwendung.
- Einsatz: Integration von SteamVR, OpenVR, Oculus und VRTK; erzwungene Teleportation mit konfigurierbarem Blink-Übergang sowie Controller- und Teleportationslogik in der Intro-Szene.
- Projekt: VR-Training für EnviaM-Umspannwerk von Dezember 2019 bis Juli 2022.
### Mozilla DeepSpeech
- Komplexität: Einrichtung einer lokal eingebundenen Spracherkennungs-Engine für eine Unity-Trainingsanwendung.
- Einsatz: Dokumentation des DeepSpeech-Bootstrappings mit dem trainierten deutschen Mozilla-Netz, .NET-Core-3.1-Publisher und Unity-Szenenkonfiguration für sprachgesteuerte Umspannwerk-Projekte.
- Kontext: TenneT VR Training und Umspannwerk-Projekte.
### Unity Package Manager und vrbits StepManager
- Komplexität: Wiederverwendbare Paketabhängigkeiten und zustandsbasierte Schrittsteuerung für eine Trainingsanwendung.
- Einsatz: Umstellung des StepManager von einer lokalen Paketquelle auf ein Git-Repository; Tutorial- und Testmodus sowie Laden des nächsten Arbeitsschritts über den StepManager.
- Projekt: VR-Training für EnviaM-Umspannwerk im April und Juli 2022.
### Unity NavMesh, additive Szenen und Cinemachine
- Komplexität: Navigation und Szenenverwaltung für eine mehrteilige interaktive Lernanwendung.
- Einsatz: Mausgesteuerte Navigation über einen `NavMeshAgent`; additives Laden und Entladen von Innenraumszenen sowie Vorabladen von Minispiel- und Innenraumszenen mit Ladeanzeige; Kamerasteuerung mit Cinemachine.
- Projekt: Roche Prozessrallye, April bis November 2021.
### Unity VideoPlayer, RenderTexture und uGUI
- Komplexität: Einbindung und Bedienung von Lernvideos in einer Unity-Anwendung.
- Einsatz: Wiedergabe lokaler oder per URL geladener Videos, Ausgabe auf `RawImage` über `RenderTexture`, dynamische Anpassung des Seitenverhältnisses sowie Play-/Pause- und Schließen-Steuerung.
- Projekt: Roche Prozessrallye, April bis November 2021.
### NUnit, Moq und Test Driven Development
- Komplexität: Testgetriebene Entwicklung einer asynchronen Unity- und .NET-Bibliothek mit Unit- und Integrationstests.
- Einsatz: NUnit-Tests im Arrange-Act-Assert-Stil, Moq und eigene HTTP-Mocks; Testfälle für Download-Fortschritt, Abbruch, Resume, Dateiintegrität, Cache-Verhalten, Formatfehler und Ressourcenbereinigung. Schrittweises Ergänzen von Tests und darauf folgenden Implementierungsanpassungen.
- Projekt: `MMS-AssetDownloader` Juli bis August 2025.
- Zusätzlicher Einsatz: NUnit-Regressionstests für Trainingsszenen, die Positionen von UI- und 3D-Objekten, Kameraeinstellungen, Addressable-Gruppen, VR-Builder-Konfiguration und Lightmaps prüfen.
- Projekt: VR Builder Scene Generation / TrainingGenerator, Oktober 2024 bis September 2025.
### .NET Standard, HttpClient und HTTP Range Requests
- Komplexität: Unity-agnostische Kernbibliothek für parallele, asynchrone Dateiübertragungen mit Fehler- und Zustandsbehandlung.
- Einsatz: `HttpClient` mit Streaming in temporäre Dateien, Fortschrittsereignissen, Abbruch, Retry-fähiger Fehlerdarstellung und Range-Requests zur Wiederaufnahme unterbrochener Downloads; Warteschlange mit konfigurierbarer Parallelität.
- Projekt: MM`MMS-AssetDownloader` August 2025.
### glTF, GLB, USD und USDZ
- Komplexität: Formatprüfung und Vorbereitung unterschiedlicher 3D-Assetformate für Unity.
- Einsatz: Erkennung und grundlegende Validierung von glTF, GLB, USD, USDA, USDC und USDZ; Einbindung von glTFast und USD Importer in das Unity-Projekt.
- Projekt: MMS-AssetDownloader Juli bis August 2025.
### Drupal 8.7 und XML-Schnittstellen
- Komplexität: Bereitstellung von Inhalts- und Metadaten für eine AR-Anwendung.
- Einsatz: Drupal-8.7.7-Backend mit XML-Endpunkt; Übertragung von Szenen-UUIDs, Anbieter-, Revisions- und Zeitinformationen, Titeln, Beschreibungen, Bildern sowie iOS- und Android-AssetBundle-URLs an den Unity-AR-Viewer.
- Projekt: ChipAcademy AR-Viewer
### Android und iOS
- Komplexität: Mobile Zielplattformen innerhalb plattformübergreifender Unity-Projekte.
- Einsatz: Bereitstellung von Anwendungen aus einer gemeinsamen Codebasis.
- Kontext: vrbits GmbH.
### Rust
- Komplexität: Grundlagen der Konsolen- und 3D-Anwendungsentwicklung mit Eingabeverarbeitung, Kontrollfluss, zeitgesteuerter Bewegung und Zustandsverwaltung.
- Einsatz: Zufallszahlenerzeugung mit `rand`, Einlesen von Standardeingaben, Typumwandlung mit `match`-basierter Fehlerbehandlung und Vergleich über `Ordering`; 3D-Spielprototyp mit Spielfeldgrenzen, fallenden Spielsteinen und Gamepad-Eingaben.
- Projekte: Rust-Ratespiel in `rust_guessing_game` (Oktober 2018) und Threetris in `threetris` (November 2018), jeweils durch eigene Commits belegt.
### kiss3d, nalgebra und stick
- Komplexität: Aufbau eines interaktiven 3D-Spielprototyps mit Rendering, mathematischer Positionierung und Gamepad-Steuerung.
- Einsatz: 3D-Fenster, Kamera, Plattform und Würfel mit `kiss3d`; Punkte und Translationen mit `nalgebra`; Abfrage von Gamepad-Eingaben mit `stick`.
- Projekt: Threetris in `threetris`, belegt durch eigene Commits im November 2018.
### Python
- Komplexität: Entwicklung von Web-, Scraping-, Datenmigrations- und Automatisierungswerkzeugen mit API-Anbindung, Datenkonvertierung und Dateiverarbeitung.
- Einsatz:
- Abruf eines MediaWiki über dessen API, HTML-zu-Markdown-Konvertierung, Download von Bildern, Erzeugung von Metadaten und interaktive Link-Konvertierung;
- Web-Scraping, Mailbox-/MIME-Verarbeitung, Datumsnormalisierung und CSV-Ausgabe für Veranstaltungs- und Stiftungsdaten;
- Anpassung des CARLA-Python-Clients, Konfiguration eines Logitech-G29-Controllers über Pygame und Übertragung der Lenkrad-/Pedaleingaben an die Simulations-API.
- Projekte:
- MediaWiki-zu-Obsidian-Migration in `ScrapeMediawiki`, belegt durch eigene Commits von August bis Oktober 2024;
- eigene Beiträge zum Teamprojekt `info.ngo`, belegt durch Commits von Juli bis August 2019;
- CARLA-VR, belegt durch eigene Commits von Dezember 2021 bis Februar 2022.
### Django, Django ORM und Django CMS
- Komplexität: Vom schrittweisen Framework-Lernprojekt über einen CMS-Prototyp bis zu einer mehrschichtigen, datengetriebenen Webanwendung.
- Einsatz: Projekt- und App-Struktur, URL-Routing, ORM-Modelle und Migrationen, Admin, Authentifizierung, funktionsbasierte und generische Views, Formulare, Templates, statische Dateien und Medien; Django-CMS-Seiten mit Toolbar, Navigation, Sekizai-Blöcken, editierbaren Platzhaltern und Plugin-Konfiguration.
- Projekte: Eigenes Django-Lernprojekt `django-first-app` im Juni 2018; Django-CMS-Prototyp `/Volumes/rob/code/django-cms/info.ngo` im Juli 2019; Teamprojekt `info.ngo` im Juli und August 2019.
### Requests, Beautiful Soup, lxml und E-Mail-Parsing
- Komplexität: Gewinnung und Normalisierung semistrukturierter Daten aus mehreren Web- und Nachrichtenquellen.
- Einsatz: HTTP-GET- und POST-Abrufe; HTML-Parsing mit Beautiful Soup sowie `lxml` und `html5lib`; Behandlung unregelmäßiger Datumsangaben; CSV-Export; Einlesen von Thunderbird-Mailboxen und Dekodierung von MIME-Inhalten; Vorbereitung der Daten für eine Django-Importpipeline.
- Projekt: Eigene Beiträge zum Teamprojekt `info.ngo`, belegt durch Git-Commits vom 30. Juli bis 27. August 2019.
### django-filter, Paginierung und transaktionaler Datenimport
- Komplexität: Durchgängige Verarbeitung von extern gewonnenen Daten bis zur filterbaren, seitenweise dargestellten Webansicht.
- Einsatz: Filterung von Events nach Titel, Datumsbereich und Veranstaltungsort; Erhalt der Filterparameter beim Seitenwechsel; Django-Paginator; Factory-/Service-Layer mit JSON-Serialisierung; atomare ORM-Operationen und Behandlung von Integritätsfehlern zur Vermeidung von Duplikaten.
- Projekt: Teamprojekt `info.ngo`, Juli bis August 2019.
### Leaflet, GeoJSON, Geopy und interaktive Karten
- Komplexität: Geokodierung, Speicherung und browserseitige Visualisierung räumlicher Veranstaltungsdaten.
- Einsatz: Ermittlung von Koordinaten aus Ortsangaben mit Geopy; GeoJSON-Punktfelder über `djgeojson`; Ausgabe von Modelldaten als GeoJSON; Leaflet-Karte mit Popups, ein- und ausblendbarer Kartenansicht sowie zeitabhängig eingefärbten Material-Markern.
- Projekt: Teamprojekt `info.ngo`, Juli bis August 2019.
### Django-Templates, Bootstrap und jQuery
- Komplexität: Serverseitig gerenderte, interaktive Weboberfläche mit Formularen, Authentifizierung, Filtern und Kartendarstellung.
- Einsatz: Template-Vererbung und statische Assets; Bootstrap-Layouts, Formulare und Toggles; Crispy Forms; jQuery-basierte UI-Steuerung und Validierung; Einbindung von Leaflet und Material Icons.
- Projekt: Teamprojekt `info.ngo`, Juli bis August 2019.
### MySQL, SQLite, Conda und Python-Web-Deployment
- Komplexität: Entwicklungs-, Datenbank- und Laufzeitkonfiguration einer Django-Anwendung für lokale und serverseitige Umgebungen.
- Einsatz: MySQL als konfigurierte Anwendungsdatenbank; SQLite für Lernprojekt, CMS-Prototyp und Sicherung; reproduzierbare Python-3.7-Umgebung mit Conda und gepinnten Paketen; vorbereitete Abhängigkeiten für PostgreSQL, Gunicorn, WhiteNoise, Heroku sowie S3-kompatiblen Speicher mit `django-storages` und Boto3.
- Projekte: `django-first-app`, Django-CMS-Prototyp `info.ngo` und Teamprojekt `info.ngo`, 2018 bis 2019.
### MediaWiki-API, Requests, Beautiful Soup und html2text
- Komplexität: Authentifizierte API-Integration und automatisierte Inhaltsmigration.
- Einsatz: Paginierter Abruf aller Wiki-Seiten; Login über Token; Auswertung von Kategorien, internen und externen Links, Bildern und Revisionen; Konvertierung von HTML nach Markdown.
- Projekt: MediaWiki-zu-Obsidian-Migration in `ScrapeMediawiki`, belegt durch eigene Commits von August bis Oktober 2024.
### Obsidian und Markdown
- Komplexität: Datenmigration und versionsierte Sicherung von Wissensdaten.
- Einsatz: Konvertierung von MediaWiki-Inhalten nach Markdown für Obsidian; automatisiertes Backup eines Obsidian-Vaults.
- Projekte: `ScrapeMediawiki` (August bis Oktober 2024) und `obsidian-backup` (März 2026), belegt durch eigene Commits.
### Jekyll und Liquid
- Komplexität: Entwicklung und Erweiterung statischer Websites mit wiederverwendbaren, datengetriebenen Seitenelementen.
- Einsatz: Erstellung eines Full-Width-Kartenlayouts und Einbindung von Karten über Liquid-Templates; Pflege von Seiten mit YAML-Front-Matter und Markdown; vollständiger WordPress-zu-Jekyll-Relaunch einer Unternehmenswebsite mit lokalisierter Inhaltsstruktur, Seitenbasis, Navigation und Footer sowie einer Card-Architektur aus zwölf Layoutvarianten und wiederverwendbaren Komponenten.
- Projekte: Website für den Fuß- und Radentscheid Dresden in `fuss-und-radentscheid-dresden`, belegt durch eigene Commits von März bis Juli 2022; VRketing Website, Juli 2021 bis August 2022.
### Ruby und Bundler
- Komplexität: Lokale Build- und Entwicklungsumgebung für eine statische Website unter Windows und Linux.
- Einsatz: Gem-basierte Abhängigkeiten, lokale Bundler-Konfiguration und Dokumentation der Ausführung mit `bundle exec jekyll serve`.
- Projekt: Website für den Fuß- und Radentscheid Dresden in `fuss-und-radentscheid-dresden`, belegt durch eigene Commits im März und Mai 2022.
### Sass
- Komplexität: Responsive Komponenten- und Seiten-Styles innerhalb bestehender und eigener Jekyll-Themes.
- Einsatz: Anpassung von Kartenüberschriften, Kartenlayout, Full-Width-Darstellung, Kontaktbereich, Footer und projektspezifischem Farbschema; responsive Header-, Menü-, Schrift-, Karten- und Hero-Layouts für die VRketing-Unternehmenswebsite.
- Projekte: Website für den Fuß- und Radentscheid Dresden in `fuss-und-radentscheid-dresden`, belegt durch eigene Commits im Mai und Juli 2022; VRketing Website, Juli 2021 bis August 2022.
### Arduino C
- Komplexität: Firmware-Entwicklung mit Klassenabstraktion, Hardware-Ansteuerung und Netzwerkkommunikation.
- Einsatz: ESP8266-Firmware für einen WLAN-gesteuerten LED-Rahmen; Initialisierung und Ansteuerung eines adressierbaren LED-Streifens sowie HTTP-Routen zur Steuerung von Farben und Effekten.
- Projekt: WLAN-gesteuerter LED-Rahmen in `VRKeting-LED-Rahmen`, belegt durch eigene Commits von September 2022 bis Januar 2023.
### ESP8266, ESPAsyncTCP und ESPAsyncWebServer
- Komplexität: WLAN- und HTTP-Anbindung eines Mikrocontrollers.
- Einsatz: WLAN-Verbindung, asynchroner HTTP-Server auf Port 80 sowie GET-Routen für die Weboberfläche, direkte Farbsteuerung und Regenbogeneffekt.
- Projekt: WLAN-gesteuerter LED-Rahmen in `VRKeting-LED-Rahmen`, belegt durch eigene Commits von September 2022 bis Januar 2023.
### Adafruit NeoPixel und WS2811/WS2812
- Komplexität: Einzelpixelsteuerung und Animation eines adressierbaren LED-Streifens.
- Einsatz: Initialisierung eines 80 LEDs umfassenden Streifens, Helligkeitssteuerung, RGB-Farbwerte und Effekte wie Farbwechsel, Lauflicht und Regenbogen.
- Projekt: WLAN-gesteuerter LED-Rahmen in `VRKeting-LED-Rahmen`, belegt durch eigene Commits von September 2022 bis Januar 2023.
## Web, E-Commerce und Daten
### PHP, JavaScript und MySQL
- Komplexität: E-Commerce- und Warenwirtschaftssysteme sowie komplexe Datenbankmigrationen.
- Einsatz: Webshop-Entwicklung, eigene Lösungen, Migration komplexer Systeme und Datenbanken.
- Kontext: selbstständige Full-Stack-Projekte, 2017 bis 2019.
### HTML5, CSS3 und jQuery
- Komplexität: Webentwicklung mit responsiven Benutzeroberflächen.
- Einsatz:
- Entwicklung von Websites und Online-Shops; Responsive Design und Mobile First.
- Kontext: nebenberufliche Webprojekte, 2012 bis 2017;
- Eingebettete HTML- und CSS-Bedienoberfläche für die Steuerung eines LED-Rahmens im Browser.
- Projekt: WLAN-gesteuerter LED-Rahmen in `VRKeting-LED-Rahmen`, September 2022 bis Januar 2023;
- Responsive HTML-/CSS-Content-Overlay für eine Needle-Engine-Visualisierung mit Medienabfragen, dynamischer Panel- und Schriftgröße sowie Querformat-Handling.
- Projekt: TenneT 2GW Platform, Februar bis Oktober 2023.
### JavaScript und XMLHttpRequest
- Komplexität: Browserseitige Steuerung eines vernetzten Hardwaregeräts.
- Einsatz: Auslösen parameterisierter HTTP-GET-Anfragen zur Auswahl von LED-Programmen, Farben und Effektgeschwindigkeit.
- Projekt: WLAN-gesteuerter LED-Rahmen in `VRKeting-LED-Rahmen`, belegt durch eigene Commits von September 2022 bis Januar 2023.
### Node.js, React und Vue.js
- Komplexität: Moderne Web- und Frontend-Entwicklung.
- Einsatz: Web- und Full-Stack-Entwicklung.
- Kontext: berufliche Erfahrung in Webentwicklung und Full-Stack-Projekten.
### Preact und Redux
- Komplexität: Komponentenbasierte Single-Page Application mit mehreren voneinander abhängigen Datenansichten und gemeinsamem Interaktionszustand.
- Einsatz: Aufbau des VISOR-Frontends mit Preact-Komponenten und Routing; zentrale Zustandsverwaltung für geladene und gefilterte OProc-Daten, Zoom, Suche, Markierungen und Auswahl; Redux-Actions und Reducer sowie Ableitung gefilterter Ansichten aus Daten- und Filterzustand.
- Projekt: VISOR/OProc, August 2017 bis März 2018, belegt durch eigene Commits im Repository `in-transit`.
### SVG, Dagre und interaktive Prozessvisualisierung
- Komplexität: Gemeinsame Visualisierung zeitlicher, hierarchischer und gerichteter Prozessbeziehungen mit miteinander gekoppelten Interaktionen.
- Einsatz: SVG-Timeline mit Zeitachsen, Zoom, Verschieben, Swimlanes, kollisionsarmer Stapelung und Verbindungslinien; gerichteter Abhängigkeitsgraph mit Dagre-Layout; visuelle Kodierung von Beteiligung und übergeordneten Prozessen; Hover-, Auswahl-, Filter-, Such- und Detailinteraktionen über beide Ansichten.
- Projekt: VISOR/OProc, September 2017 bis März 2018, belegt durch eigene Commits im Repository `in-transit`.
### Moment.js
- Komplexität: Einheitliche Darstellung und Verarbeitung von Datumswerten in zeitbasierten Prozessansichten.
- Einsatz: Formatierung der Zeitachse, Prozessbeschriftungen, Chronologie, Ergebnislisten und Detailansichten im Browser.
- Projekt: VISOR/OProc, belegt durch Implementierung und eigene Commits im Repository `in-transit`.
### Shopware, WordPress und Apache-Weiterleitungen
- Komplexität: Webshop- und Content-Management-Systeme sowie die Ablösung bestehender Websites bei Erhalt vorhandener URLs.
- Einsatz: Entwicklung von Webshops mit Shopware sowie Webentwicklung; Auswertung eines WordPress-Exports, Übernahme ausgewählter Inhalte in eine Jekyll-Website und Pflege von Apache-`.htaccess`-Weiterleitungen für alte WordPress-Pfade.
- Kontext: selbstständige Full-Stack-Projekte und VRketing Website.
- Projekt: VRketing Website, Juli 2021 bis August 2022.
### SQL, CRUD/REST-APIs, JSON und XML
- Komplexität: Datenmodellierung, Datenintegration und Schnittstellenprogrammierung.
- Einsatz: Datenbankdesign und -optimierung; Integration und Kapselung von Schnittstellen, Datenformaten und Services.
- Kontext: Webprojekte, selbstständige Full-Stack-Projekte und vrbits GmbH.
- Zusätzlicher Einsatz: Entwurf und iterative Weiterentwicklung von OProc als offenem, URL-basiertem JSON-Datenmodell für Stadtentwicklungsprozesse mit Prozessen, Stakeholdern, Beteiligung, Orten, Resultaten, Dateien und Verweisen auf parlamentarische Daten.
- Projekt: VISOR/OProc, August 2017 bis Mai 2018, belegt durch eigene Commits im Repository `oproc`.
## Betrieb, Qualität und Delivery
### Git, GitHub Actions und GameCI
- Komplexität: Continuous Integration für mehrere Zielplattformen.
- Einsatz: CI-Pipelines auf lokalen und Remote-Runnern für sämtliche Zielplattformen.
- Kontext: vrbits GmbH.
- Zusätzlicher Einsatz: Geplanter und manuell auslösbarer GameCI-WebGL-Build mit automatisiertem Deployment für Roche RMD Rotkreuz.
- Zusätzlicher Einsatz: Unterstützung bei der Automatisierung von Build-Prozessen sowie Erarbeitung von Coding-Guidelines für VR-Builder-Trainings.
### Docker, Linux, POSIX Shell und Systemadministration
- Komplexität: Betrieb und Administration von Entwicklungs- und Serversystemen.
- Einsatz: IT-Support, Systemadministration und Infrastrukturarbeit.
- Kontext: MAGIX Development GmbH, selbstständige Projekte sowie aktuelle Softwareentwicklung.
- Systeme: Debian-Server, Fedora im privaten Einsatz, NixOS, FreeBSD und CentOS.
- Zusätzlicher Einsatz: Eigene Shell-Automatisierung für Backups, Serverwartung und PhotoPrism-Indexierung in Docker.
- Projekt: `lokale-scripte`, November 2018 bis Mai 2026.
- Zusätzlicher Einsatz: Dokumentation Pflege eines VR-Builder-Glossars.
- Zusätzlicher Einsatz: Containerisierung und ODC-/Kubernetes-Integrationsanweisungen für den Telekom-MMS-AI-Assist-Voice-Agent; Docker-Compose mit gemeinsamem Netzwerk und Testcontainer sowie GitLab-CI-gestützter Build und Push versionierter Images in die Telekom-Registry.
### Kubernetes, GitLab CI und Telekom ODC
- Komplexität: Reproduzierbare Bereitstellung eines Echtzeit-WebSocket-Dienstes in einer Unternehmens-Cloud mit Container-Registry und mehreren Laufzeitumgebungen.
- Einsatz: Erstellung der Docker- und Kubernetes-Anweisungen zur Einbindung des AI-Assist-Voice-Agent-Service in die Telekom Open Digital Cloud (ODC).
- Projekt: Telekom MMS AI Assist, Repository `#_TelekomMMS/ai-assist_ai-assist-service`, mindestens Februar 2025.
- Abgrenzung: Unreal-basierter Avatar und KI-Anbindung lagen bei Kolleg:innen; der eigene Schwerpunkt lag auf Betriebs- und Integrationsaspekten.
### NixOS und Nix
- Komplexität: Modulare, deklarative Konfiguration eines Mehrzweckservers.
- Einsatz: Aufteilung der Systemkonfiguration in Nix-Module für Nutzer, Speicher, Samba, Nextcloud, Tailscale, Cockpit, VeraCrypt und systemnahe Programme; automatische System-Upgrades.
- Projekt: Deklarative NixOS-Heimserver-Konfiguration in `bfds-configuration.nix`, belegt durch eigene Commits von Januar bis November 2024.
### systemd
- Komplexität: Definition und Terminierung systemnaher Dienste.
- Einsatz: Service und stündlicher Timer für ein rsync-basiertes Backup sowie einmaliger Dienst zur Konfiguration der Festplatten-Energieverwaltung beim Systemstart.
- Projekt: Deklarative NixOS-Heimserver-Konfiguration in `bfds-configuration.nix`, belegt durch eigene Commits von April bis November 2024.
### ZFS
- Komplexität: Verwaltung mehrerer Storage-Datasets auf einem NixOS-Server.
- Einsatz: Einbindung eines ZFS-Pools und separater Datasets für persönliche und gemeinsam genutzte Dateiablagen.
- Projekt: Deklarative NixOS-Heimserver-Konfiguration in `bfds-configuration.nix`, belegt durch eigene Commits im Jahr 2024.
### Samba und SMB
- Komplexität: Bereitstellung von Netzwerkfreigaben für heterogene Client-Systeme.
- Einsatz: Konfiguration mehrerer Freigaben mit Berechtigungen; SMB2/SMB3-Protokollvorgaben, SMB-Signierung, Firewall-Freigaben und Windows-Netzwerkerkennung.
- Projekt: Deklarative NixOS-Heimserver-Konfiguration in `bfds-configuration.nix`, belegt durch eigene Commits von Januar bis November 2024.
### nginx, ACME und Let's Encrypt
- Komplexität: HTTPS-Bereitstellung und automatisierte Zertifikatsverwaltung für einen Dienst.
- Einsatz: nginx Virtual Host mit HTTPS-Erzwingung und ACME-Zertifikatsautomatisierung für Nextcloud.
- Projekt: Deklarative NixOS-Heimserver-Konfiguration in `bfds-configuration.nix`, belegt durch eigene Commits im August 2024.
### Tailscale und Cockpit
- Komplexität: Fernzugriff und webbasierte Serveradministration.
- Einsatz: Aktivierung des Tailscale-Dienstes sowie Bereitstellung der Cockpit-Verwaltungsoberfläche.
- Projekt: Deklarative NixOS-Heimserver-Konfiguration in `bfds-configuration.nix`, belegt durch eigene Commits im Januar und November 2024.
### Restic
- Komplexität: Automatisierte, verschlüsselte Backup- und Wiederherstellungsabläufe.
- Einsatz: Sicherung über SFTP, Ausschlusslisten für nicht relevante Daten sowie Skripte für Backup und Wiederherstellung.
- Projekt: Private Infrastruktur- und Backup-Automatisierung in `lokale-scripte`, belegt durch eigene Commits von November 2021 bis Juli 2022.
### rsync und SSH
- Komplexität: Automatisierte, serverübergreifende Dateisynchronisation.
- Einsatz: Nextcloud-Backups über SSH mit dediziertem Schlüssel, Ausschlussregeln und anschließender Berechtigungsanpassung; Offsite-Synchronisation; konfigurationsgesteuertes Obsidian-Backup mit Schlüsseldatei oder benutzerdefiniertem Remote-Shell-Kommando.
- Projekte: Nextcloud-Backup und Betriebsautomatisierung sowie private Backup-Automatisierung in `lokale-scripte` (März 2020 bis Januar 2026) und Obsidian-Backup mit rsync und Git in `obsidian-backup` (März 2026), belegt durch eigene Commits.
### Git
- Komplexität: Versionsierte Backup-Historie mit idempotentem Ablauf.
- Einsatz: Automatische Initialisierung eines Backup-Repositorys und Commit-Erstellung ausschließlich nach erkannten Änderungen aus der rsync-Synchronisation.
- Projekt: Obsidian-Backup mit rsync und Git in `obsidian-backup`, belegt durch eigene Commits im März 2026.
### Nextcloud
- Komplexität: Betrieb und automatisierte Sicherung einer laufenden Instanz.
- Einsatz: Wartungsmodus während Backups, Dateiscans und Aufräumarbeiten; Sicherung von Dateien und Datenbanken.
- Projekt: Nextcloud-Backup und Betriebsautomatisierung in `lokale-scripte`, belegt durch eigene Commits von März 2020 bis Mai 2026.
### MySQL und PHP
- Komplexität: Automatisierte Datenbank-Sicherungen und Archivierung.
- Einsatz: Erstellung von Datenbank-Dumps und Archivierung für Nextcloud-Backups.
- Projekt: Nextcloud-Backup und Betriebsautomatisierung in `lokale-scripte`, belegt durch eigene Commits im Oktober 2023.
### VeraCrypt, Robocopy und Windows Batch/PowerShell
- Komplexität: Verschlüsselte, plattformübergreifende Offsite-Sicherungen.
- Einsatz: Einbinden verschlüsselter Datenträger und Spiegeln von Daten für externe Backups unter Windows.
- Projekt: Private Infrastruktur- und Backup-Automatisierung in `lokale-scripte`, belegt durch eigene Commits im November und Dezember 2024.
### Windows, macOS und Netzwerk
- Komplexität: Arbeit in heterogenen IT- und Client-Umgebungen.
- Einsatz: IT-Support, Systemadministration und plattformübergreifende Entwicklung.
- Kontext: MAGIX Development GmbH, Compaq Computer Corporation und vrbits GmbH.
### Automatisierte Tests und Qualitätssicherung
- Komplexität: Testentwicklung und Qualitätssicherung von Software.
- Einsatz: Softwaretest, automatisierte Testentwicklung und Qualitätssicherung.
- Kontext: MAGIX Development GmbH, 2006 bis 2017.
### PhotoPrism
- Komplexität: Betriebsautomatisierung einer containerisierten Fotoverwaltung.
- Einsatz: Periodische Indexierung aus einem cron-tauglichen Shell-Skript mit Sperrdatei, Signalbehandlung und Log-Rotation.
- Projekt: PhotoPrism-Indexierungsautomatisierung in `lokale-scripte`, belegt durch eigene Commits von Oktober 2025 bis Januar 2026.
## 3D und technische Gestaltung
### OpenSCAD, Blender, OpenGL, 3ds Max und 3D-Druck
- Komplexität: 3D-Bearbeitung und -Entwicklung.
- Einsatz: Im Lebenslauf als 3D-Kenntnisse aufgeführt.
- Kontext: nicht weiter spezifiziert.
## KI und maschinelles Lernen
### ANNs und LLMs
- Komplexität: Anwendung und kontinuierliche Beschäftigung mit maschinellem Lernen und Sprachmodellen.
- Einsatz: ANNs seit 2016; LLMs seit 2020; seit 2025 verstärkter Einsatz von KI im Unternehmenskontext und in der eigenen Softwareentwicklung.
- Kontext: berufliche und private Softwareentwicklung.
- Zusätzlicher Einsatz: Recherche und Dokumentation zu Neural Radiance Fields (NeRF), KI-Modellgenerierung mit Stable-3D und ComfyUI sowie Evaluation von Unity DOTS.
### RAG, OpenWebUI, LM Studio, GPUStack, MCP, BMAD, SpecKit, SDD, Context Engineering und Caveman
- Komplexität: Werkzeuge und Methoden für KI-gestützte Softwareentwicklung und LLM-Anwendungen.
- Einsatz: Im Lebenslauf als Kenntnisse aufgeführt.
- Kontext: berufliche und private Softwareentwicklung.
## Werkzeuge
### Jira und Visual Studio Code
- Komplexität: Werkzeuge für Projektarbeit und Softwareentwicklung.
- Einsatz: Im Lebenslauf als Tools aufgeführt.
- Kontext: nicht weiter spezifiziert.