PE
verfügbar

Letztes Update: 07.12.2021

Berater, Senior Architect, Senior Developer

Abschluss: Diplom-Informatiker, Vertriebsingenieur
Stunden-/Tagessatz: anzeigen
Sprachkenntnisse: deutsch (Muttersprache) | englisch (verhandlungssicher)

Skills

Dienstleistungsprofil
Peter Ertl

Persönliche Daten
Name Peter Ertl
Ausbildung Diplom-Informatiker (FH)
Vertriebsingenieur
Familienstand ledig
Geburtsdatum 17. Januar 1971
Staatsbürgerschaft deutsch
Anschrift Vohenstraußer Str. 55a, 92637 Weiden, Deutschland
Mobil +49 (171) 473 1037
E-Mail peter.ertl@gmx.net

Ausbildung
    • Abitur am Kepler-Gymnasium Weiden
    • Abschluß: Diplom-Informatiker (FH) mit Abschlußnote: 2,1 (Studienort: Regensburg)
    • Abschluß: Vertriebsingenieur
    • Ein Jahr Auslandsstudium in den USA an der University of Connecticut
    • In Englisch verfasste Diplomarbeit: "Design and Implementation of a Distributed Virtual Machine" mit Note 1
    • Seit 1983 im Bereich Informationstechnik und allem verwandten Themen (z.B. Mathematik, Elektronik) engagiert
Sprachkenntnisse
    • Deutsch (Muttersprache)
    • Englisch (fließend)
Rollen
    • Technical Lead
    • Senior Developer
    • Senior Architect
Einsatzschwerpunkt
Mit einem Fokus auf Softwareentwicklung und Technologie erarbeite ich mit dem Auftraggeber eine optimale Lösung. Kosteneffizienz, Leistungsfähigkeit, Termintreue und hohe Wartbarkeit stehen im Vordergrund. Es erfolgt eine kontinuierliche Betreuung - fachlich und technisch - von der Idee bis zur Inbetriebnahme.
zentrale Themen
    • Erarbeiten von platformübergreifenden Lösungen bei komplexer Problemstellung (vom Design bis zur Umsetzung)
    • Aufbau von verteilter, skalierbarer, hochverfügbarer Software und Systemen (cloud / on premise / hybrid)
    • Experte für webbasierte Lösungen (frontend, backend, middleware)
    • Java Platform (multilingual, insb. Java / Kotlin / Scala)
    • .NET-Plattform
    • Datenbanken / Big Data (SQL + NoSQL)
    • Funktionale Sprachen
    • Agile Methoden (Scrum / Kanban)
    • Machine Learning / KI / AI / angewandte Statistik / MathematikProjekte (seit 1994)
Projekthistorie

Aug. 2021 - Dez. 2021Implementierung eines Provisionierungsservice zum Identity Management
Für das Identity-Management einer Direktbank wurde ein Service zur Provisionierung der Infrastruktur entwickelt. Dieser löst eine proprietäre Schnittstelle ab die end-of-life ist.
  • Anbindung und Provisionierung von Active Directory (LDAP)
  • Abgleich von SQL-Datenbanken mit Benutzerdaten
  • Anbindung an Datenlieferanten (Import-Batches, IAM-Webanwendung)
  • Kommunikation mit asynchronem Messaging
  • Fokus auf hohe Zuverlässigkeit und Durchsatz
Technologien: Java 11, UnboundID LDAP, JDBC, JDBI, Java Messaging (JMS), Oracle Database, Microsoft SQL Server, Maven
Mai 2021 - Juli 2021Implementierung eines SAML Identity Providers:
  • Implementierung von SAML Core (Bindings, Protocol, Verwaltung der Sessions, Signature)
  • Implementierung von Kerberos als Authentication Context
  • Windows-Authentifizierung mit SPNEGO (Kerberos-Ticket) im Browser (low-level Implementierung mit Java Crypto Architecture und Ktor)
  • User-Lookup in Active Directory mit LDAP Client Binding
  • Handling von Zertifikaten und Keys (X.509, RSA, EC, DSA keypairs)
  • XML-Signatur und XML-Encryption
  • Migration bestehender SAML-Clients aus WSO2 Identity Provider
  • Import / Export von SAML-Metadata
Technologien:
Kotlin, Ktor, Java Cryptography Architecture (JCA), Bouncy Castle Security Provider, Unbound LDAP, Java XML API, X.509, ASN.1, Certificate und Key Encodings (DER/PEM/PFX/PKCS), Apache Santuario, Oracle, PostgreSQL
Nov 2020 - aktuellUnterstützung bei Entwicklung einer eventgetriebenen Architektur (part-time)
  • Entwicklung einer Architektur und Begleitung bei der Umsetzung
  • Ablösung von Point-to-Point Schnittstellen durch einen Eventbus
  • Ersetzen eines monolithischen Legacy-Service durch Microservices
  • zentrales Logging und Monitoring
  • Verwenden von Containern
  • verteilte Datenhaltung mit transaktionalen Log über Apache Kafka
  • progressive Ablösung des ERP-Systems durch Eigenentwicklung („soft transition“)
Technologien: Apache Kafka, PostgreSQL, C#, .NET 5, NUnit, Microsoft Entity Framework, Docker + Docker Compose
Okt 2020 - Mai 2021Neuentwicklung eines API Gateway:
  • Planung und technische Umsetzung
  • Management von APIs (Lifecycle, Security, Subscriptions, Publishing, Versioning, etc.)
  • Verarbeitung von Backend-Calls über API Processor (Security, Traffic Monitoring, High Availability, Security, Load Balancing)
  • Definition der APIs per OpenAPI v3 Spezifikation
  • flexible Backend-Anbindung (Authentication, Connection Pooling, Request / Response Streaming, Failover Handling)
  • Anbindung der Firmen-Infrastruktur (Services, Users, Mainframe System)
  • Horizontale Skalierung und Ausfallsicherheit (No Single Point of Failure, Shared State)
  • Seamless migration von WSO2 API Identity Provider auf Eigenimplementierung (schrittweise im laufenden Betrieb)
  • Testen in Container Images mit Docker Compose
  • Deployment auf Windows / Cent OS (linux)
