commit 320bd4f227ba3790304292406aa97cb41b59ae35 Author: trnq1ll0 Date: Wed Sep 2 15:46:15 2026 +0200 Erster Stand mit etlichen vrbits Projekten erstellt.. (ohne KI skill und instruction files) diff --git a/projects.md b/projects.md new file mode 100644 index 0000000..26442f9 --- /dev/null +++ b/projects.md @@ -0,0 +1,194 @@ +# 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. + +## 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. + +## 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 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. + +## 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. + +## 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 +# Öffentlicher Showcase: https://www.transnetbw.de/de/netzbooster-anwendung/ + +## 3D Vista Rundgang: Umspannwerk Conneforde +# Nicht öffentlicher Showcase: https://local.vr-bits.de/showcases/UWConneforde/index.htm \ No newline at end of file diff --git a/python-activities.md b/python-activities.md new file mode 100644 index 0000000..ef9bf13 --- /dev/null +++ b/python-activities.md @@ -0,0 +1,222 @@ +# Ordner mit meinen Python-Projekten + +/Users/rob/code/SomaFM-Playlists +/Users/rob/code/Steuererklärung-CSVs-Auswerten +/Users/rob/code/PDF-with-JS-hack +/Users/rob/code/scrape-immobillien +/Users/rob/code/Fix-SamsungNX-Photos-in-Immich +/Users/rob/code/BündnisOst/Ostdeutsche-Politiker/scripts/converter +/Users/rob/code/BündnisOst/bo-page/scripts +/Users/rob/code/SUFW/Jo-Job2026 +/Users/rob/code/SUFW/Zeitabrechung +/Users/rob/code/SUFW/Tätigkeitsnachweise/1_Erstes-Tool-Komplizert +/Users/rob/code/SUFW/Tätigkeitsnachweise/3_Tätigkeitsnachweise-generieren +/Users/rob/code/ScrapeMediawiki +/Users/rob/code/Lotto-Zocken + +/Volumes/rob/code +/Volumes/rob/code/argümen/arguman.org +/Volumes/rob/code/django-cms/info.ngo +/Volumes/rob/code/django-first-app +/Volumes/rob/code/filemonitor +/Volumes/rob/code/gallery-screenlet +/Volumes/rob/code/machine_learling_minimalbeispiel +/Volumes/rob/code/neuronale_netze_einfach_erklärt +/Volumes/rob/code/pls-2-m3u +/Volumes/rob/code/pythonAlgorithmik +/Volumes/rob/code/Wiederstandsberechnung +/Volumes/rob/code/led-stripe-c3d2 +/Volumes/rob/code/c3d2/pentabot +/Volumes/rob/code/c3d2/pentanews-localtest/backend +/Volumes/rob/code/c3d2/led-stripe +/Volumes/rob/code/info.ngo/info.ngo +/Volumes/rob/code/info.ngo/info.ngo/InfoNgo_django +/Volumes/rob/code/info.ngo/docker-rob +/Volumes/rob/code/info.ngo/rebuild-rob/InfoNgo_django +/Volumes/rob/code/offenesdresden.de/stadtrat +/Volumes/rob/code/offenesdresden.de/stadtrat/scrape-a-ris/scrape-a-ris_DD +/Volumes/rob/code/offenesdresden.de/stadtrat/scrape-a-ris/scrape-a-ris +/Volumes/rob/code/offenesdresden.de/stadtrat/scrape-a-ris/test_repo +/Volumes/rob/code/offenesdresden.de/parkenDD/ParkAPI +/Volumes/rob/code/offenesdresden.de/themenstadtscraper + +# Python-Tätigkeiten und Schlagwörter + +Diese Liste fasst die mit Python umgesetzten Tätigkeiten aus der Knowledge Base und den bekannten Projekten zusammen. + +## Webentwicklung und Backends + +- Django-Webanwendungen +- Django CMS +- Django-Projekt- und App-Architektur +- URL-Routing und Namespaces +- Funktionsbasierte und generische Views +- Django ORM und relationale Datenmodelle +- Datenbankmigrationen +- Django Admin +- Authentifizierung und Formulare +- Template-Vererbung +- Statische Dateien und Medien +- Filterung und Paginierung +- Transaktionale Datenimporte +- Factory- und Service-Layer +- Streamlit-Webanwendungen +- Bootstrap- und jQuery-Integration +- Hugo-Prebuild-Automatisierung + +## APIs, Web-Scraping und Datengewinnung + +- REST- und Web-API-Anbindung +- MediaWiki-API +- Tokenbasierte Anmeldung +- Session- und Cookie-Verwaltung +- HTTP-GET- und POST-Anfragen +- Web-Scraping +- HTML-Parsing +- Beautiful Soup +- Requests +- lxml und html5lib +- OpenGraph-Metadaten extrahieren +- Bilder und Medien automatisiert herunterladen +- Immobilienangebote auslesen +- Veranstaltungsdaten sammeln +- Stiftungsinformationen extrahieren +- Lottoziehungen automatisiert erfassen +- Radiosender und Playlists auslesen +- Browserformulare und Zeitbuchungen automatisieren +- HTML-Formularabläufe rekonstruieren +- Mailbox- und MIME-Inhalte verarbeiten +- Thunderbird-Mailboxen einlesen + +## Datenverarbeitung und Datenanalyse + +- CSV-, JSON- und Excel-Verarbeitung +- JSON-zu-CSV-Konvertierung +- CSV-zu-JSON-Zusammenführung +- Pandas-Datenanalyse +- Bank- und Steuerdaten kategorisieren +- Deutsche Zahlen- und Datumsformate normalisieren +- Unregelmäßige Datumsangaben verarbeiten +- Daten aus mehreren Quellen zusammenführen +- Datenbereinigung und Normalisierung +- Dubletten erkennen und verhindern +- Namensnormalisierung und Datensatz-Matching +- Mehrdeutige Zuordnungen auflösen +- Geschäftsregeln validieren +- Förderquoten berechnen +- Häufigkeitsanalysen durchführen +- Statistische Ergebnisse visualisieren +- Matplotlib-Diagramme erzeugen +- Konfigurationsgesteuerte Verarbeitungspipelines + +## Excel- und Office-Automatisierung + +- Excel-Dateien mit OpenPyXL lesen und schreiben +- Mehrere Arbeitsblätter verarbeiten +- Spalten und Felder konfigurierbar zuordnen +- Mitarbeiter- und Stammdaten zusammenführen +- Excel-Vorlagen automatisiert befüllen +- Arbeitsblätter aus Templates erzeugen +- Tätigkeitsnachweise generieren +- Anwesenheitslisten generieren +- Personalisierte Dokumente im Batch erstellen +- Dateinamen regelbasiert erzeugen +- Eingabedateien und Templates validieren +- Dry-Run und Ausgabevorschau implementieren + +## PDF-Verarbeitung + +- PDF-Formularfelder analysieren +- AcroForm-Felder automatisiert befüllen +- Personalisierte PDFs generieren +- PDF-Templates validieren +- PDF-Inhalte und Feldpositionen untersuchen +- JavaScript aus PDFs entfernen +- Bearbeitungseinschränkungen entfernen +- Read-only-Flags korrigieren +- PDF-Appearance-Streams reparieren +- PDFs mit PyPDF, PikePDF und PyMuPDF bearbeiten +- PDF-Ergebnisse automatisiert überprüfen + +## Inhaltsmigration und Dateiverarbeitung + +- MediaWiki nach Obsidian migrieren +- HTML nach Markdown konvertieren +- Wiki-Links nachbearbeiten +- Seitenhierarchien als Verzeichnisse abbilden +- Inhaltsverzeichnisse erzeugen +- Kategorien, Links und Revisionen extrahieren +- Metadaten als JSON speichern +- Rekursive Verzeichnisverarbeitung +- Dateien automatisiert strukturieren und benennen + +## Bild- und Metadatenverarbeitung + +- EXIF-Metadaten analysieren +- Fehlerhafte Aufnahmedaten korrigieren +- Datumsangaben aus Ordnernamen ableiten +- Zeitspannen auf Fotos übertragen +- Dateisystem-Zeitstempel ändern +- Vorschaubilder erzeugen +- Rekursive Fotosuche +- Automatische Backups vor Dateiänderungen +- Undo-Funktionen und Änderungsprotokolle +- Immich-Metadatenprobleme untersuchen + +## Geodaten und Karten + +- Adressen geokodieren +- Koordinaten ermitteln +- GeoJSON-Daten erzeugen +- Räumliche Daten in Django speichern +- Leaflet-Karten integrieren +- Kartenmarker aus Datenmodellen erzeugen +- Dynamische Popups erstellen +- Marker abhängig von Zeitwerten einfärben + +## Benutzeroberflächen und Kommandozeilenwerkzeuge + +- Streamlit-Dashboards +- Tkinter-Desktop-GUIs +- Dateiauswahl und Verzeichnis-Browser +- Thumbnail- und Änderungsvorschauen +- Interaktive Filter und Mehrfachauswahl +- Kommandozeilenprogramme mit Click +- CLI-Programme mit Argparse +- Interaktive Eingabe und Bestätigung +- Headless- und Cold-Run-Modi +- Batch-Verarbeitung +- Fortschritts-, Status- und Fehlermeldungen + +## Architektur und Softwarequalität + +- Modularisierung in Parser, Validator, Matcher und Writer +- Dataclasses und typisierte Datenmodelle +- Type Hints +- Eigene Exception-Hierarchien +- Konfigurationsdateien mit JSON und INI +- Eingabe- und Geschäftsregelvalidierung +- Logging und Debug-Ausgaben +- Dry-Run-Sicherheitsmechanismen +- Unit-Tests mit Pytest +- End-to-End-Tests +- Fixtures und temporäre Testverzeichnisse +- Testabdeckung mit pytest-cov +- Codeformatierung mit Black +- Linting mit Flake8 +- Typprüfung mit MyPy + +## Datenbanken und Betrieb + +- SQLite +- MySQL +- PostgreSQL-Vorbereitung +- ORM-Transaktionen +- Behandlung von Integritätsfehlern +- Virtuelle Python-Umgebungen +- Conda-Umgebungen +- Abhängigkeiten mit Requirements-Dateien verwalten +- Gunicorn und WhiteNoise +- Heroku-Vorbereitung +- S3-kompatibler Speicher mit Boto3 und django-storages +- Plattformübergreifende Startskripte für macOS, Linux und Windows diff --git a/roles.md b/roles.md new file mode 100644 index 0000000..6dd68a0 --- /dev/null +++ b/roles.md @@ -0,0 +1,120 @@ +# Inhalt +Enthält alle Rollen in denen ich schon Tätig war + +## Berufliche Rollen + +### Hauptentwickler und Projektkoordinator für VISOR/OProc + +- Kontext: Prototype-Fund-gefördertes Civic-Tech-Projekt VISOR/OProc zur Beschreibung und Visualisierung öffentlicher, insbesondere partizipativer Stadtentwicklungsprozesse. +- Zeitraum: August 2017 bis Mai 2018, belegt durch eigene Commits in den Repositories `oproc`, `in-transit` und `d3-oproc`. +- Kooperation: Regelmäßige Arbeits- und Abstimmungstreffen mit Forschenden der HTW Dresden zur Erhebung fachlicher Anforderungen, Weiterentwicklung des Datenmodells und Gestaltung des Visualisierungswerkzeugs. +- Rolle: Hauptentwickler mit Verantwortung für die inhaltliche und konzeptionelle Weiterentwicklung des Tools, die Zusammenarbeit mit der HTW und das Vorantreiben des Entwicklungsprozesses; enge Zusammenarbeit mit Astro, dessen Schwerpunkt auf der technischen Umsetzung lag. +- Tätigkeiten: Entwurf und iterative Weiterentwicklung des offenen OProc-Datenmodells; Überführung fachlicher Anforderungen in Funktionen und Visualisierungskonzepte; Konzeption und Entwicklung der Prozess-Timeline, von Swimlanes, Filtern, Suche, Auswahl- und Detailansichten sowie der Verbindung von zeitlicher Darstellung und Prozessgraph; Abstimmung, Priorisierung und Begleitung der technischen Implementierung. + +### Systemadministrator und Entwickler für private Infrastruktur + +- Kontext: Eigene Infrastruktur-, Automatisierungs- und Datenmigrationsprojekte in den Repositories `lokale-scripte`, `ScrapeMediawiki` und `obsidian-backup`. +- Zeitraum: November 2018 bis Mai 2026, belegt durch eigene Commits. +- Tätigkeiten: Entwicklung und Pflege von Skripten für Backups, Server- und Client-Wartung, Nextcloud-Betrieb, Datenbank-Sicherungen, verschlüsselte Offsite-Sicherungen und Docker-basierte Automatisierung; Entwicklung eines Python-Werkzeugs zur Migration von MediaWiki-Inhalten nach Obsidian; modulare, deklarative Konfiguration eines NixOS-Servers mit Speicher-, Datei-, Cloud- und Fernzugriffsdiensten. + +### Embedded-Softwareentwicklung + +- Kontext: Privates Projekt `VRKeting-LED-Rahmen`. +- Zeitraum: September 2022 bis Januar 2023, belegt durch eigene Commits. +- Tätigkeiten: Entwicklung von ESP8266-Firmware zur WLAN- und HTTP-gesteuerten Ansteuerung adressierbarer LEDs; Strukturierung der LED-Logik in C++-Klassen; Implementierung von Farb- und Animationseffekten sowie einer eingebetteten Web-Bedienoberfläche. + +### AR/VR Developer und Unity Software Engineer + +- Unternehmen: vrbits GmbH +- Zeitraum: seit 2019 +- Ort: Leipzig +- Tätigkeiten: + - Konzeption, Entwicklung und Betreuung komplexer interaktiver VR-, AR- und Flat-3D-Anwendungen; + - plattformübergreifende Entwicklung; + - Integration von SDKs, + - Schnittstellen, + - Datenformaten und Services; + - Aufbau und Pflege von CI-Pipelines; + - Performance-Optimierung; + - Entwicklung von ChipAcademy AR-Viewer mit konfigurierbaren Lerninteraktionen, plattformspezifischen Unity-AssetBundles und Drupal-XML-Schnittstelle für Szenenmetadaten; + - Implementierung eines Unity-VR-Trainings für Umspannwerksabläufe mit Schrittsteuerung, Spannungsprüfung, Fehlererkennung und SteamVR-gestützter Navigation; + - Entwicklung eines testgetriebenen Unity- und .NET-AssetDownloaders mit HTTP-Streaming, Cache und Formatprüfung für 3D-Assets; + - Entwicklung der Roche Prozessrallye mit persistenter Lernspiel-Logik, Minispielen, Budget- und Zeitmodell sowie Navigation zwischen Weltkarte und Innenräumen; + - Entwicklung der TenneT-2GW-Platform als mehrsprachige, interaktive Web- und WebXR-Visualisierung auf Basis von Unity, Needle Engine, TypeScript und Three.js; + - Entwicklung eines Unity-WebGL-Trainings für Roche mit VR-Builder-Prozessen, Workplan-Steuerung, + - CSV-basierter Lokalisierung, SCORM-/AICC-HACP-Anbindung an Cornerstone und GameCI-Delivery-Pipeline; + - Entwicklung von SaxoCellTraining als mehrsprachiges WebGL-Training mit Addressables, Workplan-Navigation und responsiver WebGL-UI; + - Ausgliederung und Weiterentwicklung des TrainingGenerators zu einem Unity-UPM-Paket mit UI-Toolkit-Wizard, Szenentemplates, CLI-/Batchmode-Erzeugung, WebGL-Build und Regressionstests. + +### Freelance Full-Stack Developer + +- Kontext: selbstständig +- Zeitraum: 2017 bis 2019 +- Ort: Dresden +- Tätigkeiten: Entwicklung von E-Commerce-, Warenwirtschafts- und Webshop-Lösungen; Frontend-Entwicklung; IT-Consulting; Systemadministration; Migration komplexer Systeme und Datenbanken. + +### Web Developer + +- Kontext: verschiedene nebenberufliche Projekte +- Zeitraum: 2012 bis 2017 +- Ort: Dresden +- Tätigkeiten: Entwicklung von Websites und Online-Shops; Responsive Design und Mobile First; Datenbankdesign und -optimierung. + +### Software Tester und IT Support + +- Unternehmen: MAGIX Development GmbH +- Zeitraum: 2006 bis 2017 +- Ort: Dresden +- Tätigkeiten: Softwaretest und Qualitätssicherung; automatisierte Testentwicklung; IT-Support; Systemadministration; Inhouse-Webentwicklungsprojekte. + +### Server Support + +- Unternehmen: Compaq Computer Corporation +- Zeitraum: 2001 +- Ort: München +- Tätigkeiten: 1st-Level-Support und technischer Support für Serverprodukte. + +## Engagement und Wissensvermittlung + +### Ehrenamtliche Website-Entwicklung + +- Organisation: Fuß- und Radentscheid Dresden. +- Zeitraum: März bis Juli 2022, belegt durch eigene Commits im Repository `fuss-und-radentscheid-dresden`. +- Tätigkeiten: Weiterentwicklung einer statischen Jekyll-Website; Implementierung und Gestaltung wiederverwendbarer Kartenlayouts; Anpassung von Navigation, Footer, Kontakt- und Social-Media-Darstellung; Dokumentation der lokalen Entwicklungsumgebung. + +### Mentor und Jury-Mitglied + +- Organisation: Jugend hackt Dresden +- Zeitraum: seit 2015 +- Ort: Dresden +- Tätigkeiten: Betreuung Jugendlicher bei Coding-Projekten; Jury-Tätigkeit bei Hackathons; Förderung des IT-Nachwuchses. + +### Dozent und Workshop-Leiter + +- Organisation: Chaos macht Schule +- Zeitraum: 2014 bis 2018 +- Ort: Sachsen +- Tätigkeiten: IT-Workshops an Schulen; Aufklärung über Datenschutz und IT-Sicherheit; praktische Programmier-Workshops für Schülerinnen und Schüler. + +### Speaker + +- Organisationen: Web Montag Dresden und CCC-Veranstaltungen +- Zeitraum: 2012 bis 2019 +- Ort: Dresden +- Tätigkeiten: Vorträge zu Webentwicklung und IT-Trends; Wissensaustausch in der Developer-Community. + +## Ausbildung + +### Fachinformatiker für Systemintegration + +- Institutionen: BSZET Dresden und MAGIX AG +- Zeitraum: 2003 bis 2006 +- Ort: Dresden +- Schwerpunkte: Softwaretest und Systemintegration. + +### Technischer Assistent für Automatisierungs- und Computertechnik + +- Institution: Berufliches Schulzentrum Weißwasser +- Zeitraum: 1997 bis 2000 +- Ort: Weißwasser +- Inhalte: Grundlagen der Programmierung und Automatisierungstechnik; Hardware- und Softwareentwicklung. diff --git a/technologies.md b/technologies.md new file mode 100644 index 0000000..0e3381f --- /dev/null +++ b/technologies.md @@ -0,0 +1,430 @@ +# 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 + +### OpenXR, Meta Quest SDK, Mindport VR Builder, Needle Engine und 3D Vista + +- 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. + +### 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. + +### 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. + +### 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. + +### 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. +- 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. + +### 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: Erweiterung einer statischen Website um wiederverwendbare, datengetriebene Seitenelemente. +- Einsatz: Erstellung eines Full-Width-Kartenlayouts und Einbindung von Karten über Liquid-Templates; Pflege von Seiten mit YAML-Front-Matter und Markdown. +- Projekt: Website für den Fuß- und Radentscheid Dresden in `fuss-und-radentscheid-dresden`, belegt durch eigene Commits von März bis Juli 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 eines bestehenden Jekyll-Themes. +- Einsatz: Anpassung von Kartenüberschriften, Kartenlayout, Full-Width-Darstellung, Kontaktbereich, Footer und projektspezifischem Farbschema. +- Projekt: Website für den Fuß- und Radentscheid Dresden in `fuss-und-radentscheid-dresden`, belegt durch eigene Commits im Mai und Juli 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 und WordPress + +- Komplexität: Webshop- und Content-Management-Systeme. +- Einsatz: Entwicklung von Webshops mit Shopware sowie Webentwicklung. +- Kontext: selbstständige Full-Stack-Projekte. + +### 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. + +### 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. + +### 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. + +### 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.