Compare commits

..
9 Commits
14 changed files with 469 additions and 48 deletions

No files matched your search

+2
View File
@@ -1,3 +1,5 @@
*.pdf
latex/build/
temp
*.log
.DS_Store
+25
View File
@@ -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%"
}
+20 -3
View File
@@ -1,14 +1,28 @@
.PHONY: all coverletter cv clean
.DEFAULT_GOAL := help
.PHONY: help all coverletter cv application clean
LATEX = TEXINPUTS=latex//: xelatex
PDF_MERGE = qpdf
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
cv: cv.pdf
application: $(APPLICATION_PDF)
coverletter.pdf: latex/coverletter.tex letters/coverletter.tex latex/personal.tex latex/awesome-cv.cls latex/fontawesome.sty
@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) $<
mv $(BUILD_DIR)/cv.pdf $@
$(APPLICATION_PDF): coverletter.pdf cv.pdf Makefile
$(PDF_MERGE) --empty --pages coverletter.pdf cv.pdf -- $@
clean:
rm -rf $(BUILD_DIR) coverletter.pdf cv.pdf
rm -rf $(BUILD_DIR) coverletter.pdf cv.pdf $(APPLICATION_PDF)
+16 -5
View File
@@ -2,10 +2,10 @@
## Struktur
- `letters/coverletter.tex` enthaelt nur den an das Unternehmen angepassten Inhalt des Anschreibens.
- `letters/cv.tex` enthaelt nur den Inhalt des Lebenslaufs.
- `latex/` enthaelt die gemeinsame Vorlage, Stammdaten, Fonts und alle beim Build erzeugten Hilfsdateien.
- `coverletter.pdf` und `cv.pdf` werden im Wurzelverzeichnis erzeugt.
- `letters/coverletter.tex` Anschreibens.
- `letters/cv.tex` Lebenslaufs.
- `latex/` gemeinsame Vorlage, Stammdaten, Fonts und alle beim Build erzeugten Hilfsdateien.
- alle PDFs werden im Wurzelverzeichnis erzeugt.
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:
```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
make
```
@@ -22,6 +31,7 @@ Einzeln erzeugen:
```sh
make coverletter
make cv
make application
```
Alle erzeugten Dateien entfernen:
@@ -30,4 +40,5 @@ Alle erzeugten Dateien entfernen:
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.
+36
View File
@@ -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.
- 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.
+222
View File
@@ -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
+8
View File
@@ -3,6 +3,14 @@ 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`.
+63 -3
View File
@@ -134,9 +134,49 @@ Jede Technologie wird einzeln genannt und enthält das Level der verwendeten Kom
### Python
- Komplexität: Entwicklung eines konfigurationsgesteuerten Migrationswerkzeugs 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.
- Projekt: MediaWiki-zu-Obsidian-Migration in `ScrapeMediawiki`, belegt durch eigene Commits von August bis Oktober 2024.
- 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
@@ -219,6 +259,24 @@ Jede Technologie wird einzeln genannt und enthält das Level der verwendeten Kom
- 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.
@@ -230,6 +288,8 @@ Jede Technologie wird einzeln genannt und enthält das Level der verwendeten Kom
- 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
+1 -1
View File
@@ -397,7 +397,7 @@
\newcommand{\acvHeaderAfterAddressSkip}{-.5mm}
\newcommand{\acvHeaderIconSep}{\space}
\newcommand{\acvHeaderSocialSep}{\quad\textbar\quad}
\newcommand{\acvHeaderAfterSocialSkip}{6mm}
\newcommand{\acvHeaderAfterSocialSkip}{2mm}
\newcommand{\acvHeaderAfterQuoteSkip}{5mm}
% Others
-1
View File
@@ -1,4 +1,3 @@
%!TEX TS-program = xelatex
\documentclass[11pt,a4paper]{awesome-cv}
\geometry{left=2cm,top=.8cm,right=2cm,bottom=1.8cm,footskip=.5cm}
-1
View File
@@ -1,4 +1,3 @@
%!TEX TS-program = xelatex
\documentclass[11pt,a4paper]{awesome-cv}
\geometry{left=1.4cm,top=.8cm,right=1.4cm,bottom=1.8cm,footskip=.5cm}
+2 -2
View File
@@ -1,7 +1,7 @@
% Gemeinsame Stammdaten fuer Anschreiben und Lebenslauf.
\name{Robert}{Wartenberg}
\position{Entwickler{\enskip\cdotp\enskip}Software Engineer{\enskip\cdotp\enskip}Automatisierungstechnologe}
\address{Robert-Matzke-Stra\ss e 43, 01127 Dresden}
\position{Software Engineering{\enskip\cdotp\enskip}FullStack-Development{\enskip\cdotp\enskip}Systemadministration}
\address{Robert-Matzke-Straße 43, 01127 Dresden}
\mobile{(+49) 152 085 166 33}
\email{rw@boogiedev.net}
\github{RobTranquillo}
+9 -8
View File
@@ -1,23 +1,24 @@
% !TEX root = ../latex/coverletter.tex
\recipient
{IBH connect GmbH}
{Heilbronner Stra\ss e 20 \\ 01189 Dresden}
{Heilbronner Straße 20 \\ 01189 Dresden}
\letterdate{\today}
\lettertitle{Bewerbung als Entwickler (m/w/d)}
\lettertitle{Bewerbung als Entwickler im DataCenter-Team}
\letteropening{Sehr geehrter Herr Bierstedt,}
\letterclosing{Mit freundlichen Gr\"u\ss en,}
\letterclosing{Mit freundlichen Grüßen,}
\makelettertitle
\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}
\vspace{0.1mm}
+65 -24
View File
@@ -1,3 +1,4 @@
% !TEX root = ../latex/cv.tex
\quote{``Be the change that you want to see in the world."}
%-------------------------------------------------------------------------------
@@ -106,13 +107,13 @@
%---------------------------------------------------------
\cventry
{Fachinformatiker für Systemintegration} % Degree
{BSZET Dresden / MAGIX} % Institution
{BSZET Dresden / MAGIX} % Degree
{Fachinformatiker für Systemintegration} % Institution
{Dresden} % Location
{2003 - 2006} % Date(s)
{
\begin{cvitems} % Description(s) bullet points
\item {Schwerpunkt: Softwaretest und Systemintegration}
\item {Schwerpunkt: Softwaretest, Systemintegration, Virtualisierung}
\item {Ausbildungsbetrieb: MAGIX AG}
\end{cvitems}
}
@@ -121,13 +122,13 @@
%---------------------------------------------------------
\cventry
{Technischer Assistent für Automatisierungs- und Computertechnik} % Degree
{Berufliches Schulzentrum Weißwasser} % Institution
{Technischer Assistent für Automatisierungs- und Computertechnik} % Degree
{Weißwasser} % Location
{1997 - 2000} % Date(s)
{
\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}
\end{cvitems}
}
@@ -172,35 +173,44 @@
\begin{cvskills}
%---------------------------------------------------------
\cvskill
{Tools \& Systeme} % 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
\cvskill
{Programmiersprachen} % Category
{C\#, JavaScript, PHP, SQL, CSS3, HTML5, Python, Arduino C++, Rust} % Skills
%---------------------------------------------------------
\cvskill
{Web Development} % Category
{CRUD/REST APIs, JSON, XML, SOAP, CMS, LMS, Grafana, Supabase} % Skills
%---------------------------------------------------------
\cvskill
{Systemadministration} % Category
{Docker/Compose, Kubernetes, POSIX Shell, Bash, ZSH, Nix, systemd, ZFS, nginx, Nextcloud, Tailscale, rsync/SSH, Restic} % Skills
%---------------------------------------------------------
\cvskill
\cvskill
{Betriebssysteme} % Category
{Linux: Debian, Fedora (privat), NixOS, FreeBSD, CentOS, Windows, macOS} % Skills
%---------------------------------------------------------
\cvskill
{Tools \& Methoden} % Category
{Git, GitHub Actions, GameCI, CI/CD, Jira, Scrum, VSCode, TDD, NUnit, Moq, Pytest} % 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
{OpenSCAD, 3D-Druck, Blender, OpenGL, 3ds Max} % Skills
%---------------------------------------------------------
\cvskill
{Programmiersprachen} % Category
{Python, C\#, JavaScript, PHP, SQL, Rust, CSS3, HTML5, Arduino C} % Skills
%---------------------------------------------------------
\cvskill
{Web Development} % Category
{Node.js, Shopware, WordPress, React, Vue.js, CRUD/REST APIs, JSON, XML} % Skills
%---------------------------------------------------------
\cvskill
\cvskill
{Maschinelles Lernen} % Category
{ANNs seit 2016, LLMs seit 2020, RAG, OpenWebUI, LMStudio, GPUStack, MCP, BMAD, SpecKit, SDD, Context Engineering, Caveman u.v.m.} % Skills
{ANNs seit 2016, LLMs seit 2020, RAG, OpenWebUI, LMStudio, GPUStack, MCP, BMAD, SpecKit, SDD, Context Engineering, Caveman} % Skills
\end{cvskills}
@@ -244,6 +254,37 @@
\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
{Speaker} % Position
@@ -268,7 +309,7 @@
\vspace{0.5em} % Spacing after cventry
\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}
\begin{cvparagraphnarrow}