Technologien:
Java, Kotlin, Maven, Gradle, WSO2 API Gateway, OAuth2, OpenID Connect, PostgreSQL, Oracle, IBM CICS, SQL, Kotlin Exposed, Kotlin coroutines, kotlinx.serialization, Apache Jackson, OpenAPI v3, Docker (Compose), WSO2 Api Manager, Apache Ignite, jUnit, kotest, mockk, Jenkins
Mär 2020 - Sep 2020Neuentwicklung eines Identity Providers:
  • Evaluieren von existierenden Lösungen (Ergebnis: Eigenimplementierung)
  • Management von Clients (OAuth2, Single Sign On, Subscriptions, Permissions)
  • Token Management (Access tokens, Refresh Tokens, Json Web Tokens (JWT), Consent Management, Token Revocations, Monitoring)
  • Anbindung von PSD2 TPP Clients (AIS / PIS / PIIS) mit X.509 Client Certificates
  • Ablösung des bestehenden WSO2 Identity Providers im laufenden Betrieb
  • Deployment auf Windows und Cent OS (Linux)
  • Einführen von Kotlin als Programmiersprache und Migration von Java Code
  • Testen in Container Images mit Docker Compose
  • Deployment auf Windows / Cent OS (linux)
Technologien:
Java, Kotlin, Maven, Gradle, WSO2 API Gateway, OAuth2, OpenID Connect, PostgreSQL, Oracle, IBM CICS, SQL, Kotlin Exposed, Kotlin coroutines, kotlinx.serialization, Apache Jackson,  Docker (Compose), Apache Ignite, JUnit, kotest, mockk, Jenkins Kotlin
Jan 2019 - Mär 2020Umsetzung des PSD2-Standard bei einem Bankendienstleister
  • Umsetzung der PSD2-Schnittstelle
  • Technical Lead
  • Umsetzen einer Identity Management Infrastruktur (OAuth2, OpenID Connect)
  • Anbindung der Third Party Provider (TPP)
  • Schaffung von robusten und hochsicheren Services (Verfügbarkeit 24/7)
  • Integration der bestehenden Infrastruktur in die Abläufe (API-Endpunkte, IBM CICS)
  • Anbindung der hauseigenen API-Schnittstellen
PSD2, OAuth2, OpenID Connect (OIDC), SAML, WSO2 Identity Provider, WSO2 API Gateway, WSO2 Identity Provider, HTTP REST, Anbindung an IBM/CICS, Kanban, Java 8+, CI/CD Pipeline, Oracle Database, Redis, Apache Ignite, Thymeleaf, JUnit, Mockito
Mär 2018 - Dez 2018Implementierung eines Systems zur Analyse von Transaktionen in einer Bank
  • Aufbau einer skalierbaren Architektur
  • Anbindung eines Fintech-Service zur Klassifizierung der Transaktionen
- DSGVO-konforme Speicherung der Kundendaten
- Analyse der Transaktionsdaten zur Bestimmung von Metriken für den Bankkunden
- Verwendung von Spring Boot 2 zur Bereitstellung von RESTful Services
- Anbindung an Transaktions-Provider per Apache Kafka
- API-Dokumentation mit Swagger
- Speicherung und Aggregation in Oracle Database (Anbindung per Spring JDBC)
- Tuning und Partitioning des Oracle-Systems
Java, Spring Boot, RESTful Services, Oracle SQL Database, Apache HTTP Client, Spring JDBC, JUnit, Mockito; Scrum; Jenkins
Feb 2018 - Dez 2018Weiterentwicklung eines Service zur Kontenanbindung an Fremdbanken
  • Verwendung z.B. in der Kontenansicht der Bankkunden ("Multibanking")
  • Erweiterung der bankinternen HTTP-Schnittstelle
  • DSGVO-konforme Speicherung der Kundendaten
  • Migration Spring Boot von 1.x auf 2.x
- Anbindung an SQL-Datenbank mit Hibernate
- hohe Unittest-Abdeckung (test driven development; JUnit; continuous integration)
Java, Spring Boot, HTTP, RESTful Services, Hibernate, JUnit, Mockito; Scrum; Jenkins
Sep 2018 - Dez 2018Weiterentwicklung eines Systems zur Berechtigungsverwaltung in einer Bank
- Beseitigung von Performance-Bottlenecks (insbesondere in Hibernate)
  • Erweiterung des Systems zur Verwaltung von automatisierten Systemkonten
  • Umsetzung interner Banken-Prozesse
  • Migration von Wicket 7 auf Wicket 8
  • Verbesserung der Test-Coverage und Testability
Java, Apache Wicket, Hibernate, JUnit, Mockito; Scrum; JUnit; Jenkins
Nov 2017 - Dez 2018Weiterentwicklung der Online-Platform für die Konto/-Depotinhaber einer Bank
  • Umsetzung neuer Features
  • kontinuierliche Verbesserung der Usability
  • Anbindung neuer Schnittstellen per REST
  • Berücksichtigung von Lastverhältnissen (z.B. bei Zugriff auf Umgebungs-Systeme)
  • Anwenden von Best Practices (clean code, test driven development, refactoring)
Java, Apache Wicket, Rest-Services (HTTP-Client), HTML, CSS, JavaScript, Spring Boot 2
Mär 2017 - Sep 2017Thema: Neuimplementierung einer Online-Platform für einen großen Autoteileversender
Task: Bereitstellen einer eigenen Analytics-Platform (Erstellung eines funktionsfähigen Prototypen)
  • Beratung der Fachseite; Definition der KPI Metriken; Erstellen einer Zieldefinition
  • datenschutzkonforme Analyse des Live-Traffic
  • Echtzeitdarstellung der Analytics-Daten mit Elasticsearch + Kibana
  • Provisionierung von den benachbarten Systemen (Data Warehouse, ERP, etc.)
  • Logging von firmenweiten Events auf einem Kafka Event Bus (add to cart, exit site, convert to checkout / order, place order, ship packet, cancel order, etc.)
  • Aggregation von User-Sessions, Conversions, cross-device tracking
  • Verarbeitung großer Datenmengen (big data: batch / stream based)
  • Geo-Lokation berücksichtigen (Tracking + Anwendungsverhalten + DoS-Erkennung)
