Compare commits
18
Commits
189eee2142
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
09d20c8ad0 | ||
|
|
504f8dfc4d | ||
|
|
dc291fd4fd | ||
|
|
63e4a73570 | ||
|
|
f0bab51f1c | ||
|
|
df6e410e0e | ||
|
|
0451958ed4 | ||
|
|
6fce81a910 | ||
|
|
4723b23600 | ||
|
|
eadfe50e65 | ||
|
|
5e6ecf50a9 | ||
|
|
4455ff92e9 | ||
|
|
318d3f384b | ||
|
|
e3ebcded2e | ||
|
|
47b63aa760 | ||
|
|
a6742fb3fc | ||
|
|
48dea2e3d1 | ||
|
|
2b1fb06eaf |
No files matched your search
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
name: add-knowledge-from-repo
|
name: add-knowledge-from-repo
|
||||||
description: "Use when given a local Git repository folder path to extract verifiable application-relevant facts, update knowledge/projects.md, knowledge/roles.md, and knowledge/technologies.md, then tailor letters/coverletter.tex and letters/cv.tex. Triggers: analyze Git repository for applications, import repository knowledge, update application knowledge base, derive CV or cover letter facts from a repository."
|
description: "Use when given a local software-project folder to extract verifiable application-relevant facts, update knowledge/projects.md, knowledge/roles.md, and knowledge/technologies.md, then tailor letters/coverletter.tex and letters/cv.tex. Supports Git repositories and Git-less project folders when authorship is explicitly confirmed. Triggers: analyze Git repository for applications, import repository knowledge, update application knowledge base, derive CV or cover letter facts from a repository."
|
||||||
argument-hint: "<Pfad zum lokalen Git-Repository>"
|
argument-hint: "<Pfad zum lokalen Projektordner>"
|
||||||
user-invocable: true
|
user-invocable: true
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -9,15 +9,17 @@ user-invocable: true
|
|||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
|
|
||||||
Turn evidence from one local Git repository into precise, reusable application facts. Given a repository folder path, this skill maintains the three Markdown knowledge-base files and then incorporates the newly verified, role-relevant facts into both current application documents in `letters/`.
|
Turn evidence from one local software project into precise, reusable application facts. Given a project folder path, this skill maintains the three Markdown knowledge-base files and then incorporates the newly verified, role-relevant facts into both current application documents in `letters/`.
|
||||||
|
|
||||||
Use this only for local repositories whose contents and Git history are available in the workspace or can be read locally.
|
Use this for local project folders whose contents are available in the workspace or can be read locally. Git history is additional evidence when available, not a prerequisite for source-based facts.
|
||||||
|
|
||||||
## Non-Negotiable Evidence Rules
|
## Non-Negotiable Evidence Rules
|
||||||
|
|
||||||
- Treat repository contents, documentation, configuration, tests, and Git history as evidence, not as permission to infer unrecorded responsibilities.
|
- Treat repository contents, documentation, configuration, tests, and Git history as evidence, not as permission to infer unrecorded responsibilities.
|
||||||
- Count Git commits as evidence of the applicant's contribution only when the author name is one of: `Rob Tranquillo`, `RobTranquillo`, `Tranquillo`, `trnq1ll0`, `Rob`, `rob`, `Robert`, or `Robert Wartenberg`.
|
- Count Git commits as evidence of the applicant's contribution only when the author name or email exactly matches one of: `Rob Tranquillo`, `RobTranquillo`, `rob.tranquillo@gmx.de`, `Tranquillo`, `trnq1ll0`, `rw@boogiedev.net`, `Rob`, `rob`, `Robert`, `Robert Wartenberg`.
|
||||||
- Derive a date range only from qualifying commits. State it as commit-backed only when appropriate; do not invent missing dates.
|
- A Git-less project folder may support Knowledge Base facts when the user explicitly confirms that the project or the relevant work is their own. Record this provenance in the analysis report, not in the Knowledge Base; limit attributed implementation facts to functionality directly observable in the project contents. Do not infer a date range or assign an employment context from the folder alone.
|
||||||
|
- Without qualifying commits or an explicit user confirmation of authorship, describe only the project contents and do not attribute implementation work to the applicant.
|
||||||
|
- Derive a date range only from qualifying commits. Do not invent missing dates or state in the Knowledge Base that a period is commit-backed.
|
||||||
- Distinguish private, voluntary, freelance, and professional contexts exactly as supported by evidence. If the context is unknown, describe it as a repository or project without assigning a role.
|
- Distinguish private, voluntary, freelance, and professional contexts exactly as supported by evidence. If the context is unknown, describe it as a repository or project without assigning a role.
|
||||||
- Do not overstate technology depth. Tie each technology to its concrete use, project, and observed complexity.
|
- Do not overstate technology depth. Tie each technology to its concrete use, project, and observed complexity.
|
||||||
- Record uncertainty and open questions instead of resolving them through assumptions.
|
- Record uncertainty and open questions instead of resolving them through assumptions.
|
||||||
@@ -26,14 +28,15 @@ Use this only for local repositories whose contents and Git history are availabl
|
|||||||
|
|
||||||
### 1. Establish Scope And Inspect The Repository
|
### 1. Establish Scope And Inspect The Repository
|
||||||
|
|
||||||
1. Confirm that the supplied path exists and identify whether it is a Git worktree.
|
1. Confirm that the supplied path exists and identify whether it is a Git worktree. If it is not, determine whether the user has explicitly confirmed authorship before attributing project work.
|
||||||
2. Read the repository's README, contribution notes, build files, dependency manifests, configuration, tests, documentation, and the relevant source directories. Prefer focused searches over broad dumps.
|
2. Read the repository's README, contribution notes, build files, dependency manifests, configuration, tests, documentation, and the relevant source directories. Prefer focused searches over broad dumps.
|
||||||
3. For Git worktrees, inspect:
|
3. For Git worktrees, inspect:
|
||||||
- remotes and current branch;
|
- remotes and current branch;
|
||||||
- the author-filtered commit history, including commit dates and changed files;
|
- the author-filtered commit history, including commit dates and changed files;
|
||||||
- relevant file history or diffs for non-obvious implementation details.
|
- relevant file history or diffs for non-obvious implementation details.
|
||||||
4. Identify facts in five categories: purpose, concrete implementation, technical challenges, implemented solutions, and technologies.
|
4. For Git-less project folders with explicit user-confirmed authorship, inspect the same source evidence but record the missing Git history and do not derive dates from filesystem metadata.
|
||||||
5. Before editing, state a local, falsifiable summary of the strongest evidence and a check that could invalidate it.
|
5. Identify facts in five categories: purpose, concrete implementation, technical challenges, implemented solutions, and technologies.
|
||||||
|
6. Before editing, state a local, falsifiable summary of the strongest evidence and a check that could invalidate it.
|
||||||
|
|
||||||
### 2. Reconcile The Knowledge Base
|
### 2. Reconcile The Knowledge Base
|
||||||
|
|
||||||
@@ -45,18 +48,18 @@ Read all three files before making changes:
|
|||||||
|
|
||||||
Then update them in this order:
|
Then update them in this order:
|
||||||
|
|
||||||
1. **Projects:** Add or extend one project entry with repository source, evidence-backed period, context, challenges, and solutions.
|
1. **Projects:** Add or extend one project entry with project source, period where available, context, challenges, and solutions.
|
||||||
2. **Roles:** Add or extend a role only where its context and responsibilities are supported. Avoid a role entry when the repository cannot substantiate one.
|
2. **Roles:** Add or extend a role only where its context and responsibilities are supported. Avoid a role entry when the repository cannot substantiate one.
|
||||||
3. **Technologies:** Add or extend individual technology entries. For every technology, include complexity, concrete usage, and the project/context.
|
3. **Technologies:** Add or extend individual technology entries. For every technology, include complexity, concrete usage, and the project/context.
|
||||||
|
|
||||||
Maintain existing headings, German language, and factual bullet style. Merge with an existing entry when the repository or project is already present; do not duplicate facts across entries unnecessarily. Do not modify unrelated Knowledge Base statements.
|
Maintain existing headings, German language, and factual bullet style. Merge with an existing entry when the repository or project is already present; do not duplicate facts across entries unnecessarily. Do not modify unrelated Knowledge Base statements. Keep evidence provenance out of Knowledge Base content: do not write phrases such as `belegt durch eigene Commits`, `Commit-Historie`, `Git-Historie`, `laut Nutzerangabe`, or equivalent wording. Use evidence only to decide which factual claims are admissible; report the evidence basis separately in the final response when useful.
|
||||||
|
|
||||||
### 3. Update Both Application Documents
|
### 3. Update Both Application Documents
|
||||||
|
|
||||||
After updating all three Knowledge-Base files, update both files below. This is required when the repository produces at least one new, verified fact relevant to the current application.
|
After updating all three Knowledge-Base files, update both files below. This is required when the repository produces at least one new, verified fact relevant to the current application.
|
||||||
|
|
||||||
1. Read `letters/coverletter.tex`, `letters/cv.tex`, and the shared document entry points `latex/coverletter.tex` and `latex/cv.tex`.
|
1. Read `letters/coverletter.tex`, `letters/cv.tex`, and the shared document entry points `latex/coverletter.tex` and `latex/cv.tex`.
|
||||||
2. Determine the target role from the current cover letter. Select only newly documented facts that support this role and can be defended from repository evidence.
|
2. Determine the target role from the current cover letter. Select only newly documented facts that support this role and can be defended from project based evidence.
|
||||||
3. Update `letters/coverletter.tex` with one or two concise, concrete examples that connect the new facts to the target role. Clearly label private work as private where relevant.
|
3. Update `letters/coverletter.tex` with one or two concise, concrete examples that connect the new facts to the target role. Clearly label private work as private where relevant.
|
||||||
4. Update `letters/cv.tex` with concise, recruiter-scannable evidence, such as a suitable skills entry or a project-related bullet. Do not add a duplicate role merely to force the fact into the CV.
|
4. Update `letters/cv.tex` with concise, recruiter-scannable evidence, such as a suitable skills entry or a project-related bullet. Do not add a duplicate role merely to force the fact into the CV.
|
||||||
5. Update both documents in the same run. Do not update only the Knowledge Base or only one letter when relevant new facts exist.
|
5. Update both documents in the same run. Do not update only the Knowledge Base or only one letter when relevant new facts exist.
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
*.pdf
|
*.pdf
|
||||||
latex/build/
|
latex/build/
|
||||||
temp
|
temp
|
||||||
|
*.log
|
||||||
|
.DS_Store
|
||||||
Vendored
+25
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"chat.byokUtilityModelDefault": "mainAgent",
|
||||||
|
"latex-workshop.latex.tools": [
|
||||||
|
{
|
||||||
|
"name": "make all",
|
||||||
|
"command": "make",
|
||||||
|
"args": [
|
||||||
|
"all"
|
||||||
|
],
|
||||||
|
"cwd": "%WORKSPACE_FOLDER%"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"latex-workshop.latex.recipes": [
|
||||||
|
{
|
||||||
|
"name": "make all",
|
||||||
|
"tools": [
|
||||||
|
"make all"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"latex-workshop.latex.recipe.default": "make all",
|
||||||
|
"latex-workshop.latex.build.enableMagicComments": true,
|
||||||
|
"latex-workshop.latex.autoBuild.run": "onSave",
|
||||||
|
"latex-workshop.latex.outDir": "%WORKSPACE_FOLDER%"
|
||||||
|
}
|
||||||
@@ -1,14 +1,28 @@
|
|||||||
.PHONY: all coverletter cv clean
|
.DEFAULT_GOAL := help
|
||||||
|
|
||||||
|
.PHONY: help all coverletter cv application clean
|
||||||
|
|
||||||
LATEX = TEXINPUTS=latex//: xelatex
|
LATEX = TEXINPUTS=latex//: xelatex
|
||||||
|
PDF_MERGE = qpdf
|
||||||
BUILD_DIR = latex/build
|
BUILD_DIR = latex/build
|
||||||
|
APPLICATION_PDF = Bewerbung_Entwickler_Robert_Wartenberg.pdf
|
||||||
|
|
||||||
all: coverletter cv
|
help:
|
||||||
|
@echo "Verfuegbare Befehle:"
|
||||||
|
@echo " make all Anschreiben, CV und Gesamt-PDF erzeugen"
|
||||||
|
@echo " make application Gesamt-PDF samt erforderlicher Einzel-PDFs erzeugen"
|
||||||
|
@echo " make coverletter Nur das Anschreiben erzeugen"
|
||||||
|
@echo " make cv Nur den Lebenslauf erzeugen"
|
||||||
|
@echo " make clean Alle erzeugten PDF- und Build-Dateien entfernen"
|
||||||
|
|
||||||
|
all: application
|
||||||
|
|
||||||
coverletter: coverletter.pdf
|
coverletter: coverletter.pdf
|
||||||
|
|
||||||
cv: cv.pdf
|
cv: cv.pdf
|
||||||
|
|
||||||
|
application: $(APPLICATION_PDF)
|
||||||
|
|
||||||
coverletter.pdf: latex/coverletter.tex letters/coverletter.tex latex/personal.tex latex/awesome-cv.cls latex/fontawesome.sty
|
coverletter.pdf: latex/coverletter.tex letters/coverletter.tex latex/personal.tex latex/awesome-cv.cls latex/fontawesome.sty
|
||||||
|
|
||||||
@mkdir -p $(BUILD_DIR)
|
@mkdir -p $(BUILD_DIR)
|
||||||
@@ -20,5 +34,8 @@ cv.pdf: latex/cv.tex letters/cv.tex latex/personal.tex latex/awesome-cv.cls late
|
|||||||
$(LATEX) -interaction=nonstopmode -halt-on-error -output-directory=$(BUILD_DIR) $<
|
$(LATEX) -interaction=nonstopmode -halt-on-error -output-directory=$(BUILD_DIR) $<
|
||||||
mv $(BUILD_DIR)/cv.pdf $@
|
mv $(BUILD_DIR)/cv.pdf $@
|
||||||
|
|
||||||
|
$(APPLICATION_PDF): coverletter.pdf cv.pdf Makefile
|
||||||
|
$(PDF_MERGE) --empty --pages coverletter.pdf cv.pdf -- $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(BUILD_DIR) coverletter.pdf cv.pdf
|
rm -rf $(BUILD_DIR) coverletter.pdf cv.pdf $(APPLICATION_PDF)
|
||||||
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
## Struktur
|
## Struktur
|
||||||
|
|
||||||
- `letters/coverletter.tex` enthaelt nur den an das Unternehmen angepassten Inhalt des Anschreibens.
|
- `letters/coverletter.tex` Anschreibens.
|
||||||
- `letters/cv.tex` enthaelt nur den Inhalt des Lebenslaufs.
|
- `letters/cv.tex` Lebenslaufs.
|
||||||
- `latex/` enthaelt die gemeinsame Vorlage, Stammdaten, Fonts und alle beim Build erzeugten Hilfsdateien.
|
- `latex/` gemeinsame Vorlage, Stammdaten, Fonts und alle beim Build erzeugten Hilfsdateien.
|
||||||
- `coverletter.pdf` und `cv.pdf` werden im Wurzelverzeichnis erzeugt.
|
- alle PDFs werden im Wurzelverzeichnis erzeugt.
|
||||||
|
|
||||||
Die gemeinsamen Angaben wie Name, Kontaktdaten und Akzentfarbe stehen in `latex/personal.tex`.
|
Die gemeinsamen Angaben wie Name, Kontaktdaten und Akzentfarbe stehen in `latex/personal.tex`.
|
||||||
|
|
||||||
@@ -13,6 +13,15 @@ Die gemeinsamen Angaben wie Name, Kontaktdaten und Akzentfarbe stehen in `latex/
|
|||||||
|
|
||||||
Im Verzeichnis `bewerbung-latex2` ausfuehren:
|
Im Verzeichnis `bewerbung-latex2` ausfuehren:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make all
|
||||||
|
```
|
||||||
|
|
||||||
|
Dabei werden zuerst Anschreiben und Lebenslauf gebaut und anschliessend in dieser
|
||||||
|
Reihenfolge zur vollstaendigen Bewerbungs-PDF zusammengefuehrt.
|
||||||
|
|
||||||
|
Eine Uebersicht aller verfuegbaren Befehle zeigt:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
make
|
make
|
||||||
```
|
```
|
||||||
@@ -22,6 +31,7 @@ Einzeln erzeugen:
|
|||||||
```sh
|
```sh
|
||||||
make coverletter
|
make coverletter
|
||||||
make cv
|
make cv
|
||||||
|
make application
|
||||||
```
|
```
|
||||||
|
|
||||||
Alle erzeugten Dateien entfernen:
|
Alle erzeugten Dateien entfernen:
|
||||||
@@ -30,4 +40,5 @@ Alle erzeugten Dateien entfernen:
|
|||||||
make clean
|
make clean
|
||||||
```
|
```
|
||||||
|
|
||||||
Voraussetzung ist eine XeLaTeX-Installation, zum Beispiel MacTeX auf macOS.
|
Voraussetzungen sind eine XeLaTeX-Installation, zum Beispiel MacTeX auf macOS,
|
||||||
|
und `qpdf` zum Zusammenfuehren der PDF-Dateien.
|
||||||
@@ -58,6 +58,42 @@ Jedes Projekt/Kontext besteht aus einem Link bzw Quell, einer Beschreibung, den
|
|||||||
- Herausforderungen: Wiederverwendbare, responsive Seitenelemente für unterschiedliche Informationsinhalte; einheitliche Einbindung von Navigation, Kontakt- und Social-Media-Links; lokal reproduzierbarer Build unter Windows und Linux.
|
- 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.
|
- 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
|
## WLAN-gesteuerter LED-Rahmen
|
||||||
|
|
||||||
- Zeitraum: September 2022 bis Januar 2023, belegt durch eigene Commits im Repository.
|
- Zeitraum: September 2022 bis Januar 2023, belegt durch eigene Commits im Repository.
|
||||||
@@ -81,3 +117,67 @@ Jedes Projekt/Kontext besteht aus einem Link bzw Quell, einer Beschreibung, den
|
|||||||
- Kontext: Früher 3D-Prototyp eines Falling-Block-Spiels in Rust.
|
- 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.
|
- 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.
|
- Lösungen: 3D-Fenster, Kamera, Plattform und Würfel mit `kiss3d`; Zustandsmodell über eine `BrickPos`-Struktur; zeitgesteuertes Fallen mit `Instant` und `Duration`; Gamepad-Abfrage über `stick`; Begrenzung der X-, Y- und Z-Koordinaten durch eine eigene Funktion; erneutes Erzeugen eines Würfels beim Erreichen des Spielfeldbodens.
|
||||||
|
|
||||||
|
## ChipAcademy AR-Viewer-PackageBuilder
|
||||||
|
|
||||||
|
- Zeitraum: 2020
|
||||||
|
- Quelle: lokales Unity-Arbeitsverzeichnis `ChipAcademy/ARViewer Package`, `ChipAcademy/BackendConnector` und `ChipAcademy/Backend/Scripts`.
|
||||||
|
- Kontext: Unity-PackageBuilder für konfigurierbare AR-Lernszenen und deren Bereitstellung im AR Viewer.
|
||||||
|
- Herausforderungen: Wiederverwendbare Konfiguration von 3D-Modellen und Interaktionen; plattformspezifische Bereitstellung von Szeneninhalten; Abbildung von Lern- und Prüfungsinteraktionen mit Text-, Bild-, Video- und Animationsmarkern.
|
||||||
|
- Lösungen: Unity-Editor-Menüs zum Erzeugen von AssetBundles für Android, Windows und iOS sowie zum Export des Builder-Pakets; `ScriptableObject` zur Konfiguration von Modell, Markern und Cross-Section-Darstellung; Laufzeitlogik für Lern- und Prüfungsmodus, Schrittsequenzen, Videoanzeige und Zuordnungsinteraktionen; Drupal-8.7.7-Backend mit XML-Endpunkt für Szenenmetadaten, Bild- und Beschreibungsdaten sowie plattformspezifische AssetBundle-URLs.
|
||||||
|
|
||||||
|
## VR-Training für EnviaM-Umspannwerk
|
||||||
|
|
||||||
|
- Zeitraum: Dezember 2019 bis Juli 2022
|
||||||
|
- Quelle: `vr-bits/EnviaM_Umspannwerk`.
|
||||||
|
- Kontext: Unity-VR-Anwendung zur Vermittlung von Abläufen in einem Umspannwerk.
|
||||||
|
- Herausforderungen: Geführte und prüfbare Arbeitsschritte mit unterschiedlichen Schwierigkeitsgraden; realistische Rückmeldung von Spannungszuständen; zuverlässige Teleportation und GUI bei Szenenwechseln.
|
||||||
|
- Lösungen: Integration von SteamVR, OpenVR, Oculus und VRTK; StepManager-basierte Schrittsteuerung mit Tutorial- und Testmodus; Zustandsmodell für Schalterverriegelungen und Spannungsprüfung einschließlich LED- und Display-Rückmeldung; Fehlererkennung für falsche Verriegelungen; asynchrones Laden und Entladen von Szenen sowie Teleportation mit konfigurierbarem Bildschirm-Übergang.
|
||||||
|
|
||||||
|
## MMS AssetDownloader
|
||||||
|
|
||||||
|
- Zeitraum: Juli bis August 2025
|
||||||
|
- Quelle: `vr-bits/AssetDownloader` und Telekom DevOps GitLab.
|
||||||
|
- Kontext: Unity- und .NET-Standard-Bibliothek zum Herunterladen, Zwischenspeichern und Vorbereiten von 3D-Assets für eine Production-Manual-Anwendung.
|
||||||
|
- Herausforderungen: Robuste asynchrone Downloads großer Dateien mit Fortschrittsanzeige, Abbruch und Wiederaufnahme; überprüfbare Cache-Konsistenz; Trennung einer Unity-agnostischen Kernbibliothek von der Unity-Anbindung; Unterstützung mehrerer 3D-Dateiformate.
|
||||||
|
- Lösungen: HTTP-Streaming mit temporären Dateien und Range-Requests für wiederaufnehmbare Downloads; konfigurierbare parallele Download-Jobs, Fortschritts- und Fehlerereignisse sowie Dateicache mit Prüfsummen und Metadaten; Formatprüfung für glTF, GLB, USD und USDZ sowie Unity-Wrapper; testgetriebene Entwicklung mit NUnit, Moq, HTTP-Mocks und Arrange-Act-Assert-Tests für Download, Cache, Abbruch, Integrität, Import und Resume.
|
||||||
|
|
||||||
|
## Roche Prozessrallye
|
||||||
|
|
||||||
|
- Zeitraum: April bis November 2021
|
||||||
|
- Quelle: `vr-bits/RocheProzessRallye`.
|
||||||
|
- Kontext: Unity-Anwendung zur spielerischen Vermittlung von Prozessschritten in Produktion, Produktionskoordination, Ansatz, In-Process-Kontrolle, Abfüllung, Verpackung und Endfreigabe.
|
||||||
|
- Herausforderungen: Abbildung eines fortlaufenden Lernspiels mit aufeinander aufbauenden Stationen; Verwaltung von Versuchen, Erfolgen, Zeit und Budget; Navigation zwischen Weltkarte, Innenräumen und Minispielen sowie Einbindung von Lernvideos.
|
||||||
|
- Lösungen: Sieben Minispiele mit ereignisgesteuerter Freischaltung der nächsten Station; persistente Spiel-, Charakter-, Zeit-, Budget- und Ergebnisdaten sowie ein mit Paritätsbit geschützter Fortsetzungscode; Navigation über NavMesh mit additiv geladenen Innenraumszenen und vorab geladenen Szenen; Video-UI mit Streaming-URLs, Ladezustand, Seitenverhältnis- und Wiedergabesteuerung.
|
||||||
|
|
||||||
|
## TenneT 2GW Platform
|
||||||
|
|
||||||
|
- Zeitraum: Februar bis Oktober 2023, belegt durch eigene Commits im Repository.
|
||||||
|
- Quelle: lokales Git-Repository `Tennet2GWPlatform`.
|
||||||
|
- 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`
|
||||||
|
- 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`.
|
||||||
|
- 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.
|
||||||
@@ -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
|
||||||
+25
-1
@@ -3,6 +3,14 @@ Enthält alle Rollen in denen ich schon Tätig war
|
|||||||
|
|
||||||
## Berufliche Rollen
|
## 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
|
### Systemadministrator und Entwickler für private Infrastruktur
|
||||||
|
|
||||||
- Kontext: Eigene Infrastruktur-, Automatisierungs- und Datenmigrationsprojekte in den Repositories `lokale-scripte`, `ScrapeMediawiki` und `obsidian-backup`.
|
- Kontext: Eigene Infrastruktur-, Automatisierungs- und Datenmigrationsprojekte in den Repositories `lokale-scripte`, `ScrapeMediawiki` und `obsidian-backup`.
|
||||||
@@ -20,7 +28,23 @@ Enthält alle Rollen in denen ich schon Tätig war
|
|||||||
- Unternehmen: vrbits GmbH
|
- Unternehmen: vrbits GmbH
|
||||||
- Zeitraum: seit 2019
|
- Zeitraum: seit 2019
|
||||||
- Ort: Leipzig
|
- 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.
|
- 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
|
### Freelance Full-Stack Developer
|
||||||
|
|
||||||
|
|||||||
+172
-7
@@ -8,13 +8,111 @@ Jede Technologie wird einzeln genannt und enthält das Level der verwendeten Kom
|
|||||||
|
|
||||||
- Komplexität: Komplexe, interaktive Anwendungen und plattformübergreifende Produktentwicklung.
|
- 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.
|
- 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.
|
||||||
- Kontext: vrbits GmbH, seit 2019.
|
- 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
|
### OpenXR, Meta Quest SDK, Mindport VR Builder, Needle Engine und 3D Vista
|
||||||
|
|
||||||
- Komplexität: Integration unterschiedlicher Plattform-SDKs und XR-Werkzeuge.
|
- Komplexität: Integration unterschiedlicher Plattform-SDKs und XR-Werkzeuge.
|
||||||
- Einsatz: Entwicklung von VR-Trainings, 3D-Visualisierungen und virtuellen Showrooms für unterschiedliche Zielsysteme.
|
- Einsatz: Entwicklung von VR-Trainings, 3D-Visualisierungen und virtuellen Showrooms für unterschiedliche Zielsysteme.
|
||||||
- Kontext: vrbits GmbH.
|
- 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
|
### Android und iOS
|
||||||
|
|
||||||
@@ -36,9 +134,49 @@ Jede Technologie wird einzeln genannt und enthält das Level der verwendeten Kom
|
|||||||
|
|
||||||
### Python
|
### Python
|
||||||
|
|
||||||
- Komplexität: Entwicklung eines konfigurationsgesteuerten Migrationswerkzeugs mit API-Anbindung, Datenkonvertierung und Dateiverarbeitung.
|
- 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.
|
- Einsatz:
|
||||||
- Projekt: MediaWiki-zu-Obsidian-Migration in `ScrapeMediawiki`, belegt durch eigene Commits von August bis Oktober 2024.
|
- 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
|
### MediaWiki-API, Requests, Beautiful Soup und html2text
|
||||||
|
|
||||||
@@ -99,9 +237,15 @@ Jede Technologie wird einzeln genannt und enthält das Level der verwendeten Kom
|
|||||||
### HTML5, CSS3 und jQuery
|
### HTML5, CSS3 und jQuery
|
||||||
|
|
||||||
- Komplexität: Webentwicklung mit responsiven Benutzeroberflächen.
|
- Komplexität: Webentwicklung mit responsiven Benutzeroberflächen.
|
||||||
- Einsatz: Entwicklung von Websites und Online-Shops; Responsive Design und Mobile First.
|
- Einsatz:
|
||||||
- Zusätzlicher Einsatz: Eingebettete HTML- und CSS-Bedienoberfläche für die Steuerung eines LED-Rahmens im Browser.
|
- Entwicklung von Websites und Online-Shops; Responsive Design und Mobile First.
|
||||||
- Kontext: nebenberufliche Webprojekte, 2012 bis 2017, sowie WLAN-gesteuerter LED-Rahmen in `VRKeting-LED-Rahmen`, September 2022 bis Januar 2023.
|
- 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
|
### JavaScript und XMLHttpRequest
|
||||||
|
|
||||||
@@ -115,6 +259,24 @@ Jede Technologie wird einzeln genannt und enthält das Level der verwendeten Kom
|
|||||||
- Einsatz: Web- und Full-Stack-Entwicklung.
|
- Einsatz: Web- und Full-Stack-Entwicklung.
|
||||||
- Kontext: berufliche Erfahrung in Webentwicklung und Full-Stack-Projekten.
|
- 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
|
### Shopware und WordPress
|
||||||
|
|
||||||
- Komplexität: Webshop- und Content-Management-Systeme.
|
- Komplexität: Webshop- und Content-Management-Systeme.
|
||||||
@@ -126,6 +288,8 @@ Jede Technologie wird einzeln genannt und enthält das Level der verwendeten Kom
|
|||||||
- Komplexität: Datenmodellierung, Datenintegration und Schnittstellenprogrammierung.
|
- Komplexität: Datenmodellierung, Datenintegration und Schnittstellenprogrammierung.
|
||||||
- Einsatz: Datenbankdesign und -optimierung; Integration und Kapselung von Schnittstellen, Datenformaten und Services.
|
- Einsatz: Datenbankdesign und -optimierung; Integration und Kapselung von Schnittstellen, Datenformaten und Services.
|
||||||
- Kontext: Webprojekte, selbstständige Full-Stack-Projekte und vrbits GmbH.
|
- 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
|
## Betrieb, Qualität und Delivery
|
||||||
|
|
||||||
@@ -134,6 +298,7 @@ Jede Technologie wird einzeln genannt und enthält das Level der verwendeten Kom
|
|||||||
- Komplexität: Continuous Integration für mehrere Zielplattformen.
|
- Komplexität: Continuous Integration für mehrere Zielplattformen.
|
||||||
- Einsatz: CI-Pipelines auf lokalen und Remote-Runnern für sämtliche Zielplattformen.
|
- Einsatz: CI-Pipelines auf lokalen und Remote-Runnern für sämtliche Zielplattformen.
|
||||||
- Kontext: vrbits GmbH.
|
- 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
|
### Docker, Linux, POSIX Shell und Systemadministration
|
||||||
|
|
||||||
|
|||||||
@@ -397,7 +397,7 @@
|
|||||||
\newcommand{\acvHeaderAfterAddressSkip}{-.5mm}
|
\newcommand{\acvHeaderAfterAddressSkip}{-.5mm}
|
||||||
\newcommand{\acvHeaderIconSep}{\space}
|
\newcommand{\acvHeaderIconSep}{\space}
|
||||||
\newcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
|
\newcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
|
||||||
\newcommand{\acvHeaderAfterSocialSkip}{6mm}
|
\newcommand{\acvHeaderAfterSocialSkip}{2mm}
|
||||||
\newcommand{\acvHeaderAfterQuoteSkip}{5mm}
|
\newcommand{\acvHeaderAfterQuoteSkip}{5mm}
|
||||||
|
|
||||||
% Others
|
% Others
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
%!TEX TS-program = xelatex
|
|
||||||
\documentclass[11pt,a4paper]{awesome-cv}
|
\documentclass[11pt,a4paper]{awesome-cv}
|
||||||
|
|
||||||
\geometry{left=2cm,top=.8cm,right=2cm,bottom=1.8cm,footskip=.5cm}
|
\geometry{left=2cm,top=.8cm,right=2cm,bottom=1.8cm,footskip=.5cm}
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
%!TEX TS-program = xelatex
|
|
||||||
\documentclass[11pt,a4paper]{awesome-cv}
|
\documentclass[11pt,a4paper]{awesome-cv}
|
||||||
|
|
||||||
\geometry{left=1.4cm,top=.8cm,right=1.4cm,bottom=1.8cm,footskip=.5cm}
|
\geometry{left=1.4cm,top=.8cm,right=1.4cm,bottom=1.8cm,footskip=.5cm}
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
% Gemeinsame Stammdaten fuer Anschreiben und Lebenslauf.
|
% Gemeinsame Stammdaten fuer Anschreiben und Lebenslauf.
|
||||||
\name{Robert}{Wartenberg}
|
\name{Robert}{Wartenberg}
|
||||||
\position{Entwickler{\enskip\cdotp\enskip}Software Engineer{\enskip\cdotp\enskip}Automatisierungstechnologe}
|
\position{Software Engineering{\enskip\cdotp\enskip}FullStack-Development{\enskip\cdotp\enskip}Systemadministration}
|
||||||
\address{Robert-Matzke-Stra\ss e 43, 01127 Dresden}
|
\address{Robert-Matzke-Straße 43, 01127 Dresden}
|
||||||
\mobile{(+49) 152 085 166 33}
|
\mobile{(+49) 152 085 166 33}
|
||||||
\email{rw@boogiedev.net}
|
\email{rw@boogiedev.net}
|
||||||
\github{RobTranquillo}
|
\github{RobTranquillo}
|
||||||
|
|||||||
@@ -1,23 +1,24 @@
|
|||||||
|
% !TEX root = ../latex/coverletter.tex
|
||||||
\recipient
|
\recipient
|
||||||
{IBH connect GmbH}
|
{IBH connect GmbH}
|
||||||
{Heilbronner Stra\ss e 20 \\ 01189 Dresden}
|
{Heilbronner Straße 20 \\ 01189 Dresden}
|
||||||
\letterdate{\today}
|
\letterdate{\today}
|
||||||
\lettertitle{Bewerbung als Entwickler (m/w/d)}
|
\lettertitle{Bewerbung als Entwickler im DataCenter-Team}
|
||||||
\letteropening{Sehr geehrter Herr Bierstedt,}
|
\letteropening{Sehr geehrter Herr Bierstedt,}
|
||||||
\letterclosing{Mit freundlichen Gr\"u\ss en,}
|
\letterclosing{Mit freundlichen Grüßen,}
|
||||||
|
|
||||||
\makelettertitle
|
\makelettertitle
|
||||||
\begin{cvletter}
|
\begin{cvletter}
|
||||||
|
|
||||||
Softwareentwicklung begleitet mich seit fast 30 Jahren: zun\"achst aus pers\"onlicher Begeisterung, heute als Beruf und Leidenschaft zugleich. Besonders motiviert mich die Entwicklung von Werkzeugen, die wiederkehrende Abl\"aufe zuverl\"assig automatisieren, Systeme sinnvoll vernetzen und den Arbeitsalltag sp\"urbar erleichtern. Die Verbindung aus Rechenzentrumsbetrieb, Schnittstellenprogrammierung und Prozessautomatisierung bei der IBH connect GmbH spricht mich besonders an.
|
Softwareentwicklung begleitet mich seit fast 30 Jahren. Zunächst aus persönlicher Begeisterung, heute als Beruf und Leidenschaft zugleich. Die Verbindung aus Rechenzentrumsbetrieb, Schnittstellenprogrammierung und Prozessautomatisierung bei der IBH connect GmbH spricht mich besonders an und motiviert mich sehr zu dieser Bewerbung.
|
||||||
|
|
||||||
Seit fast sieben Jahren konzipiere, entwickle und betreue ich komplexe Anwendungen. Mein Schwerpunkt liegt dabei auf interaktiven VR-/AR-Anwendungen mit C\# in der GameEngine Unity3D; zugleich geh\"oren die Integration und Kapselung unterschiedlicher Plattform-SDKs, Schnittstellen, Datenformate sowie interner und externer Services zu meinem Arbeitsalltag. Dabei l\"ose ich technische Herausforderungen wie Multi-Target-Unity-Projekte aus einer Codebasis, Client-Server-Kommunikation und Performance-Optimierungen auf den Zielger\"aten. Diese Erfahrung m\"ochte ich einsetzen, um interne und externe Tools weiterzuentwickeln und Ihre Systeme robust miteinander zu verbinden.
|
Für die IBH bringe ich langjährige Python-Erfahrung mit, die ich für verschiedenste Aufgaben auf Server und Desktop einsetze. Geschäftlich wie privat nutze ich sowohl POSIX-Shell-Skripte in unterschiedlichsten Linux-Distributionen als auch Docker und kleine, selbstgehostete Cloud-Lösungen. Server konfiguriere ich gern auch deskriptiv mit Nix oder visuell mit TrueNAS. Mit Ansible habe ich bisher noch nicht gearbeitet, jedoch ist mir Container-Orchestrierung von Docker Compose bekannt. In ersten Lernprojekten konnte ich zudem bereits mit Django und Rust arbeiten – insbesondere Letzteres beobachte ich seit Langem mit großem Interesse und freue mich darauf, die Sprache professionell einsetzen zu können. Als ehemaliger Lead (bis 2021) der Open-Data-Initiative in Dresden und Linux-Fan sind mir Open-Source-Beiträge ebenfalls selbstverständlich; meine Beiträge sind über mein GitHub-Profil in der Kopfzeile einsehbar.
|
||||||
|
|
||||||
Aus meiner Ausbildung zum Fachinformatiker f\"ur Systemintegration sowie meiner T\"atigkeit in IT-Support, Test und Systemadministration bringe ich ein ausgepr\"agtes Verst\"andnis f\"ur Betrieb, Infrastruktur und zuverl\"assige Abl\"aufe mit. Erg\"anzend zu C\# arbeite ich mit Python, Git, Docker, Linux und REST-APIs. In privaten Infrastrukturprojekten automatisiere ich seit mehreren Jahren Backups und Betriebsabl\"aufe mit Shell-Skripten, rsync \"uber SSH, Restic, systemd-Timern und Docker. Dazu geh\"ort unter anderem der Betrieb eines modular konfigurierten NixOS-Servers mit Nextcloud. Die technischen Grundlagen von Rust sind mir vertraut; bislang habe ich damit ein kleines privates 3D-Projekt umgesetzt. Durch meine Erfahrung in Webentwicklung und Full-Stack-Projekten kann ich mich sowohl im Backend als auch bei Bedarf im Frontend einbringen. Neue Technologien und Programmiersprachen erschlie\ss e ich mir kontinuierlich und mit gro\ss er Neugier.
|
Seit 2019 entwickle ich hauptberuflich professionell VR-/AR-Anwendungen mit C\# in Unity3D. Meine Schwerpunkte liegen dabei auf Editor-Tooling zur Automatisierung von Produktionsabläufen, der Integration von SDKs und Paketen sowie dem Design von Schnittstellen und Datenformaten. Darüber hinaus verantworte ich Multi-Target-Builds, Client-Server-Kommunikation, Performance-Optimierung und CI/CD-Pipelines. Webbasierte Projekte realisiere ich mit HTML/JavaScript und Jekyll/Liquid.
|
||||||
|
|
||||||
Besonders interessiert mich Softwarearchitektur und die Frage, wie Systeme langfristig wartbar, erweiterbar und verst\"andlich bleiben. Clean Code, SOLID-Prinzipien und die Weiterentwicklung bestehender Systeme pr\"agen daher meine Arbeit. Den fachlichen Austausch im Team sch\"atze ich sehr und arbeite gerne gemeinsam an tragf\"ahigen L\"osungen f\"ur komplexe technische Fragestellungen.
|
Meine Ausbildungen sowie Tätigkeiten in IT-Support, Test, Full-Stack-Development und Systemadministration ermöglichen es mir, in neuen Umgebungen schnell produktiv sein zu können. Dank Full-Stack-Erfahrung bin ich im Backend, Frontend oder in der Toolentwicklung einsetzbar und erschließe mir neue Technologien mit großer Neugier. In der Softwarearchitektur selbst treibt mich die Frage, wie Systeme langfristig wartbar, erweiterbar und verständlich bleiben können. Clean Code, SOLID-Prinzipien und die Weiterentwicklung bestehender Systeme prägen daher meine Arbeit. Den persönlichen und fachlichen Austausch im Team schätze ich sehr und arbeite gerne gemeinsam an tragfähigen Lösungen für komplexe technische Fragestellungen.
|
||||||
|
|
||||||
Meine Gehaltsvorstellung liegt bei 5.300 Euro brutto monatlich auf Basis einer 40-Stunden-Woche. Mein fr\"uhestm\"oglicher Eintrittstermin ist der 1. Oktober 2026. Ich freue mich darauf, Sie und Ihr Team in einem pers\"onlichen Gespr\"ach kennenzulernen.
|
Meine Gehaltsvorstellung liegt bei 4.600 Euro brutto monatlich auf Basis einer 40-Stunden-Woche. Mein frühestmöglicher Eintrittstermin ist der 1. Oktober 2026. Ich freue mich darauf, Sie und Ihr Team in einem persönlichen Gespräch kennenzulernen.
|
||||||
|
|
||||||
\end{cvletter}
|
\end{cvletter}
|
||||||
\vspace{0.1mm}
|
\vspace{0.1mm}
|
||||||
|
|||||||
+67
-26
@@ -1,3 +1,4 @@
|
|||||||
|
% !TEX root = ../latex/cv.tex
|
||||||
\quote{``Be the change that you want to see in the world."}
|
\quote{``Be the change that you want to see in the world."}
|
||||||
|
|
||||||
%-------------------------------------------------------------------------------
|
%-------------------------------------------------------------------------------
|
||||||
@@ -106,13 +107,13 @@
|
|||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{Fachinformatiker für Systemintegration} % Degree
|
{BSZET Dresden / MAGIX} % Degree
|
||||||
{BSZET Dresden / MAGIX} % Institution
|
{Fachinformatiker für Systemintegration} % Institution
|
||||||
{Dresden} % Location
|
{Dresden} % Location
|
||||||
{2003 - 2006} % Date(s)
|
{2003 - 2006} % Date(s)
|
||||||
{
|
{
|
||||||
\begin{cvitems} % Description(s) bullet points
|
\begin{cvitems} % Description(s) bullet points
|
||||||
\item {Schwerpunkt: Softwaretest und Systemintegration}
|
\item {Schwerpunkt: Softwaretest, Systemintegration, Virtualisierung}
|
||||||
\item {Ausbildungsbetrieb: MAGIX AG}
|
\item {Ausbildungsbetrieb: MAGIX AG}
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}
|
}
|
||||||
@@ -121,13 +122,13 @@
|
|||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{Technischer Assistent für Automatisierungs- und Computertechnik} % Degree
|
|
||||||
{Berufliches Schulzentrum Weißwasser} % Institution
|
{Berufliches Schulzentrum Weißwasser} % Institution
|
||||||
|
{Technischer Assistent für Automatisierungs- und Computertechnik} % Degree
|
||||||
{Weißwasser} % Location
|
{Weißwasser} % Location
|
||||||
{1997 - 2000} % Date(s)
|
{1997 - 2000} % Date(s)
|
||||||
{
|
{
|
||||||
\begin{cvitems} % Description(s) bullet points
|
\begin{cvitems} % Description(s) bullet points
|
||||||
\item {Grundlagen der Programmierung und Automatisierungstechnik}
|
\item {Grundlagen der Rechentechnik, Mess- und Regelungstechnik, Programmierung und Automatisierungstechnik}
|
||||||
\item {Hardware- und Softwareentwicklung}
|
\item {Hardware- und Softwareentwicklung}
|
||||||
\end{cvitems}
|
\end{cvitems}
|
||||||
}
|
}
|
||||||
@@ -172,35 +173,44 @@
|
|||||||
\begin{cvskills}
|
\begin{cvskills}
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cvskill
|
\cvskill
|
||||||
{Tools \& Systeme} % Category
|
{Programmiersprachen} % Category
|
||||||
{Git, Docker, Linux: Debian-Server, Fedora (privat), NixOS, FreeBSD, CentOS; POSIX Shell, systemd, rsync/SSH, Restic, Windows, macOS, Netzwerk, Systemadministration, Jira, VS Code} % Skills
|
{C\#, JavaScript, PHP, SQL, CSS3, HTML5, Python, Arduino C++, Rust} % Skills
|
||||||
|
|
||||||
%---------------------------------------------------------
|
|
||||||
\cvskill
|
|
||||||
{Extended Reality} % Category
|
|
||||||
{Unity, C\#, OpenXR, Mindport VR Builder, Needle Engine, Meta Quest SDK, Android \& iOS, 3D Vista} % Skills
|
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cvskill
|
\cvskill
|
||||||
{3D Bearbeitung} % Category
|
{Web Development} % Category
|
||||||
{OpenSCAD, 3D-Druck, Blender, OpenGL, 3ds Max} % Skills
|
{CRUD/REST APIs, JSON, XML, SOAP, CMS, LMS, Grafana, Supabase} % Skills
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cvskill
|
\cvskill
|
||||||
{Programmiersprachen} % Category
|
{Systemadministration} % Category
|
||||||
{Python, C\#, JavaScript, PHP, SQL, Rust, CSS3, HTML5, Arduino C} % Skills
|
{Docker/Compose, Kubernetes, POSIX Shell, Bash, ZSH, Nix, systemd, ZFS, nginx, Nextcloud, Tailscale, rsync/SSH, Restic} % Skills
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvskill
|
||||||
|
{Betriebssysteme} % Category
|
||||||
|
{Linux: Debian, Fedora (privat), NixOS, FreeBSD, CentOS, Windows, macOS} % Skills
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cvskill
|
\cvskill
|
||||||
{Web Development} % Category
|
{Tools \& Methoden} % Category
|
||||||
{Node.js, Shopware, WordPress, React, Vue.js, CRUD/REST APIs, JSON, XML} % Skills
|
{Git, GitHub Actions, GameCI, CI/CD, Jira, Scrum, VSCode, TDD, NUnit, Moq, Pytest} % Skills
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cvskill
|
\cvskill
|
||||||
{Maschinelles Lernen} % Category
|
{Extended Reality} % Category
|
||||||
{ANNs seit 2016, LLMs seit 2020, RAG, OpenWebUI, LMStudio, GPUStack, MCP, BMAD, SpecKit, SDD, Context Engineering, Caveman u.v.m.} % Skills
|
{Unity, C\#, OpenXR, Mindport VR Builder, Needle Engine, Meta Quest SDK, Android \& iOS, 3D Vista} % Skills
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvskill
|
||||||
|
{3D Bearbeitung} % Category
|
||||||
|
{OpenSCAD, 3D-Druck, Blender, OpenGL, 3ds Max} % Skills
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cvskill
|
||||||
|
{Maschinelles Lernen} % Category
|
||||||
|
{ANNs seit 2016, LLMs seit 2020, RAG, OpenWebUI, LMStudio, GPUStack, MCP, BMAD, SpecKit, SDD, Context Engineering, Caveman} % Skills
|
||||||
|
|
||||||
\end{cvskills}
|
\end{cvskills}
|
||||||
|
|
||||||
@@ -244,6 +254,37 @@
|
|||||||
|
|
||||||
\vspace{1.5em} % Spacing after cventry
|
\vspace{1.5em} % Spacing after cventry
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cventry
|
||||||
|
{Open Source Förderung} % Position
|
||||||
|
{VISOR - Prototype Fund Project} % Organization
|
||||||
|
{Berlin} % Location
|
||||||
|
{2017-2018} % Date(s)
|
||||||
|
{
|
||||||
|
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||||
|
\item {BMBF geförderte Prototypenentwicklung für ein Forschungsprojekt zum Thema "Digitale Partizipation in Stadtentwicklungsprozessen"}
|
||||||
|
\item {Entwurf eines Webtools \href{https://github.com/VISOR-tool}{VISOR tool} }
|
||||||
|
\item {Entwurf eines Datenstandards \href{https://github.com/VISOR-tool/oproc}{VISOR - oproc}}
|
||||||
|
\end{cvitems}
|
||||||
|
}
|
||||||
|
|
||||||
|
\vspace{1.5em} % Spacing after cventry
|
||||||
|
|
||||||
|
%---------------------------------------------------------
|
||||||
|
\cventry
|
||||||
|
{Lead} % Position
|
||||||
|
{Open Data Dresden} % Organization
|
||||||
|
{Dresden} % Location
|
||||||
|
{2014 - 2021} % Date(s)
|
||||||
|
{
|
||||||
|
\begin{cvitems} % Description(s) of tasks/responsibilities
|
||||||
|
\item {Treffen, Aktionen, Veranstaltungen, Software pro Open Data in Dresden}
|
||||||
|
\item {Gründung eines eines OD-Labs mit der Open Knowledge Foundation}
|
||||||
|
\end{cvitems}
|
||||||
|
}
|
||||||
|
|
||||||
|
\vspace{1.5em} % Spacing after cventry
|
||||||
|
|
||||||
%---------------------------------------------------------
|
%---------------------------------------------------------
|
||||||
\cventry
|
\cventry
|
||||||
{Speaker} % Position
|
{Speaker} % Position
|
||||||
@@ -268,7 +309,7 @@
|
|||||||
\vspace{0.5em} % Spacing after cventry
|
\vspace{0.5em} % Spacing after cventry
|
||||||
|
|
||||||
\begin{cvparagraphnarrow}
|
\begin{cvparagraphnarrow}
|
||||||
Meine Familie ist mein wichtigster Rückhalt. In meiner Freizeit bin ich sportlich aktiv, besonders gern in den Bergen oder auf dem Wasser und wenn dannach noch Zeit übrig ist, widme ich mich der Musik. Als begeisterter Autodidakt erschließe ich mir gerne kontinuierlich neue Technologien und Programmiersprachen, ob beruflich oder privat. Ich arbeite dabei immer selbstständig und eigenverantwortlich.
|
Meine Familie ist mein wichtigster Rückhalt. In meiner Freizeit bin ich sportlich aktiv, besonders gern in den Bergen oder auf dem Wasser, und wenn danach noch Zeit übrig ist, widme ich mich der Musik. Als begeisterter Autodidakt erschließe ich mir gerne kontinuierlich neue Technologien und Programmiersprachen, ob beruflich oder privat, und arbeite dabei immer selbstständig wie auch eigenverantwortlich.
|
||||||
\end{cvparagraphnarrow}
|
\end{cvparagraphnarrow}
|
||||||
|
|
||||||
\begin{cvparagraphnarrow}
|
\begin{cvparagraphnarrow}
|
||||||
|
|||||||
Reference in new issue
Block a user