Elasticsearch, Kibana, Apache Spark, Apache Flink, Apache Kafka, Machine Learning, Java, Kotlin, Scala, C#, IntelliJ IDEA, Maven, Apache Kafka, Apache Cassandra, GIT, NUnit, JUnit
Jan 2017 - Sep 2017Thema: Neuimplementierung eines Online-Platform für einen großen Autoteileversender
Task: SEO-Optimierung (on-site) des Shops
  • Sicherstellen und Optimieren der Crawlability der Seite (geringer Seitentiefe, Berücksichtigung diverser Filterkriterien, etc.)
  • Analyse von Analytics-Daten zur Verbesserung des Shops
  • Vermeidung von Duplicate Content bei mehrsprachigen Seiten resp. Domains
.NET, C#, HTML, TypeScript, Google Analytics + eigene Analytics-Plattform, GIT, NUnit
Aug 2015 - Sep 2017Thema: Neuimplementierung eines Online-Platform für einen großen Autoteileversender
Task: Entwicklung der Shop-internen Suche mit Elasticsearch
  • Findung der idealen Lösung in enger Kommunikation mit Fachseite
  • Findung der geeigneten Mechanismen zur Umsetzung (Score, Relevanz, Latenz bei Live-Suche, Aggregationen über Gruppen, Facetten, usw.)
  • Unterstützung von Mehrsprachigkeit (Texte, Attribute, Währungen, Formattierungen, language fallback, natural language processing (NLP), word stemming)
  • Synchronisation der SQL-Daten und des Suchindex mit geringer Latenz (inkrementielles Update); Full-Resync (periodisch, zum Vollabgleich), low-level change detection auf SQL-Ebene (trigger-based; inkl. Löschungen); Full-Rebuild (z.B. bei Schema-Änderungen)
  • schnelle Antwortzeiten (ca. 2-40 ms für die Suche über ca. 1 Million Artikel und 40 Millionen Attribute, anhängig von den Suchparametern); deutliche positive Auswirkingen auf Ladezeiten und Google Page Speed Index
  • Ähnlichkeitssuche (n-Gram, edge-Gram, prefix, fuzzy, Levenshtein-Damerau, Keyword Aggregations, Boosting, Mehrsprachigkeit, Stemming, TF-IDF vs. BM25; Ensemble-Techniken)
  • Autosuggest (auf Basis von Kategorie, Fahrzeug, Produkt) mit unscharfer Eingabe
  • Filterung über alle Artikel, Ermittlung aktiver Kategorien unter Berücksichtigung von Verfügbarkeit + aktueller Fahrzeugauswahl
  • Modifikation des Suchranking nach Auftraggeberkriterien (Top-Seller, Umsatzbringer, Produkte mit kurzer Lieferzeit)
  • zahlreiche Filtermethoden + Aggregationen (Benachbarte Werte mit Proximity-Score; von-bis Abfragen; Unterelement von; z.B. Anzahl der Produkte je Kategorie unter Berücksichtigung von Kindkategorien, Alle Fahrzeuge einer bestimmen Gruppe, z.B. Model oder Antriebsart, und vieles mehr)
  • Optimierung der Suchrelevanz entsprechend den Wünschen der Geschäftsleitung
Elasticsearch (v2.x, später v5.x), SQL Server, C#, Azure Cloud, Java, Windows Service, GIT, NUnit, JUnit, Teamcity
Aug 2015 - Sep 2017Thema: Neuimplementierung eines Online-Platform für einen großen Autoteileversender
Task: Neuimplementierung des Shop-Frontends
  • Implementierung der Anwendungslogik (Data-Layer, Service, Application); modularer, wartbarer Code; hohes Maß an Typsicherheit (auch in den Views); TypeScript (Codegenerierung für typsichere API-XHR-Calls von JavaScript an den Shop; hohe Refactoring-Sicherheit zur Unterstützung schneller Anpassungen)
  • Anbindung an die Suche (eigenes Unterprojekt)
  • Mehrsprachigkeit des Shops auf allen Ebenen (Oberflächentexte HTML / JavaScript, Berücksichtigung der Browsersprache incl. Fallback, mehrsprachige Produktdaten und Suche); Unterstützung von verschiedenen Shop-Layouts für verschiedene Brands
  • Caching-Layer (1st level in memory, 2nd level in NoSQL-Store; JSON-Serialisierung)
  • massives Caching der gerenderten Views und Resourcen durch Frontend-Proxy (nginx); optimale Antwortzeiten, auch um DDoS-Attacken besser zu bewältigen
  • Share nothing Architektur; no single point of failure; horizontale Skalierung aller Komponenten (scale out)
  • SQL Datenbank: In Production Code durch SQL Prozeduren (hohes Maß an Optimierung; hohe Sicherheit), Unit Testing mit Entity Framework (viele Freiheiten, geringer Testaufwand); Beseitigung von Datenbank-Bottlenecks, Optimierung, Analyse von Execution Plans
  • Bundling der Anwendung erst mit gulp, später mit Webpack (obfuscation, optimization, SCSS to CSS, JavaScript Bundles, TypeScript to JavaScript, multi-layout CSS)
  • Umsetzung der Views (Responsive Design, Semantic Markup wg. SEO, Rich Snippets, typesafe Razor Views); Integrieren von Designs von Medien-Agenturen
  • spezielle UI-Funktionen für Telefonsupport und -verkauf
  • interne Schnittstelle für Firmen-Clients (REST) und Anbindung an Preisportale / Kauf-Plattformen
  • Testing (Unit + Integration Testing, Continuous Integration + Test + Delivery mit Teamcity)
ASP.NET MVC, ASP.NET Web API, C#, Redis, SQL Server, handoptimiertes SQL / Procedures, Elasticsearch, Azure Cloud, IIS, JavaScript / TypeScript, SCSS / SASS, CSS, HTML 5, Entity Framework (unit test only), JSON.NET, GIT, Visual Studio, Resharper, Redgate Toolbelt, MSSQL Studio, GIT, NUnit, Teamcity
Aug 2015 - Okt 2017Thema: Neuimplementierung eines Online-Platform für einen großen Autoteileversender
Task: Implementierung eines Media-Service
Um die Verwaltung von Medien (Bilder / Dokumente) innnerhalb der Webseite, aber auch in den zahlreichen firmeninternen Anwendungen zu erleichtern und zu vereinheitlichen, wurden dies in die SQL-Datenbank verlagert (einheitliches Backup / Transaktionale Sicherheit / hohe Performance durch SQL-Filestreams)
  • Speicherung von Bildern + Dokumenten in SQL Server (mit File Tables / File Streams Support; single consistent backup)
  • sehr schnelles Laden der Bilder mit hochoptimierten Routinen
  • Transformieren der Bilder abhängig vom Consumer (Auftragen von Wasserzeichen, skalieren, Schärfefilter anwenden, Meta-Daten einfügen, etc.)
  • schnelle Bildtransformationen (z.B. keine globalen GDI-Locks in Windows, multi threaded, scalable)
  • Integration eines Frontend Proxy (nginx) zum Langzeit-Caching dieser Bilder
  • Erzeugen von Crypto-Hashes innerhalb von pretty URLs um diese Bilder mit maximaler Cache-Dauer auszuliefern (ein Jahr, maximaler Wert gemäß RFC)
  • sofortiges Invalidieren des Caches bei Veränderung des Bildes oder dessen kanalabhängiger Bildtransformation (z.B. neues Wasserzeichen, anderer Schärfefilter)
  • Auslieferung aller benötigten Größen eines Bildes (welche aus einem hochaufgelösten Original errechnet werden)
- Versorgung der kompletten eBay Platform, Preisportalen, Amazon, mehrerer Shopinstanzen und zahlreicher interner Anwendungen (hochperformant mit niedriger Latenz beim Berechnen)
C#, .NET, Windows Service, ASP.NET Web API, GIT, NUnit
Aug 2015 - Sep 2017Thema: Neuimplementierung eines Online-Platform für einen großen Autoteileversender
Task: Neuimplementierung eines Synchronisationsdienst zum Abgleich der Shop-Daten in der Cloud mit den Stammdaten der Firma im lokalen Rechenzentrum
  • Vorhalten und Abgleichen von operativen Daten in der Cloud (Microsoft Azure)
  • automatisiertes Recovery & Installation neuerder Cloud-Daten aus den Firmendaten möglich
  • effiziente Erkennung von Datenbankänderungen (Zeitstempel, trigger / event-based, Master-Master-Replikationskonflikte, Entities mit Abhängigkeiten auflösen, Race-Conditions, etc.)
  • Datensynchronisation auf logischer Ebene (master-slave, master-master-Szenarien)
  • Verteilen der multi-channel Daten auf die jeweiligen Synchronisationspartner (= Channel)
  • Low-Level Implementierung auf TCP/IP-Ebene mit eigenem Serialisierungscode und ereignisbasiert System um maximale Performance zu erzielen
  • Auto-Discovery der Peers und robustes, fehlertolerantes Verhalten
  • Minimierung der benötigten Bandbreite / Maximierung des Durchsatzes
  • fehlerresistentes Verhalten (Recovery / Replay)
C#, Windows Service, SQL Server, low level TCP/IP, GIT, NUnit
Mär 2014 - Apr 2014Berechung des aktuellen Lagerbestandes eines Online-Sellers
  • Aktualisierung der Verfügbarkeit von Set-Artikeln unter Berücksichtigung von Gewinnmarge, Kombinationsmöglichkeiten, technischen Einschränkungen, Abverkaufsreihenfolge zur Gewinnmaximierung und Sicherstellen kurzer Lieferzeiten; Artikelanzahl ca. 800.000+ (auf Lager bzw. kurzfristig lieferbar)
.NET, C#, SQL-Server, Windows Service, SVN, NUnit
Jan 2014 - Jun 2015Modernisieren der eBay-Schnittstelle bei einem Autoteileversender
Refactoring des Code (Clean Code, Einführung einer Layer-Architektur); Erhöhung des Durchsatzes (über 1 Million eBay API-Calls pro Tag); Optimierung der ERP-Anbindung, Fehlertoleranz
Schnittstellen: Orders von eBay abholen, Auktionen aktualisieren mit kurzer Latenz ( bei über 100.000 gleichzeitig laufenden Auktionen), Wettbewerbsanalyse, periodische Integritätsprüfungund Abgleich von Firmen-Stammdaten und laufenden eBay-Auktionen
.NET, C#, eBay API, TPL Dataflow, Windows-Service, GIT, NUnit
Sep 2013- Mär 2014Pflege des Alt-Shops bei einem Online-Händler vor dessen Ablösung
  • Refactoring der Codebasis (bessere Wartbarkeit, leichtere Migration zum neuen Shop); Performance Tuning (wg. schlecher Conversion Rate); Extraktion von Funktionalität in Microservices, Libraries + neuere Systeme; Fehlerbehebung; bessere Anbindung an externen Datenprovider (+ Caching)
  • Ablösung / Neuimplementierung von Fremdmodulen (closed-source, 3rd party) im Rahmen der bevorstehenden Ablösung
.NET, C#, VB.NET, SQL Server, ASP.NET Web Forms, Sage ERP, GIT, NUnit
Jan 2012 - Jul 2013Direktbank; Software-Engineer
Beratung zu und Weiterentwicklung an einer Intranet-Webanwendung zum Identity-Management der Mitarbeiter (Branche: Bank)
Zur firmeninternen Verwaltung von Rollen, Berechtigungen und Zugehörigkeit der Mitarbeiter wird eine datenbankgestützte Intranet-Anwendung eingesetzt. Neben der Provisionierung und dem Abgleich von Rechten auf die Umsysteme (Domain-Controller, LDAP, SAP, Datenbanken, usw.) wird Wert auf Reporting und Monitoring gelegt wie es bei börsennotierten Unternehmen üblich ist. Optimierung der Performance aufgrund der zahlreichen Berechtigungen und Anbindung der Umsysteme stellten besondere Herausforderungen dar. Auch eine hohe Codequalität war wichtig da es sich bei dem Projekt um ein bankeninternes Referenzprojekt handelte.
Java 6, Apache Wicket 5 + 6, Spring Framework 3, Hibernate, QueryDSL, Apache Maven 3, JUnit, SAP JCo, Velocity, LDAP, Native SQL (Spring JDBC), jQuery, Eclipse, IntelliJ IDEA
seit August 2010Mitglied im Apache Wicket Team (Core Team Member, Apache Committer), siehe http://wicket.apache.org, http://wicket.apache.org/2010/08/24/peter-ertl-committer.html. Aktive Mitarbeit seit Version 1.4.
Juni 2010 - Dez. 2011Middleware-Integration und Anbindung Business Logic 

Telekommunikationsdienstleister: diverse Java-Adapter zur Anbindung an Message Queues (message driven middleware) + ABAP Application Server (business logic) per JCo zur Integration von SAP-Prozessen, Anbindung von Datenlieferanten, Qualitätsauswertungen.

Java, SAP Java Connector, Apache Wicket, Tomcat, Maven, IntelliJ IDEA, JUnit
2008 - 2011Mitarbeit am Open Source Projekt ‚salve‘ (Bytecode-Instrumentor für Dependency-Injection auf POJO-Ebene, Entwicklung des IDEA-Plugins), http://code.google.com/p/salve
Mai 2007 - Juni 2010Telekommunikationsunternehmen: Entwicklung einer konzernweiten Anwendung zur vollständigen Verwaltung der Identität eines Benutzers und der zugehörigen Kennungen vom Firmeneintritt bis zum Verlassen.

Rolle: IT-Architect, Software-Engineer

Technische Basis: Java 5, ABAP, SAP-Funktionsbausteine (rfc calls), Jetty 6, SAP J2EE Web Engine, Apache Wicket 1.3, XHTML, CSS, Barrierefreiheit, Apache Ant, IntelliJ IDEA 7/8/9, SAP Java Connector (SAP JCo), SAPGUI, Retrotranslator, Subversion, SSO (Single Sign On) mit Kerberos bzw. SPNEGO und LDAP-Usern

Besonderheiten: Die Besonderheiten der SAP-Umgebung müssen im Web benutzerfreundlich präsentiert werden. Die Verwaltung der User entspricht den SOX-Richtlinien und erlaubt jederzeit eine Kontrolle der Abläufe durch externe SOX-Prüfer. Rollenbasierte Rechteverwaltung steuert den Zugriff auf die Funktionalität.
April 2008 - Juni 2010Erweiterungen am SAP-System

Entwicklung und Änderung von ABAP-Bausteinen, Integration mit Java

Technologien: ABAP, SAPGUI, Java, JCo, UML
Nov 2009 - März 2010Migration von Geschäftsdaten in SAP

z.B. Erstellen von Reports zur Migration von SM-Aufträgen, wegen fehlender BAPI-Funktionalität auch unter Verwendung von Batch-Input, Erstellen von Auswertungen, Datenanalyse

Technologie: Eclipse, Java, SAP R3, ABAP, SAPGUI, SAP JCo, UML
Dez 2006 - Apr 2007Telekommunikationsunternehmen: Modernisierung bestehender Java-Anwendungen

Rolle: Software-Engineer

Java 1.3 / 1.4 / 5, Refactoring, Apache Wicket 1.3, Struts, Apache Ant, Subversion, traditional HTML, XHTML, Anpassung der Anwendung an hohe Lastsituationen
Juni 2006 - Dez 2006Telekommunikationsunternehmen: Implementierung mehrerer SAP-Backend-Adapter zur Anbindung von SAP an die Systemlandschaft.

Rolle: Software-Engineer

Java 5, SAP JCo, Unix (insb. HP-UX), Subversion
April 2006 - Mai 2007Entwicklung eines Verkaufsportals mit Content Management und dynamischen Templates.

Rolle: Architekt, Entwickler

Apache Wicket, Debian, Apache 2, PostgreSQL, Java 5 / 6, Eclipse / IntelliJ IDEA, XHTML, CSS, Javascript
Jan 2005 - Juni 2010Telekommunikationsunternehmen: Unterstützung des User-Supports und der Administratoren in einem Telekommunikationsanbieters bei technischen Problemen

Außerdem Unterstützung der Serveradministration bei Fehlersuche und Problembehebung und Entwicklung zahlreicher Tools.

Rolle: Software-Engineer, Supporter

Technische Basis: HP-UX, SAP, Oracle, Java, C / C++

Typische Probleme: Anwendung braucht zuviel Speicher, Mysteriöse Abstürze, Darstellungsprobleme im Browser, Applet läuft nicht, Datenmigration von System A nach B
Nov. 2004 - Juni 2010Telekommunikationsunternehmen: Entwicklung von zwei konzernweit eingesetzten Java-Webanwendung zur Leistungserfassung und Auftragsbearbeitung. Diese binden an ein Backend-SAP-System über SOAP-Webservices an. Beide Anwendungen werden firmenintern und deutschlandweit genutzt.

Rolle: IT-Architect, Software-Engineer, Coach für das Team

Technisches Basis: Java, SOAP, WSDL, HTTP, SSL/TLS, SAP J2EE Application Server, Apache Tomcat, IBM Websphere, Eclipse SDK, Apache Struts, Apache Axis, Eclipse Webtools, SAP J2EE Netweaver, CVS

Besonderheiten / Herausforderungen: Eine der beiden Anwendungen läuft auf einem hochverfügbaren Cluster mit Load-Balancer und muß teilweise sehr hohe Userzahlen bedienen. Dies wird bei der Umsetzung speziell berücksichtigt.
Mär. 2004 - Okt. 2004Entwicklung von Integrationslösungen im Middleware-Umfeld zur Anbindung von Geschäftspartnern in der Telekommunikationsbranche

Rolle: Software-Engineer

Technische Basis: MQSeries Business Integration Message Broker (=MQIntegrator), WebSphere MQ (=MQSeries), IBM DB2, Unix (AIX und HP/UX), Rational ClearCase
Sep. 2003 - Jan. 2004Entwicklung einer eCommerce-Plattform im Designermode-Bereich
Rolle: Architektur und Implementierung, Integration in Geschäftsbereich

Technische Basis: .NET-Framework 1.1, Windows 2003 Server, IIS 6, C#, Microsoft SQL-Server 2000, XML

Schwierigkeiten / Besonderheiten: enge Integration der Plattform in die Geschäftsabläufe, insbesondere Logistik und Warenwirtschaft; skalierbare, kosteneffiziente Architektur, die steigenden Anforderungen gerecht wird
Feb. - Aug. 2003Entwicklung einer Content Management Plattform für Internet-Dienstleister

Rolle: Gestaltung von Architektur und Design; Aktive Mitentwicklung des Produktes

Technische Basis: .NET Framework, ASP.NET, C#, Internet Information Server 6 (IIS 6), Windows 2003 Server, XML, Microsoft SQL-Server 2000

Schwierigkeiten / Besonderheiten: Persistierung von Objekten über XML in einer SQL-Datenbank, intensiver Einsatz von Reflection zur Verwendung von Fremdmodulen, Model-View-Controller als Design-Pattern für Businesskomponenten
Jan. 2003 - Feb. 2003Spezialist für IBM MQSeries Workflow und AIX (3. Einsatz)

Migration der Firmendaten in eine neue Unternehmensstruktur. Bereinigung des Datenbestandes.

Technische Basis: MQSeries Workflow, MQSeries Messaging, AIX (Unix), Oracle Database, Fehlersuche in verteilten Systemen, Clustering, PVCS, C/C++, Java, Shell-Scripting
Nov. 2002 - Dez. 2002Spezialist für IBM MQSeries Workflow und AIX (2. Einsatz)
Sep. 2002 - Okt. 2002Spezialist für IBM MQSeries Workflow und AIX (1. Einsatz)

Kurzfristige Vor-Ort-Unterstützung zur Problemlösung bei einem Telekommunikationsunternehmen in Essen.

Aufgabe war die Behebung von Problemen im Produktivsystem die teilweise das Call Center von der Arbeit abhielt. Dort waren speziell die Unix-Erfahrung und das Knowhow im Bereich MQSeries Workflow (als ehemaliges Mitglied im Entwicklerteam von IBM) gefragt.

Technische Basis: MQSeries Workflow, MQSeries Messaging, AIX (Unix), Oracle Database, Fehlersuche in verteilten Systemen, Clustering, PVCS, C/C++, Java, Shell-Scripting
Feb. - Aug. 2002.NET-Architekt und Software-Engineer für Internetdienstleister
Architektur und Design einer auf .NET-basierenden Internetanwendung für den Mittelstand; Entwicklung und Koordination des Teams. Im Anschluß Durchführung von Tests und Unterstützung bei der Markteinführung.
Ziel des Projekts ist die Bereitstellung einer modularen, komponentenbasierenden Plattform zur individuellen Gestaltung der firmeneigenen Webpräsenz. Sie arbeitet nach dem Baukastenprinzip und soll professionelle Merkmale bei einfachster Benutzerführung bieten.
Technische Basis: ASP.NET, ADO.NET, C#, Common Language Runtime (CLR), UML, Design Patterns, XML, XSL, Microsoft SQLServer, SQL, Windows XP, Reflection-API, Internet Information Server 5.1 (IIS), Concurrent Versioning System (CVS), Linux, Secure Shell (SSH), Kryptographie
Sept. - Dez. 2001Coach / Administrator für mittelständisches Unternehmen
Coaching von Einzelpersonen bzw. Team u.a. im Bereich Web Development, Security und Datenbanken; Administration und Konfiguration (Performance, Angriffssicherheit und Problembehebung) von Windows und UNIX.
März – August 2001Software-Engineer bei großem Sportartikelhersteller
Entwicklung eines weltweit zum Einsatz kommenden PDM-Systems fuer einen großen Sportartikelhersteller, welches den gesamten Lebenszyklus einer Ware von der Idee, dem Design, der Budgetierung und der Fertigung  bis hin zum fertigen Produkt abdeckt.
Das eingesetzte System basiert auf den Komponenten Oracle, eMatrix (PDM-System),  Bea Weblogic Server und Java J2EE 1.3. Ich entwickelte damit die Anwendungs- und Geschäftslogik mithilfe von JavaServer Pages (JSP), Servlets, JavaBeans und Tag-Libraries. Öfters wurde ich auch bei Konfiguration des Systems zur Unterstützung hinzugezogen oder um die Performance oder Zuverlässigkeit zu optimieren.
Eine weitere Rolle war die Beratung der Projektleitung, insbesondere während des Redesigns von Teilen des Produkts. Dort war technische Beratung gefragt bezüglich Machbarkeit und Einsatzmöglichkeiten der verwendeten Technik.
Technische Basis: Java JDK 1.2 / 1.3, Java Enterprise (J2EE), JSP, Servlets, Tag-Libraries, JavaBeans, Bea Weblogic Server 5.x und 6.x (Entwicklung, Administration), eMatrix ADK 9.0, Assembly und Deployment von Web-Applikationen
Okt 1999 - Dez 2000Entwickler bei IBM (Festanstellung)
IBM, Böblingen/Stuttgart im IBM Labor für Forschung und Entwicklung: Mitglied im Entwicklungsteams von IBM MQSeries Workflow. Das Produkt ist eine multi-tier Middleware, üblicherweise bestehend aus IBM DB2, IBM MQSeries und IBM MQSeries Workflow. Weitere Komponenten sind z.B. Oracle Database oder IBM MQWorkflow WebClient/Java. Das Ziel des Produkts ist es unter anderem, den Business Workflow in Firmen zu automatisieren.
Eine Kernaufgabe war die Entwicklung, vor allem der UNIX-Komponente des Produkts (Solaris, HP-UX, AIX). Dazu gehörte auch die Portierung von HP-UX 10.20 auf 11.00 und von Solaris 7 auf Solaris 8. Des weiteren war meine Rolle auch die eines abteilungsweiten Ansprechpartners für Probleme im UNIX-Umfeld. Besondere Herausforderung war u.a. die Koordination des Zusammenspiels der oben genannten Komponenten oder die Konfiguration verteilter Setups auf heterogenen Systemen. Insbesondere dieses Wissen wurde beim Besuch bei Kunden der IBM benötigt, um komplexe Installationen des Produkts zu überprüfen, Probleme zu lösen und beratend zu wirken.
Technische Basis: C, C++, Java, Perl, UNIX-Skripte, Objektorientiertes Design und Implementierung, IBM DB2 Datenbank, Oracle Datenbank, IBM MQSeries Message Queue Server, IBM MQSeries Workflow, IBM MQSeries Workflow WebClient/Java: Prozeßmodellierung und Prozeßsteuerung, UNIX-Plattformen IBM AIX 4.x, Hewlett-Packard HP-UX 10.20 und 11.00, Sun Solaris 7 und 8, Linux, Administration des UNIX-Netzes (u.a. NFS, NIS, Kerberos, FTP, Routing, Verwaltung von Subnetzes, Benutzermanagement)
Dauer: ca 15 Monate
Sep 1998 - Mai 1999Administrator und Entwickler an der University of Connecticut, USA (Austauschstudent)
Arbeit am Rechnerpool für Studenten/Professoren, Integration neuer Software und Hardware, Administration des Windows- und UNIX-Netzes, Entwicklung von Tools/Programmen für z.B. Ermittlung der Resourcennutzung und sichere und zuverlässige  Zeiterfassung für Angestellte. Außerdem Consultant für Studenten und Professoren.
Mär 1997 - Aug 1997Entwickler bei Siemens (Werkstudent)
Erweiterung und Optimierung einer abteilungsinternen Software zur Projektplanung (Siemens) auf Oracle 7. Außerdem Support für die Abteilung und div. administrative Tätigkeiten auf Windows/UNIX. Schwerpunkte: Verbessertes Auftragsmanagement, Projektdarstellung, Resourceverteilung und mehr.
Technische Basis: Datenbank Oracle 7, Oracle Forms Designer, Oracle ReportWriter, Windows 95, Windows NT, Hewlett-Packard HP-UX 10.20, MS-DOS
Okt 1995 - Feb 1996Entwickler für IT Systemhaus (Werkstudent)
Implementierung einer Laptop-basierenden Lösung für Hausgeräte-Servicetechniker zur dezentralen Datenhaltung und Auftragsabwicklung vor Ort beim Kunden.
Schwerpunkte: Hohe Verfügbarkeit aller Firmendaten durch unproblematischen täglichen Datenabgleich, sehr schnelle Datensynchronsation, Bestellen und Recherchieren fernab vom Firmensitz, techniker-internes Mail-System, detailierte Kostenerfassung, Lösung von Konflikten bei der Datensynchronisation, Erteilen oder Entzug von Privilegien je nach Firmenpolitik (z.B. eigenständiges Bestellen ohne zentrale Kontrolle)
Plattform: Microsoft Visual FoxPro unter Windows auf xBase-basierender Datenbank
Aug 1994 - Sep 1994Entwickler für Softwarehaus (Werkstudent)
Erstellung eines Moduls zur Verwaltung des Mahnwesens in einer kaufmännischen Anwendung. Verfolgung offener Posten, Sonderregelungen für einzelne Kunden, Mahnhistorie, Einschätzen der Zahlbereitschaft, etc. Plattform: Microsoft FoxPro und MS-DOS auf xBase-basierender Datenbank
Betriebssysteme
  • Windows (seit Windows 95)
  • Linux (Debian, Ubuntu, RedHat, Gentoo, Slackware, Suse, CentOS)
  • Unix: Solaris, HP-UX, AIX, FreeBSD
  • Android
  • Apple iOS
  • macOS / Mac OS X (seit OS X Tiger)
Sprachen / Markup
  • Java (seit Version 1.0)
  • Kotlin
  • Scala
  • C#
  • SQL - verschiedene Dialekte: PostgreSQL, SQL Server, Oracle
  • HTML 5, CSS, SCSS / SASS, LESS, JavaScript, TypeScript
  • Python
  • C / C++ (semi-professionell)
  • Haskell (intermediate)
  • Go (entry level)
  • Rust (entry level)
Technologien / Skills
  • multilinguale Entwicklung auf der Java VM
  • Elasticsearch (Textsuche per Ähnlichkeit (nGrams, Fuzzy, Levensthein-Damerau, TF-IDF / BM25), Aggregation, Denormalisierung, Visualisierung mit Kibana, Performance-Optimierung, Live-Betrieb)
  • Sicherheit im Web: HTTPS, Zertifikate, webspezifische Probleme wie Cookie-Hijacking, Cross-Site-Request-Forgery, javascript-eval(), Zertifikate, DNS, usw.
  • Apache Wicket (Mitglied des Apache-Wicket-Entwicklerteams, Apache Committer)
  • angewandte Statistik / KI / neural networks: lineare Algebra, Statistik; linear / logistic regression, decision / random / boosted trees, support vector machines (SVM), naive Bayes; gradient descent; backpropagation; Metriken; clustering; dimensionality reduction; analytics; feature engineering; data cleaning; explorative data analysis (EDA); anomaly detection; PCA; multilayer, recurrent, convolutional neural network (CNN); natural language processing (NLP); Apache Mahout; Spark-ML; Flink-ML; pytorch; keras; numpy; pandas; seaborn; scikit-learn; scipy; deeplearning4j; nd4j
  • Asynchrones Messaging: Apache Kafka, Java Messaging Services (JMS), IBM MQSeries
  • Clean Code Evangelist: Refactoring großer Codebasen, Static Typing, DRY (don’t repeat yourself)
  • skalierbare Umgebungen (Load-Balancing, Sticky-Sessions, share nothing, Clustering, Cloud, Datenbank, verteilter Cache, Session-Failover)
  • Web-Services / Micro-Services: SOAP, REST, async-I/O, WebSockets, OAuth, stateless services, scaling out, fault resilience
  • SQL-Anbindung per native JDBC, Spring-JDBC, Spring-Transactions, J2EE DataSources, XA-Transaktionen, Hibernate, jOOQ, QueryDSL, JPA
  • TCP/IP (Protokolle, Verwendung, Schwachstellen, Protokollanalyse mit Wireshark, IPv4, IPv6, UDP, DNS, ARP, etc.)
  • funktionale Programmierung (starker Fokus)
  • Netzwerksicherheit: Routing, VPN, Verschlüsselung, Authentifizierung, Integrität, Angriffserkennung und -abwehr
  • Analyse des Datenverkehrs / Fehlersuche: u.a. Protokollebene mit Traffic-Analyzer (z.B. mit Etherreal / Wireshark)
  • Verständnis zahlreicher Netzwerkschichten, auch bis auf Protokollebene: z.B. TCP, UDP, IP, SMTP, POP3, IMAP, FTP
  • Security: TLS, Kryptographie, X.509-Zertifikate, Public- / Private Key, Signatur, Zufallszahlen
Schlagwörter / Index
Java Platform
Apache Ant, Maven, Gradle, Kotlin, Scala, Apache Wicket seit Version 1.3, Tomcat, SQL connection pooling (c3p0, commons dbcp, hikari), CGLib, dom4j, EHCache, Caffeine, Goggle Guice, Google Web Toolkit (gwt), JDBC, JDBI, JUnit, TestNG, JMeter, JRuby, JavaMail, Logging (slf4j, commons-logging, log4j, log4j2), Spring Framework, Spring Boot, JMS, JSP, Taglibs, JNDI, multithreading, AWT, Swing, Java IO / NIO, Reflection, EJB, Servlets, Beans, JAAS, vavr
Container / Deployment
Kubernetes, Docker, Docker Swarm
Kotlin
kotlin.coroutines, kotlinx.serialization, Scala, Apache Wicket seit Version 1.3, Tomcat, CGLib, xom, dom4j, xom, EHCache, Caffeine, kotlin coroutines, kotest, mockk, Goggle Guice, Google Web Toolkit (gwt), JDBC, JUnit, TestNG, JMeter, JRuby, JavaMail, Logging (slf4j, commons-logging, log4j), Spring Framework, Struts, Tapestry, JMS, Applets, JSP, Taglibs, JNDI,  multithreading, AWT, Swing, Java IO / NIO, Reflection, EJB, Servlets, Beans, JAAS
Javascript
node.js, socket.io, bower, npm, backbone.js, angular.js, jquery, angular, webpack
Datenbanken (SQL)
SQL Server, PostgreSQL, SQL Server Message Broker, hand crafted SQL (strong skill), T-SQL, Oracle, IBM DB2; Hibernate; Eclipselink; jOOQ; QueryDSL; Stored Procedures; SQL Server FileStreams + FileTables
Inversion of Control / Dependency Injection
Spring Framework, AOP, IoC, Google Guice, pico container, bytecode instrumentation (salve), Autofac, Ninject, inversion of control, mocking, proxy
Entwicklungswerkzeuge / -tools und IDEs
Eclipse, Jetbrains IntelliJ IDEA, Visual Studio, vi (vim), make, cmake, ant, msbuild, Maven, Gradle, Nexus, Hudson / Teamcity (CI, Continuous Integration, Continuous Delivery), SBT, Gradle
Apache Wicket
Mitglied im Apache Wicket Team seit Release 1.4, mehrere Projekte
Elasticsearch / Opensearch
ELK-Stack, Kibana, Logstash, Apache Lucene, Facets, Aggregations, TF-IDF, Okapi BM25, levenshtein, fuzzy, natural language processing (NLP), clustering, n-grams, relevance scoring, data preprocessing, debug score via explain API, hand-crafted JSON
.NET Framework
C#, ASP.NET, IIS, GAC, ildasm, nant, .NET 1.0 - 4.0, Visual Studio, ReSharper, TPL Dataflow, NUnit, Moq, NLog
Big Data / Clustered Computing
Apache Spark; Apache Flink; Scala; Apache Cassandra; Apache Kafka; Elasticsearch; Hadoop FS (hdfs)
Clean Code
Best Practices, Refactoring, Patterns, Wartbarkeit / Refactoring großer Codebasen, Testability
NoSQL
Redis, Apache Cassandra, Elasticsearch
Kommunikation
JMS, IBM MQ Series, Windows / Unix networking, Samba (SMB), ftp, ssh, scp, java rmi, SOAP, REST, TCP, UDP, IP, ICMP, packet sniffing, protocol analysis (wireshark), vpn, openvpn, IMAP, POP3, SMTP, Active Directory / LDAP, eBay API; SAP Java Connector (SAP JCo)
Machine Learning
angewandte Mathematik: lineare Algebra, Statistik; Hypothesen; Verteilungen; statistische Tests; Regressionsverfahren; Validierung; linear / logistic regression, decision trees, support vector machines (SVM), naive Bayes; gradient descent; Metriken; clustering; dimensionality reduction; analytics; feature engineering; data cleaning; explorative data analysis (EDA); anomaly detection; principal component analysis (PCA); ensemble learning; multilayer, recurrent neural network (RNN), convolutional neural network (CNN); natural language processing (NLP); Apache Mahout; Spark-ML; Flink-ML; pyTorch; keras; numpy; pandas; seaborn; scikit-learn; scipy; deeplearning4j; nd4j
SEO
on site optimization, Google Analytics, Google Tag Manager, Google Page Speed Optimierung, crawlability, site architecture, link design, change frequency, multi-lingual sites, canonical urls; TF/IDF
Security
Verschlüsselung, Authentifizierungsmechanismen, synchrone / asynchrone Verschlüsselung, Zertifikate, Signaturen, Hash-Verfahren, Trust-Management, TLS / SSL, X.509, Public / Private Key,  cipher operation modes (cbc / ebc / ...), one-way hashing (AES, SHA, usw.), symetric/asymetric encryption, Pseudozufallszahlen, OpenVPN, IPSec, SAML
Single-Sign-On (SSO)
OAuth 2, OpenID Connect (OIDC), JWT, SAML, SPNEGO, NTLM, Kerberos
Softwaredesign
design patterns, clean code, agile best practices, continuous Integration, continuous delivery, top-down / bottom-up design, pragmatic development, pair programming, continuous refactoring, test-driven development, strict type safety, scalable and maintainable software
Testing
JUnit, NUnit, TestNG, Mockito, Moq
Versionskontrolle (SCM)
GIT, gitlab, gitflow, github, gitea, Subversion (SVN), CVS
Web / Frontend
stateless architecture (share nothing); HTML 5, CSS 3, Javascript, jQuery, JavaScript, TypeScript; CSS, JSON, SEO optimization, semantic markup, jetty, netty, Tomcat, Microsoft IIS, Apache httpd, nginx, haproxy, JBoss / Wildfly / J2E-app servers, webpack, gulp, ASP.NET Razor, webpack, gulp, SCSS / SASS
XML
Push- und Pull-Parser, XML, XSL, DTD, XML-Schema, WSDL, Stream-/DOM-Parser, Stax, SAX, SOAP incl. Extensions: Verschlüsselung, Signatur, Routing

Projekthistorie

Reisebereitschaft

Verfügbar in den Ländern Deutschland
remote only
Profilbild von Anonymes Profil, Berater, Senior Architect, Senior Developer Berater, Senior Architect, Senior Developer
Registrieren