Mitarbeit bei der Entwicklung einer Videokonferenzsoftware für die Firma OpenTalk (https://opentalk.eu).
Meine Aufgabe war, 2021 zunächst einen Prototypen für eine Peer-To-Peer Videokonferenz auf der Basis von Node.js, javascript und WebRTC zu programmieren.
Im 2. Quartal 2021 wurde dann die Produktentwicklung mit einem eigenen in Rust programmierten Backend und einem mit Node.js, React, Typescript programmierten Frontend gestartet.
Dabei wurden unter Anderem RTK-Query für Serverzugriffe und jest.js für die Tests eingesetzt.
Bei der Produktentwicklung war ich als Software-Entwickler für das Frontend tätig und habe dabei GUI Komponenten und funktionale Komponenten entwickelt und getestet.
Projektsprache war überwiegend Englisch, da einige der Entwickler aus dem nicht deutschsprachigen Raum kamen.
Umfangreiches Review/Bugfixing der Open Xchange OX Drive App.
OX Drive ist eine Android App, mit der Inhalte zwischen der OX AppSuite und dem Android Device synchronisiert und auf dem Android Device lokal verfügbar gemacht werden können.
Die App ist in Java und Kotlin programmiert und verwendet verschiedene Android APIs um Dateien zwischen dem Android Device und dem AppSuite Server zu synchronisieren.
Dazu gehören unter Anderem Android Volley, Evernote JobManager, AsyncTask und andere.
Zu meinen Aufgaben gehört es, die Ursache für von der QS gemeldete Fehler zu finden und selbständig im Code zu beheben und, falls notwendig, Prozesse neu zu implementieren..
Auch bei der Migration auf die Android Target API 29 (Android 10) habe ich maßgeblich mitgearbeitet.
Mitarbeit in der Technical Competence Group bei ID4me (https://id4me.org/)
Aufgabe ist die Definition der technischen Spezifikation der ID4me Technologien.
Entwicklung von Referenzanwendungen/Demos für interessierte Unternehmen/Anwender.
Dabei habe ich unter anderem eine Java API für die Entwicklung einer Relying Party und eine Java API für das
Agent Identity Management (https://id.denic.de/aim/docs/api/v1/) programmiert.
Diese sind in Maven Central als Open Source veröffnetlicht (https://search.maven.org/search?q=a:relying-party-api, https://search.maven.org/search?q=a:aim-api-wrapper) und können z.B. mit maven in eigene Projekte eingebunden werden.
Entwicklung eines Authentication Filters für Spring Boot.
Der Filter kann in beliebige Spring Boot Anwendungen integriert werden.
Die Authentifizierung des Benutzers wird komplett transparent mit ID4me durchgeführt und im Erfolgsfall ein Principal Object in den Http-Request integriert.
Damit kann ein Programm dann prüfen, ob der Benutzer angemeldet ist und welche Rollen er hat.
Der Filter wurde von mir in Java programmiert und verwendet die von mir entwickelte Id4me relying party api als maven dependency.
Entwicklung eines Plugins für die Open-Xchanage AppSuite um sich mit einer ID4me ID anzumelden.
Das Plugin ist auf https://hermes.open-xchange.com/appsuite/ installiert und dient der ID4me Community (https://id4me.org/) als Demo.
Programmiert wurde das Plugin in Java als AuthenticationFilter für die AppSuite.
Zusätzlich zu der Programmierung in Java habe ich umfangreiche Änderungen an der Open-Xchange Serverkonfiguration (Apache2, MySQL) vorgenommen.
Entwicklung einer Relying Party API und einer Java API für das ID4me Identity Management (https://id.denic.de/aim/docs/api/v1/).
Um die Entwicklung einer Relying Party für ID4me zu vereinfachen, habe ich eine Java API programmiert welche die Kommunikation mit der Identity Authority und dem Identity Agent kapselt.
Die Relying Party wird automatisch bei der Identity Authority registriert, falls noch keine Registrierungsdaten vorhanden sind.
Das ID4me DNS-Discovery wird mit DNSSEC durchgeführt.
Die APIs sind in Maven Central als Open Source veröffnetlicht (https://search.maven.org/search?q=a:relying-party-api, https://search.maven.org/search?q=a:aim-api-wrapper) und können z.B. mit maven in eigene Projekte eingebunden werden.
Entwicklung eins Android VPN Client, der alle ausgehenden IP Pakete auf dem Android Device prüft und ggf. verarbeitet.
Dieser Filter erweitert die DNS Pakete um OX Protect spezifische Parameter, damit ein DNS Server diese erkennen kann und abhängig von zum Beispiel einer Altersfreigabe sperrt, oder zulässt.
Der Filter wurde in Java, als Android VpnService, programmiert und verwendet Pcap4J (https://github.com/kaitoy/pcap4j) um die ip/udp Pakete zu bearbeiten.
Entwicklung eins Android VPN Client, der alle ausgehenden IP Pakete auf dem Android Device prüft und ggf. verarbeitet.
Dieser Filter erweitert die DNS Pakete um OX Protect spezifische Parameter, damit ein DNS Server diese erkennen kann und abhängig von zum Beispiel einer Altersfreigabe sperrt, oder zulässt.
Entwicklung eines Clients für Chat over IMAP (COI). Es wurden der Kurento Mediaserver und Coturn für STUN/TURN verwendet, weil diese frei, gut dokumentiert sind und von einer Community unterstützt werden.
Der Client wurde mit Node.js realisiert und unterstütz Video chats mit mehreren Teilnehmern, die sich entweder über einen Link, z.B. in einer Email authentifizieren können, oder die Berechtigung für den Call durch einen Benutzer mit Passwort nachweisen.
Um nach dem Empfang von Emails prüfen zu können, ob diese unverändert ist, wird beim Versand der Email ein Hash der Email in der Blockchain (Ethereum) gespeichert.
Dieser Hash kann dann vom Empfänger der Email aus der Blockchain gelesen werden und die Authentizität der Email bestätigen.
Dazu habe ich einen Smart Contract für die Ethereum Blockchain programmiert, mit dem der Absender einen Hash der Email in der Blockchain speichern und diesen einer ID (Mail-ID) zuordnen und einen Smart Contract, mit dem man den Hash zu einer ID lesen kann.
Der Empfänger kann so den Hash zu der empfangenen Mail-ID aus der Blockchain lesen und mit einem selber berechneten Hash vergleichen.
Stimmen beide Werte überein, wurde die Email und evtl. vorhandene Dateianhänge nach dem Emailversand nicht mehr geändert.
Für Thunderbird habe ich mit JavaScript ein Add-On programmiert, mit dem man ausgehende E-Mails markieren kann, damit diese vom SMTP Server in der Blockchain gespeichert werden und ein Add-On, mit dem die Email überprüft werden kann.
Für den Postfix Server habe ich einen Filter in Java programmiert, der die Email parsed und abhängig davon, ob ein bestimmter Email-Header existiert, den Hash der Email in der Blockchain speichert.
Ausarbeitung und Implementierung einer Architektur für sichere Email für die Initiative TrustedEmailServices (https://tesmail.org/).
Es wurde eine Architektur entwickelt und umgesetzt, mit der ähnlich zu email-made-in-germany, die Mailserver der Teilnehmer garantiert verschlüsselt kommunizieren.
Zusätzlich kann ausgehende Mail, wenn der Absender es wünscht, vom Mailserver mit pgp, oder aes verschlüsselt werden.
Die wurden so konfiguriert, dass sie mindestens TLS 1.2 mit PFS und DANE/DNSSEC unterstützen.
Ich habe einen Service für postfix programmiert, der die Mails verschlüsselt und pgp keys erstellt und im sks Server speichert.
Zusätzlich habe ich einen Service für postfix programmiert, der prüft, ob die Transportverschlüsselung den Vorgaben entspricht und wenn nicht, die Mail mit einer Meldung an den Absender zurückschickt.
Das projekt findet in einem internationalen Umfeld statt (unter Anderem: USA, Finnland, Niederlande, England) und es wird deswegen überwiegend in Englisch kommuniziert.
https://patents.google.com/patent/WO2018203223A1/en
Gegenwärtig wird Werbung von Webservern in zum Beispiel Webseiten, oder Chat-Räumen eingebaut unabhängig davon, ob der Benutzer die Werbung wünscht, oder nicht.
Es ist keine Möglichkeit bekannt, mit der ein Benutzer diese Werbung global verhindern kann, außer er verwendet einen Werbeblocker.
Wir haben eine Methode entwickelt, mit der ein Benutzer bei seinem Internetprovider global konfigurieren kann, welche Werbung er angezeigt bekommen möchte, oder ob keine Werbung angezeigt werden soll.
Dabei überprüft der Inhalteanbieter, welcher ISP für eine IP Adresse registriert ist und ob mit diesem ein Vertragsverhältnis besteht. Abhängig von dem Status den der ISP für diese IP-Adresse liefert, wird Werbung in einer Webseite angezeigt, oder nicht.
Entwicklung eines Programms mit dem Werbung für einen definierten Zeitraum in einem IMAP Ordner angezeigt werden kann.
Für den Prototypen habe ich die E-Mail direkt in die Dovecot Mailbox eingefügt und nicht als virtuelles IMAP Objekt im Dovecot erstellt.
Ich habe eine Benutzeroberfläche mit Spring Boot und HTML programmiert, in der die aktuell laufenden Kampagnen angezeigt und bearbeitet werden können. Diese Seite habe ich dann in die Open Xchange AppSuite als zusätzlichen Tab integriert. Die Daten der Werbekampagnen wurden in einer MongoDB Datenbank gespeichert.
Für dem Dovecot Server habe ich einen Hintergrundprozess geschrieben, der die Werbekampagnen in der Datenbank überwacht und, abhängig vom Status der Kampagne, E-Mails in der Inbox der Dovecot Benutzer anlegt, oder löscht.
https://www.bsi.bund.de/DE/Publikationen/TechnischeRichtlinien/tr03108/index_htm.html
Mitarbeit als Vertreter für Open-Xchange bei der Ausarbeitung der technischen Richtlinie "Sicherer E-Mail-Transport".
Die Technische Richtlinie "Sicherer E-Mail-Transport" (BSI TR-03108) definiert konkrete Anforderungen an einen E-Mail-Diensteanbieter (EMDA). Ziel der Technischen Richtlinie (TR) ist die Erhöhung der Vergleichbarkeit und Verbreitung sicherer E-Mail-Kommunikation.
https://patents.google.com/patent/US9531785B1/en
Gegenwärtig sammeln IMAP-Server eine Liste von E-Mails für eine bestimmte Benutzer-ID und einen bestimmten IMAP-Ordner, abhängig von den E-Mails, die der Benutzer über das Simple Mail Transfer Protocoll (SMTP)/Local Mail Transfer Protocoll (LMTP) erhalten hat. Es ist kein anderer Mechanismus bekannt, um zusätzliche Informationen in die E-Mail-Liste einzufügen, als die zusätzlichen Informationen als E-Mail an den IMAP-Server zu senden.
Daher müssen Werbe- oder andere Informations-E-Mails, wie z.B. Warnmeldungen, als E-Mails an eine Liste namentlich genannter Empfänger versandt werden und können von Spam-Filtern leicht identifiziert und entfernt werden, und Lese-/Löschvorgänge sind für die Protokollierung nicht leicht zu erkennen.
Wir haben eine Methode entwickelt, mit der IMAP Objekte direkt in der Inbox, oder einem beliebigen anderen IMAP Ordner eines Benutzers eingefügt werden können. Diese IMAP Objekte werden nicht über SMTP versendet, können aber von jedem IMAP Client (z.B. Thunderbird) angezeigt werden und sich wie normale E-Mails anfühlen und Werbung, oder andere Informationen enthalten.
03/2014 - 12/2014
DVAG / Frankfurt a.M.
Entwicklung eines Webservices für die Erstellung von Berichten im Intranet.
Es werden aus verschiedenen Mongo-Datenbanken mit über 2.5 Millionen Dokumenten, Einträge selektiert und als JSON durch einen RestFull Service an das Frontend weitergegeben.
Die Datenbanken werden über JPA in die Anwendung eingebunden. Der Service ist mit Spring-Boot realisiert und verwendet Memchached für das Cachen der Anfragen.
Das Mapping der Url's und Parameter erfolgt über Spring-Annotations.
Aufgabe im Projekt
Planung und Umsetzung der Services
Eingesetzte Technologien und Plattform
Java, J2EE, Spring, MongoDB, Memcached, Eclipse, JSON
01/2014 - 05/2014
DVAG / Frankfurt a.M.
Planung und Entwicklung einer Software für die Anmeldung zu einer Schiffsreise.
2500 mögliche Gewinner eines Wettbewerbes können sich online für eine Schiffsreise registrieren und Daten über sich und ihren Lebenspartnern abgeben.
Das Formular ist bis zu einem Stichtag bearbeitbar und wird danach nur noch lesend geöffnet.
Basierend auf diesen Daten können dann in einem zweiten Schritt die tatsächlich ermittelten Gewinner online eine verbindliche Anmeldung abgeben.
Beim speichern der Anmeldung wird automatisch eine Mail mit den Anmeldedaten an den Gewinner versendet.
Die liste der Teilnehmer wurden aus der zentralen DB2 mit ODBC importiert und die Anmeldungen anschließend wieder in die DB2 exportiert.
Aufgabe im Projekt
Planung und Programmierung der Anwendung
Eingesetzte Technologien und Plattform
LotusScript, HTML, CSS, JQuery, Lotus Notes, ODBC
08/2013 - 10/2013
DVAG / Frankfurt a.M.
Entwicklung einer Anwendung um eine digitale Visitenkarte in einen Film zu rendern.
Ziel der Anwendung ist es, eine digitale Visitenkarte mit verschiedenen Effekten in einen Film einzubauen.
Es werden für 30.000 Vermögensberater jeweils 310 Einzelbilder personalisiert und in einen Film eingebaut.
Aufgabe im Projekt
Planung und Programmierung der Anwendung
Eingesetzte Technologien und Plattform
Java, Eclipse
01/2013 - 08/2013
DVAG / Frankfurt a.M.
Entwicklung eines Webeditors für ein CMS.
Für eine Neuentwicklung im Intranet wurde ein Webeditor an eine LotusNotes Datenbank angebunden.
Es ist möglich, während der Bearbeitung von Inhalten, Bilder, oder andere Dateien auf den Server hochzuladen und direkt in der Seite zu verwenden.
Beim Speichern werden zusätzliche Meta-Daten abgefragt, die zusammen mit dem Inhalt in einer LotusNotes Datenbank gespeichert werden.
Die Eingabe des Inhaltes wurde mit CKEditor realisiert. Der Inhalt wird mit AJAX als Stream und die Metadaten mit AJAX als JSON an den Server gesendet. Dabei kommen sowohl Servlets unter Lotus Domino als auch LotusNotes Agenten in der Datenbank zum Einsatz.
Aufgabe im Projekt
Planung und Programmierung der Anwendung
Eingesetzte Technologien und Plattform
Lotus Notes/Domino, Java2EE, AJAX, JSON, Eclipse, CKEditor 4.1.2
01/2012 - 06/2012
DVAG / Frankfurt a.M.
Entwicklung einer Anwendung um digitale Portraits in einen Film zu rendern.
Ziel der Anwendung ist es, in einem Film mit dem Foto eines Direktionsleiters zu personalisieren.
Das Programm erkennt in den Einzelbildern aus einer bewegten Filmsequenz einen grün markierten Bereich.
Es transformiert ein Bild mit dem Foto des Direktionsleiters so, dass dieses dem grünen Bereich entspricht.
Anschließend wird der grüne Bereich durch das Foto ersetzt und das Einzelbild gespeichert.
Aus den Einzelbildern wird mit FFmpeg wieder eine Filmsequenz erstellt.
Aufgabe im Projekt
Planung und Programmierung der Anwendung
Eingesetzte Technologien und Plattform
Eclipse C++, OpenCV, Linux
01/2012 - 06/1012
DVAG / Frankfurt a.M..
Neuentwicklung eines Webcrawlers für das Intranet.
Die Anwendung soll das gesamte lokale Intranet für die Volltextsuche indizieren und den Textanteil, Navigationsinformationen und Zugriffsbeschränkungen von Officedokumenten, PDF's und HTML-Seiten erfassen.
Zusätzlich werden für jede Seite die Zugriffsberechtigungen und Position in der Navigationsstruktur erfasst und gespeichert.
Das Programm läuft als Hintergrundprozess unter Linux und kann über eine Telnetkonsole gesteuert werden.
Es werden mehrere Threads parallel gestartet, die jeweils einen konfigurierbaren Teilbaum der Navigation verarbeiten.
Die Seiten werden über HTTPS vom Server abgerufen und für die Authentifizierung jeweils ein COOKIE in den Request eingefügt.
Es werden alle Dateianhänge mir regulären Ausdrücken ermittelt und gespeichert.
Die Textanteile der Officedokumente werden mit Apache-POI, die der PDF?s mit PdfBox und die Textanteile der HTML-Seiten mit regulären Ausdrücken extrahiert und zusammen mit den Zugriffsrechten und der Position in der Navigation in eine Datenbank gespeichert.
Die Anwendung kann über eine Telnetkonsole überwacht und beendet werden.
Aufgabe im Projekt
Analyse, Design und Implementierung des Systems
Eingesetzte Technologien
Java2EE, Apache POI, PdfBox, Java-Sockets, DerbyDB
01/2011 - 10/2011
Entwicklung einer Software für die VFR Flugvorbereitung und Navigation.
Ziel der Anwendung ist die Flugplanung am PC zu ermöglichen und anschließend auf einem Android Gerät die Daten für die Flugdurchführung anzuzeigen.
Die Flugplanung wird am PC mit einer Internetseite und HTML5/JavaScript umgesetzt und läuft unter Firefox ab Version 11.0.
Es können Flugplätze aus einer Liste, oder beliebige Punkte auf der Karte für den Streckenverlauf ausgewählt werden.
Diese Wegpunkte werden personalisiert im Intranet gespeichert und sowohl am PC, als auch auf einem Android Gerät ab Version 1.6 geladen und Visualisiert.
Es werden die Entfernung und Richtung für jeden Abschnitt der Planung berechnet und als Liste angezeigt.
Zusätzlich werden die Daten auf der Luftfahrkarte als Striche und die Position und Richtung als Symbol angezeigt.
Aufgabe im Projekt
Planung und Umsetzung der Anwendung
Eingesetzte Technologien
HTML5, Java2EE, Android SDK, JSON, JavaScript
06/2010 - 12/2010
DVAG / Frankfurt a.M..
Planung und Entwicklung einer Facebook Applikation um RSS Feeds selektiv in ein Feed einer Facebook-Page zu posten
Ziel der Anwendung ist es beliebige Beiträge aus einem WordPress Blog, die als RSS Feed gelesen werden, unter der ID eines Vermögensberaters in das Feed seiner Facebook-Page zu posten.
Dazu wurde eine Facebook Applikation entwickelt die RSS Feeds auslesen und über die Graph-Api und die Old-REST Api nach Facebook posten kann.
Die Beiträge werden im Namen des Facebook-Users gepostet und können auch wieder aus dem Feed gelöscht werden.
Um die notwendigen Berechtigungen vom Facebook-User für die Applikation zu erhalten wurde eine Webanwendung programmiert die über AJAX mit Facebook kommuniziert und gleichzeitig dem User eine Feedback über die stattfindende Operation gibt.
Wenn der User die Genehmigungen bei Facebook erteilt hat werden die Zugriffstoken und die Facebook-Id des Users in einer Datenbank gespeichert.
Aufgaben im Projekt
Planung und Umsetzung der Anwendung
Eingesetzte Technologien
AJAX, JSP, Facebook graph.api, REST
01/2010 - heute
DVAG / Frankfurt a.M.
Weiterentwicklung eines Crawlers für die Volltextsuche - 2
Um Dateianhänge indizieren zu können wurde eine Anwendung entwickelt welche die Inhalte von Office- und PDF-Dateien als Text zur Verfügung stellt und an den Indexer übergibt.
Als Eingabeformat werden Microsoft Word, Microsoft PowerPoint und PDF unterstützt.
Die Metadaten zu den Dateien werden als Liste aus einer Textdatei gelesen und sequenziell verarbeitet.
Jede Datei wird zunächst vom Webserver abgerufen und die Informationen aus dem HTTP-Header verarbeitet.
Dann wird die Datei für die weitere Verarbeitung im Filesystem gespeichert.
Nachdem das Format der Datei analysiert wurde, wird diese über die POI-Api eingelesen und der Textanteil des Inhaltes zusammen mit den Metadaten aus der Liste in eine neue Textdatei geschrieben.
Aufgaben im Projekt
Entwicklung der Anwendung
Eingesetzte Technologien
Java, Apache POI, wget, curl
01/2009 - 01/2010
DVAG / Frankfurt a.M.
Entwicklung einer Webanwendung für die Erstellung von PowerPoint Präsentationen
Die Marketingabteilung stellt den Vermögensberatern PowerPoint Präsentationen zur Verfügung aus denen diese einzelne Slides auswählen und zu einer neuen Präsentation zusammenstellen können.
Es wurde eine Anwendung entwickelt, die eine vom DMS übergebene Datei in ein Redaktionssystem aufnimmt, und den Vermögensberatern im Intranet zur Verfügung stellt.
Die Anwendung zerlegt zunächst die Präsentation mit der Tonic Library in einzelne Dateien pro Slide und erstellt pro Slide ein Bild für die Vorschau im Web.
Der Redakteur kann eine Präsentation jeweils freigeben, sperren, oder eine ältere Version freigeben.
Danach hat der Vermögensberater die Möglichkeit sich im Webbrowser aus einer Liste aller Präsentationen jeweils eine auszuwählen und aus dieser dann einzelne Slides zu wählen.
Die gewählten Slides werden dann zu seiner Auswahl hinzugefügt.
Die Reihenfolge der Slides kann jederzeit geändert werden und es können auch einzelne Slides aus der Auswahl wieder gelöscht werden.
Hat der Vermögensberater alle gewünschten Slides aus den Präsentationen ausgewählt, wird eine neue Präsentation mit diesen Slides erstellt und zum Download angeboten.
Die Anwendung wurde überwiegend mit JSP?s und Servlets unter Apache Tomcat realisiert.
Aufgaben im Projekt
Entwicklung und Umsetzung des Redaktionssystems
Entwicklung und Umsetzung der Web-Oberfläche
Planung und Umsetzung der Schnittstelle zu FileNet
Eingesetzte Technologien
Eclipse, JSP, Java, JavaScript, HTML, CSS, Tonicsystem PPT Library, FileNet DMS
01/2009 - 01/2010
DVAG / Frankfurt a.M.
Planung und Entwicklung eines Content Management Systems mit firstSpirit 4.1.
Realisiert wurde ein Redaktionssystem mit dem Direktionen ihren Mitarbeitern Vertriebsinformationen zur Verfügung stellen können.
Für das Redaktionssystem wurden sowohl Webmodule, als auch serverweite Module erstellt.
Die Ausgabe wurden überwiegend als JSP generiert.
Aufgaben im Projekt
Entwicklung von Designtemplates und Modulen für das Redaktionssystem
Eingesetzte Technologien
firstSpirit 4.1, firstSpirit Webmodule und Servermodule, JSP.
01/2007 ? 01/2009
DVAG / Frankfurt a.M.
Weiterentwicklung eines Crawlers für die Volltextsuche - 1
Für die Volltextsuche im VB-Intranet der DVAG gibt es einen in Perl geschriebenen Crawler, der von einer gegebenen URL aus Seiten von Webserver abruft und den Inhalt analysiert und als Text speichert, sowie die enthaltenen Links weiterverfolgt.
Die Seiten werden mit einem konfigurierbaren Benutzer abgerufen, da ein anonymer Zugriff auf das Intranet nicht möglich ist.
Dateien die in der Seite verlinkt sind werden in eine Liste aufgenommen um später gesondert indiziert zu werden.
Die Navigation für den Benutzer ist innerhalb der Seite als JavaScript realisiert und wird vom Crawler ausgewertet und für die Zuordnung des Dokumentes zu bestimmten Themen-/Produktbereichen gespeichert.
Um die Suche für einzelne Mandanten zu ermöglichen, musste die Anwendung umfangreich angepasst werden und der Vorhandene Code teilweise neu geschrieben werden.
Aufgaben im Projekt
Analyse des vorhandenen Codes
Erweiterung der Anwendung um Mandantenfähigkeit
Eingesetzte Technologien
Eclipse, Perl
01/2007 - heute
DVAG / Frankfurt a.M.
Weiterentwicklung eines Content Management Systems auf Basis Lotus Notes und Tomcat
Für das Personalisierte VB-Intranet werden Inhalte in Lotus Notes erstellt, oder bearbeitet.
Bei der Freigabe der Dokumente werden diese mittels Lotus DXL API im XML Format exportiert und durch einen JavaAgenten zu HTML weiterverarbeitet und anschließend wieder importiert.
Das daraus resultierende HTML wird mit Inhalten und Logik aus verschiedenen Vorsystemen von zwei Tomcatservern publiziert.
Aufgaben im Projekt
Fehlerbeseitigung in den vorhandenen Datenbanken
Neuentwicklung von Anwendungen unter Lotus Notes
Support der Hotline bei Anwendungsfehlern
Eingesetzte Technologien
Lotus Notes/Domino 7, J2EE, JSP, XML, ODBC, Eclipse, LotusScript, HTML, JavaScript.
09/2006 - 12/2006
BEDAG AG / Bern CH
Entwicklung von UI Komponenten und serverseitiger Logik für die Aufbereitung Erstellung von PDF-Dateien auf dem Host
Um Aufträge und Grundstücksprotokolle im Rahmen einer Anwendung der Finanzverwaltung Bern auszudrucken, habe ich Dialoge und Eingabemasken mit ULC, (Ultra Light Client, ein auf Java Swing basierendes Framework von Canoo) erstellt und die Verarbeitung der Aufträge auf dem Server programmiert.
Aus diesen Masken heraus wird die Aufbereitung von Druckdaten für die jeweiligen Dokumente auf dem Server angestoßen. Dazu werden die Druckdaten über Hibernate in eine DB/2 Datenbank auf dem Host übertragen und anschließend aus Java verschiedene in Cobol programmierte Stored Procedures auf dem Host aufgerufen.
Nach erfolgreicher Ausführung werden die PDF-Dateien wieder aus der Datenbank ausgelesen und an den Client geschickt, der diese dann anzeigt.
Die Anwendung wurde mit Eclipse entwickelt, dazu gehörte auch die Entwicklung von JUnit-Tests.
Das Deployment auf den JBoss Server und die Ausführung der JUnit -Tests wird durch ein ANT-Script gesteuert.
Aufgaben im Projekt
Entwicklung einer Schnittstelle zum Aufruf der Cobol Stored Procedures aus Java
Entwicklung von Dialogen und Eingabemasken mit ULC
Eingesetzte Technologien
Canoo, J2EE, Hibernate, JBoss, Eclipse, JUnit, ANT, ULC, Swing, DB/2, MS-SQL, CICS, Stored Procedures.
01/2005 bis 06/2006
Activest GmbH, Unterföhring
Risiko- und Performancekennzahlen im ETL-Prozess eines Data Warehouse
Es werden alle Kennzahlen (z.B. Sharpe Ratio, Volatilität, Korrelation, BVI-Performance, Benchmark-Performance) basierend auf der historischen Wertentwicklung Initial beim Ladelauf berechnet und in der Datenbank gespeichert. Anschließend werden jeweils täglich nur noch die Werte für den Bewertungszeitraum (in der Regel ein Tag, oder ein Wochenende) hinzugefügt.
Die Performance der Berechnung (es werden Daten für ca. 1500 Anteile und einen Zeitraum von ca. 20 Jahren berechnet) und die Genauigkeit der Berechnungsergebnisse sind wichtige Qualitätskriterien.
Die Daten werden anschließend z.B. für Monatsberichte, welche mit Actuate erstellt werden, verwendet.
Aufgaben im Projekt
Entwicklung des Moduls zur Berechnung von Risikokennzahlen und Kennzahlen zur Performanceentwicklung
Programmierung von Stored Procedures in PL/SQL und Java
Implementierung der Berechnung finanzmathematischer Größen und Kennzahlen
Eingesetzte Technologien
Oracle Stored Procedures in Java und PL/SQL, Eclipse, XML, Informatica
08/2004 bis 12/2004
Fiducia AG, München
Content Management-System mit Lotus Domino-Anbindung
Inhalte werden über die Lotus Domino Java-API aus den Notes-Datenbanken gelesen und in XML umgewandelt. Nach dem Bearbeiten und Umwandeln in HTML mit XSLT werden die Inhalte wieder in Notes-Datenbanken gespeichert.
Aufgaben im Projekt
Entwicklung eines Web Client unter WebSphere Application Studio 5.1
Eingesetzte Technologien
XML, Websphere, J2EE, Corba, JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache
03/2004 bis 08/2004
Gallinger Consulting, Mannheim
Lotus Notes-Applikation für die Angebotsverwaltung
Die Anwendung dient der Planung / Steuerung der Angebotserstellung.
Es werden Exceldateien von Lotus Domino Server erstellt und über Active-X mit berechneten Vorgabedaten gefüllt an den Webbrowser gesendet. Nach dem Ausfüllten der Exceldateien werden diese wiederum mit dem Webbrowser an den Server gesendet und von diesem online über OLE in Lotus Notes Dokumente umgewandelt.
Für die Weiterleitung der Dokumente kommt ein Workflow zum Einsatz der festlegt, wer welche Dokumente bearbeiten / weiterleiten darf.
Aufgaben im Projekt
Analyse, Design und Implementierung des Systems
Eingesetzte Technologien
Active-X, OLE, JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache
06/2003 bis 02/2004
Chorus GmbH (MIS Group), München
Integrierte Projektadministration für einen Automobilkonzern
Die Anwendung dient der Planung / Steuerung des Projektverlaufes bei der Entwicklung von neuen Automobilmodellen. Für die Realisierung wurde Oracle mit Tomcat als Webserver gewählt.
Entwickelt wurde mit dem Chorus-eigenen Framework eChora.
Für den Transport der Daten werden diese nach XML und wieder zurück konvertiert.
Auch wird das System über XML-Dateien konfiguriert.
Aufgaben im Projekt
Entwicklung verschiedener Systemkomponenten
Eingesetzte Technologien
Java, J2EE, Servlets, JDBC, JavaScript, CSS, D-HTML, XML
05/2003 bis 03/2004
Chorus GmbH (MIS Group), München
Lotus Notes-Anwendung für das Tracking von Fehlern und Anforderungen
Die Anwendung kann komplett über einen Webbrowser oder Lotus Notes bedient werden.
Die Fehler bzw. Anforderungen durchlaufen dabei jeweils einen Workflow bis zur Genehmigung oder Realisierung. Der Zugriff erfolgt sowohl intern über Lotus Notes Clients als auch vom
Kunden über das Internet.
Aufgaben im Projekt
Analyse, Design und Implementierung des Systems
Eingesetzte Technologien
JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache, Lotus Domino
01/2000 bis 04/2003
Deutsche Bank, Bereich Private Banking, Frankfurt
Informationsportal für das weltweite Intranet des Private Banking
Als Applikationsserver wurde Lotus Domino eingesetzt und als Dokumentenmanagement-System und für den Workflow Lotus Domino.Doc. Die Anwendung wurde im Wesentlichen mit Servlets realisiert, welche über JDBC/SQL auf die DB/2 und über die Lotus-eigene API auf Lotus Notes zugegriffen haben.
Zusätzlich wurden die IBM Translation Services für Websphere, Lotus Sametime und Lotus Quickplace eingebunden.
Wesentliche Funktionalitäten des Portals:
Es werden für ca. 10.000 Benutzer jeweils ein persönliches Profil verwaltet und davon abhängig Informationen aus dem Dokumentenmanagement-System angezeigt.
Officedokumente werden auf Wunsch beim Speichern auf dem Server direkt in PDF umgewandelt.
Die Daten werden für Fremdsysteme im XML-Format zur Verfügung gestellt.
Für die verschiedenen internationalen Regionen wird das Portal jeweils in der Landessprache oder in Englisch angezeigt.
Die Dokumente durchlaufen von der Erstellung durch ein Redaktionsteam über die Kontrolle auf Inhalt und Form bis zur Freigabe einen entsprechenden Workflow.
Aufgaben im Projekt
Verantwortlicher Systemarchitekt
Analyse, Design und Implementierung verschiedener Komponenten
Entwicklung eines Windows NT-Systemdienstes zur Kapselung der IBM Translation Services für Websphere
Eingesetzte Technologien
C++, Java, J2EE, JDBC, JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache,
DB2/UDB, XML, Lotus Domino, ArgoUML, OLE, ActiveX, Corba
IBM AIX, Windows 2000 Server
02/1999 - 05/1999
UNION Investment / Frankfurt.
Verantwortlich für die Entwicklung.
Erstellung eines Systems zur Erfassung von Wettbewerberkennzahlen unter Lotus Notes.
Es wurden die Kennzahlen über das Intranet eingegeben.
Für die Auswertung konnten im Browser Kriterien selektiert werden und das Ergebnis
als Datei für die Bearbeitung in einer Tabellenkalkulation sofort abgerufen werden.
Kenntnisse: OLE, JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache, Lotus Domino.
01/1998 - 12/1999
Deutsche Telekom - Messesupport / Hannover.
Verantwortlicher Systemarchitekt.
Weiterentwicklung einer Ressourcenplanung für Messen auf Basis Lotus Notes.
Es wurde Standpersonal genauso wie Netzwerkanschlüsse, oder Hotelbetten über
das Intranet oder Lotus Notes gebucht. Die Messeplanung konnte jederzeit die
Einsatztage zentral koordinieren und über das Intranet alle für die Messeplanung
relevanten Daten abrufen, oder bearbeiten.
Kenntnisse: JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache, Lotus Domino.
05/1998 - 05/1999
MIS AG - Darmstadt.
Verantwortlich für die Planung und Realisierung.
Entwicklung eines internen Informationssystems für das Intra-/Internet auf
Basis von Lotus Notes.
Kenntnisse: JavaScript, D-HTML, LotusScript, Lotus Domino.
1997
Whats up AG - München.
Leitung der Entwicklung.
Erstellung einer Anwendung für den Endkunden zur einfachen Konfiguration von
Internetsites auf Basis Lotus Notes. Es wurden sowohl Animierte Grafiken als
auch JavaScript unterstützt. Dem Benutzer sollte ohne Kenntnisse von HTML, etc.
die Möglichkeit gegeben werden einen Ansprechenden Internetauftritt zu gestalten.
Kenntnisse: JavaScript, D-HTML, LotusScript, Lotus Domino.
1997
Böhringer Penzberg.
Verantwortlich für die Planung und Realisierung.
Erstellung eines Workflows für die Erteilung von Zugriffsberechtigungsanträgen
über 5 Stellen.
Es sollten Anträge über das Intranet gestellt werden können, der Status wurde
überwacht und ggf. per Email benachrichtigt.
Realisiert unter Lotus Notes.
Kenntnisse: JavaScript, D-HTML, LotusScript, Lotus Domino.
1996
BMW - München
Leitung der Entwicklung.
Erstellung einer Raumreservierung mit variabler Verpflegungsbestellung für das
Intranet.
Die Anwendung wurde unter Verwendung von HTML / JavaScript komplett in Lotus Notes
realisiert.
1996
Siemens Werke - Augsburg
Verantwortlich für die Planung und Realisierung.
Entwicklung eines Intranetwarenkorbes.
Unter Vorgabe das Look & Feel der Lotus Notes Anwendung auch im Intranet beizubehalten, sollte die Funktionalität auch im Web verfügbar sein.
Die Anwendung wurde als reine Lotus Notes Applikation realisiert.
Mitarbeit bei der Entwicklung einer Videokonferenzsoftware für die Firma OpenTalk (https://opentalk.eu).
Meine Aufgabe war, 2021 zunächst einen Prototypen für eine Peer-To-Peer Videokonferenz auf der Basis von Node.js, javascript und WebRTC zu programmieren.
Im 2. Quartal 2021 wurde dann die Produktentwicklung mit einem eigenen in Rust programmierten Backend und einem mit Node.js, React, Typescript programmierten Frontend gestartet.
Dabei wurden unter Anderem RTK-Query für Serverzugriffe und jest.js für die Tests eingesetzt.
Bei der Produktentwicklung war ich als Software-Entwickler für das Frontend tätig und habe dabei GUI Komponenten und funktionale Komponenten entwickelt und getestet.
Projektsprache war überwiegend Englisch, da einige der Entwickler aus dem nicht deutschsprachigen Raum kamen.
Umfangreiches Review/Bugfixing der Open Xchange OX Drive App.
OX Drive ist eine Android App, mit der Inhalte zwischen der OX AppSuite und dem Android Device synchronisiert und auf dem Android Device lokal verfügbar gemacht werden können.
Die App ist in Java und Kotlin programmiert und verwendet verschiedene Android APIs um Dateien zwischen dem Android Device und dem AppSuite Server zu synchronisieren.
Dazu gehören unter Anderem Android Volley, Evernote JobManager, AsyncTask und andere.
Zu meinen Aufgaben gehört es, die Ursache für von der QS gemeldete Fehler zu finden und selbständig im Code zu beheben und, falls notwendig, Prozesse neu zu implementieren..
Auch bei der Migration auf die Android Target API 29 (Android 10) habe ich maßgeblich mitgearbeitet.
Mitarbeit in der Technical Competence Group bei ID4me (https://id4me.org/)
Aufgabe ist die Definition der technischen Spezifikation der ID4me Technologien.
Entwicklung von Referenzanwendungen/Demos für interessierte Unternehmen/Anwender.
Dabei habe ich unter anderem eine Java API für die Entwicklung einer Relying Party und eine Java API für das
Agent Identity Management (https://id.denic.de/aim/docs/api/v1/) programmiert.
Diese sind in Maven Central als Open Source veröffnetlicht (https://search.maven.org/search?q=a:relying-party-api, https://search.maven.org/search?q=a:aim-api-wrapper) und können z.B. mit maven in eigene Projekte eingebunden werden.
Entwicklung eines Authentication Filters für Spring Boot.
Der Filter kann in beliebige Spring Boot Anwendungen integriert werden.
Die Authentifizierung des Benutzers wird komplett transparent mit ID4me durchgeführt und im Erfolgsfall ein Principal Object in den Http-Request integriert.
Damit kann ein Programm dann prüfen, ob der Benutzer angemeldet ist und welche Rollen er hat.
Der Filter wurde von mir in Java programmiert und verwendet die von mir entwickelte Id4me relying party api als maven dependency.
Entwicklung eines Plugins für die Open-Xchanage AppSuite um sich mit einer ID4me ID anzumelden.
Das Plugin ist auf https://hermes.open-xchange.com/appsuite/ installiert und dient der ID4me Community (https://id4me.org/) als Demo.
Programmiert wurde das Plugin in Java als AuthenticationFilter für die AppSuite.
Zusätzlich zu der Programmierung in Java habe ich umfangreiche Änderungen an der Open-Xchange Serverkonfiguration (Apache2, MySQL) vorgenommen.
Entwicklung einer Relying Party API und einer Java API für das ID4me Identity Management (https://id.denic.de/aim/docs/api/v1/).
Um die Entwicklung einer Relying Party für ID4me zu vereinfachen, habe ich eine Java API programmiert welche die Kommunikation mit der Identity Authority und dem Identity Agent kapselt.
Die Relying Party wird automatisch bei der Identity Authority registriert, falls noch keine Registrierungsdaten vorhanden sind.
Das ID4me DNS-Discovery wird mit DNSSEC durchgeführt.
Die APIs sind in Maven Central als Open Source veröffnetlicht (https://search.maven.org/search?q=a:relying-party-api, https://search.maven.org/search?q=a:aim-api-wrapper) und können z.B. mit maven in eigene Projekte eingebunden werden.
Entwicklung eins Android VPN Client, der alle ausgehenden IP Pakete auf dem Android Device prüft und ggf. verarbeitet.
Dieser Filter erweitert die DNS Pakete um OX Protect spezifische Parameter, damit ein DNS Server diese erkennen kann und abhängig von zum Beispiel einer Altersfreigabe sperrt, oder zulässt.
Der Filter wurde in Java, als Android VpnService, programmiert und verwendet Pcap4J (https://github.com/kaitoy/pcap4j) um die ip/udp Pakete zu bearbeiten.
Entwicklung eins Android VPN Client, der alle ausgehenden IP Pakete auf dem Android Device prüft und ggf. verarbeitet.
Dieser Filter erweitert die DNS Pakete um OX Protect spezifische Parameter, damit ein DNS Server diese erkennen kann und abhängig von zum Beispiel einer Altersfreigabe sperrt, oder zulässt.
Entwicklung eines Clients für Chat over IMAP (COI). Es wurden der Kurento Mediaserver und Coturn für STUN/TURN verwendet, weil diese frei, gut dokumentiert sind und von einer Community unterstützt werden.
Der Client wurde mit Node.js realisiert und unterstütz Video chats mit mehreren Teilnehmern, die sich entweder über einen Link, z.B. in einer Email authentifizieren können, oder die Berechtigung für den Call durch einen Benutzer mit Passwort nachweisen.
Um nach dem Empfang von Emails prüfen zu können, ob diese unverändert ist, wird beim Versand der Email ein Hash der Email in der Blockchain (Ethereum) gespeichert.
Dieser Hash kann dann vom Empfänger der Email aus der Blockchain gelesen werden und die Authentizität der Email bestätigen.
Dazu habe ich einen Smart Contract für die Ethereum Blockchain programmiert, mit dem der Absender einen Hash der Email in der Blockchain speichern und diesen einer ID (Mail-ID) zuordnen und einen Smart Contract, mit dem man den Hash zu einer ID lesen kann.
Der Empfänger kann so den Hash zu der empfangenen Mail-ID aus der Blockchain lesen und mit einem selber berechneten Hash vergleichen.
Stimmen beide Werte überein, wurde die Email und evtl. vorhandene Dateianhänge nach dem Emailversand nicht mehr geändert.
Für Thunderbird habe ich mit JavaScript ein Add-On programmiert, mit dem man ausgehende E-Mails markieren kann, damit diese vom SMTP Server in der Blockchain gespeichert werden und ein Add-On, mit dem die Email überprüft werden kann.
Für den Postfix Server habe ich einen Filter in Java programmiert, der die Email parsed und abhängig davon, ob ein bestimmter Email-Header existiert, den Hash der Email in der Blockchain speichert.
Ausarbeitung und Implementierung einer Architektur für sichere Email für die Initiative TrustedEmailServices (https://tesmail.org/).
Es wurde eine Architektur entwickelt und umgesetzt, mit der ähnlich zu email-made-in-germany, die Mailserver der Teilnehmer garantiert verschlüsselt kommunizieren.
Zusätzlich kann ausgehende Mail, wenn der Absender es wünscht, vom Mailserver mit pgp, oder aes verschlüsselt werden.
Die wurden so konfiguriert, dass sie mindestens TLS 1.2 mit PFS und DANE/DNSSEC unterstützen.
Ich habe einen Service für postfix programmiert, der die Mails verschlüsselt und pgp keys erstellt und im sks Server speichert.
Zusätzlich habe ich einen Service für postfix programmiert, der prüft, ob die Transportverschlüsselung den Vorgaben entspricht und wenn nicht, die Mail mit einer Meldung an den Absender zurückschickt.
Das projekt findet in einem internationalen Umfeld statt (unter Anderem: USA, Finnland, Niederlande, England) und es wird deswegen überwiegend in Englisch kommuniziert.
https://patents.google.com/patent/WO2018203223A1/en
Gegenwärtig wird Werbung von Webservern in zum Beispiel Webseiten, oder Chat-Räumen eingebaut unabhängig davon, ob der Benutzer die Werbung wünscht, oder nicht.
Es ist keine Möglichkeit bekannt, mit der ein Benutzer diese Werbung global verhindern kann, außer er verwendet einen Werbeblocker.
Wir haben eine Methode entwickelt, mit der ein Benutzer bei seinem Internetprovider global konfigurieren kann, welche Werbung er angezeigt bekommen möchte, oder ob keine Werbung angezeigt werden soll.
Dabei überprüft der Inhalteanbieter, welcher ISP für eine IP Adresse registriert ist und ob mit diesem ein Vertragsverhältnis besteht. Abhängig von dem Status den der ISP für diese IP-Adresse liefert, wird Werbung in einer Webseite angezeigt, oder nicht.
Entwicklung eines Programms mit dem Werbung für einen definierten Zeitraum in einem IMAP Ordner angezeigt werden kann.
Für den Prototypen habe ich die E-Mail direkt in die Dovecot Mailbox eingefügt und nicht als virtuelles IMAP Objekt im Dovecot erstellt.
Ich habe eine Benutzeroberfläche mit Spring Boot und HTML programmiert, in der die aktuell laufenden Kampagnen angezeigt und bearbeitet werden können. Diese Seite habe ich dann in die Open Xchange AppSuite als zusätzlichen Tab integriert. Die Daten der Werbekampagnen wurden in einer MongoDB Datenbank gespeichert.
Für dem Dovecot Server habe ich einen Hintergrundprozess geschrieben, der die Werbekampagnen in der Datenbank überwacht und, abhängig vom Status der Kampagne, E-Mails in der Inbox der Dovecot Benutzer anlegt, oder löscht.
https://www.bsi.bund.de/DE/Publikationen/TechnischeRichtlinien/tr03108/index_htm.html
Mitarbeit als Vertreter für Open-Xchange bei der Ausarbeitung der technischen Richtlinie "Sicherer E-Mail-Transport".
Die Technische Richtlinie "Sicherer E-Mail-Transport" (BSI TR-03108) definiert konkrete Anforderungen an einen E-Mail-Diensteanbieter (EMDA). Ziel der Technischen Richtlinie (TR) ist die Erhöhung der Vergleichbarkeit und Verbreitung sicherer E-Mail-Kommunikation.
https://patents.google.com/patent/US9531785B1/en
Gegenwärtig sammeln IMAP-Server eine Liste von E-Mails für eine bestimmte Benutzer-ID und einen bestimmten IMAP-Ordner, abhängig von den E-Mails, die der Benutzer über das Simple Mail Transfer Protocoll (SMTP)/Local Mail Transfer Protocoll (LMTP) erhalten hat. Es ist kein anderer Mechanismus bekannt, um zusätzliche Informationen in die E-Mail-Liste einzufügen, als die zusätzlichen Informationen als E-Mail an den IMAP-Server zu senden.
Daher müssen Werbe- oder andere Informations-E-Mails, wie z.B. Warnmeldungen, als E-Mails an eine Liste namentlich genannter Empfänger versandt werden und können von Spam-Filtern leicht identifiziert und entfernt werden, und Lese-/Löschvorgänge sind für die Protokollierung nicht leicht zu erkennen.
Wir haben eine Methode entwickelt, mit der IMAP Objekte direkt in der Inbox, oder einem beliebigen anderen IMAP Ordner eines Benutzers eingefügt werden können. Diese IMAP Objekte werden nicht über SMTP versendet, können aber von jedem IMAP Client (z.B. Thunderbird) angezeigt werden und sich wie normale E-Mails anfühlen und Werbung, oder andere Informationen enthalten.
03/2014 - 12/2014
DVAG / Frankfurt a.M.
Entwicklung eines Webservices für die Erstellung von Berichten im Intranet.
Es werden aus verschiedenen Mongo-Datenbanken mit über 2.5 Millionen Dokumenten, Einträge selektiert und als JSON durch einen RestFull Service an das Frontend weitergegeben.
Die Datenbanken werden über JPA in die Anwendung eingebunden. Der Service ist mit Spring-Boot realisiert und verwendet Memchached für das Cachen der Anfragen.
Das Mapping der Url's und Parameter erfolgt über Spring-Annotations.
Aufgabe im Projekt
Planung und Umsetzung der Services
Eingesetzte Technologien und Plattform
Java, J2EE, Spring, MongoDB, Memcached, Eclipse, JSON
01/2014 - 05/2014
DVAG / Frankfurt a.M.
Planung und Entwicklung einer Software für die Anmeldung zu einer Schiffsreise.
2500 mögliche Gewinner eines Wettbewerbes können sich online für eine Schiffsreise registrieren und Daten über sich und ihren Lebenspartnern abgeben.
Das Formular ist bis zu einem Stichtag bearbeitbar und wird danach nur noch lesend geöffnet.
Basierend auf diesen Daten können dann in einem zweiten Schritt die tatsächlich ermittelten Gewinner online eine verbindliche Anmeldung abgeben.
Beim speichern der Anmeldung wird automatisch eine Mail mit den Anmeldedaten an den Gewinner versendet.
Die liste der Teilnehmer wurden aus der zentralen DB2 mit ODBC importiert und die Anmeldungen anschließend wieder in die DB2 exportiert.
Aufgabe im Projekt
Planung und Programmierung der Anwendung
Eingesetzte Technologien und Plattform
LotusScript, HTML, CSS, JQuery, Lotus Notes, ODBC
08/2013 - 10/2013
DVAG / Frankfurt a.M.
Entwicklung einer Anwendung um eine digitale Visitenkarte in einen Film zu rendern.
Ziel der Anwendung ist es, eine digitale Visitenkarte mit verschiedenen Effekten in einen Film einzubauen.
Es werden für 30.000 Vermögensberater jeweils 310 Einzelbilder personalisiert und in einen Film eingebaut.
Aufgabe im Projekt
Planung und Programmierung der Anwendung
Eingesetzte Technologien und Plattform
Java, Eclipse
01/2013 - 08/2013
DVAG / Frankfurt a.M.
Entwicklung eines Webeditors für ein CMS.
Für eine Neuentwicklung im Intranet wurde ein Webeditor an eine LotusNotes Datenbank angebunden.
Es ist möglich, während der Bearbeitung von Inhalten, Bilder, oder andere Dateien auf den Server hochzuladen und direkt in der Seite zu verwenden.
Beim Speichern werden zusätzliche Meta-Daten abgefragt, die zusammen mit dem Inhalt in einer LotusNotes Datenbank gespeichert werden.
Die Eingabe des Inhaltes wurde mit CKEditor realisiert. Der Inhalt wird mit AJAX als Stream und die Metadaten mit AJAX als JSON an den Server gesendet. Dabei kommen sowohl Servlets unter Lotus Domino als auch LotusNotes Agenten in der Datenbank zum Einsatz.
Aufgabe im Projekt
Planung und Programmierung der Anwendung
Eingesetzte Technologien und Plattform
Lotus Notes/Domino, Java2EE, AJAX, JSON, Eclipse, CKEditor 4.1.2
01/2012 - 06/2012
DVAG / Frankfurt a.M.
Entwicklung einer Anwendung um digitale Portraits in einen Film zu rendern.
Ziel der Anwendung ist es, in einem Film mit dem Foto eines Direktionsleiters zu personalisieren.
Das Programm erkennt in den Einzelbildern aus einer bewegten Filmsequenz einen grün markierten Bereich.
Es transformiert ein Bild mit dem Foto des Direktionsleiters so, dass dieses dem grünen Bereich entspricht.
Anschließend wird der grüne Bereich durch das Foto ersetzt und das Einzelbild gespeichert.
Aus den Einzelbildern wird mit FFmpeg wieder eine Filmsequenz erstellt.
Aufgabe im Projekt
Planung und Programmierung der Anwendung
Eingesetzte Technologien und Plattform
Eclipse C++, OpenCV, Linux
01/2012 - 06/1012
DVAG / Frankfurt a.M..
Neuentwicklung eines Webcrawlers für das Intranet.
Die Anwendung soll das gesamte lokale Intranet für die Volltextsuche indizieren und den Textanteil, Navigationsinformationen und Zugriffsbeschränkungen von Officedokumenten, PDF's und HTML-Seiten erfassen.
Zusätzlich werden für jede Seite die Zugriffsberechtigungen und Position in der Navigationsstruktur erfasst und gespeichert.
Das Programm läuft als Hintergrundprozess unter Linux und kann über eine Telnetkonsole gesteuert werden.
Es werden mehrere Threads parallel gestartet, die jeweils einen konfigurierbaren Teilbaum der Navigation verarbeiten.
Die Seiten werden über HTTPS vom Server abgerufen und für die Authentifizierung jeweils ein COOKIE in den Request eingefügt.
Es werden alle Dateianhänge mir regulären Ausdrücken ermittelt und gespeichert.
Die Textanteile der Officedokumente werden mit Apache-POI, die der PDF?s mit PdfBox und die Textanteile der HTML-Seiten mit regulären Ausdrücken extrahiert und zusammen mit den Zugriffsrechten und der Position in der Navigation in eine Datenbank gespeichert.
Die Anwendung kann über eine Telnetkonsole überwacht und beendet werden.
Aufgabe im Projekt
Analyse, Design und Implementierung des Systems
Eingesetzte Technologien
Java2EE, Apache POI, PdfBox, Java-Sockets, DerbyDB
01/2011 - 10/2011
Entwicklung einer Software für die VFR Flugvorbereitung und Navigation.
Ziel der Anwendung ist die Flugplanung am PC zu ermöglichen und anschließend auf einem Android Gerät die Daten für die Flugdurchführung anzuzeigen.
Die Flugplanung wird am PC mit einer Internetseite und HTML5/JavaScript umgesetzt und läuft unter Firefox ab Version 11.0.
Es können Flugplätze aus einer Liste, oder beliebige Punkte auf der Karte für den Streckenverlauf ausgewählt werden.
Diese Wegpunkte werden personalisiert im Intranet gespeichert und sowohl am PC, als auch auf einem Android Gerät ab Version 1.6 geladen und Visualisiert.
Es werden die Entfernung und Richtung für jeden Abschnitt der Planung berechnet und als Liste angezeigt.
Zusätzlich werden die Daten auf der Luftfahrkarte als Striche und die Position und Richtung als Symbol angezeigt.
Aufgabe im Projekt
Planung und Umsetzung der Anwendung
Eingesetzte Technologien
HTML5, Java2EE, Android SDK, JSON, JavaScript
06/2010 - 12/2010
DVAG / Frankfurt a.M..
Planung und Entwicklung einer Facebook Applikation um RSS Feeds selektiv in ein Feed einer Facebook-Page zu posten
Ziel der Anwendung ist es beliebige Beiträge aus einem WordPress Blog, die als RSS Feed gelesen werden, unter der ID eines Vermögensberaters in das Feed seiner Facebook-Page zu posten.
Dazu wurde eine Facebook Applikation entwickelt die RSS Feeds auslesen und über die Graph-Api und die Old-REST Api nach Facebook posten kann.
Die Beiträge werden im Namen des Facebook-Users gepostet und können auch wieder aus dem Feed gelöscht werden.
Um die notwendigen Berechtigungen vom Facebook-User für die Applikation zu erhalten wurde eine Webanwendung programmiert die über AJAX mit Facebook kommuniziert und gleichzeitig dem User eine Feedback über die stattfindende Operation gibt.
Wenn der User die Genehmigungen bei Facebook erteilt hat werden die Zugriffstoken und die Facebook-Id des Users in einer Datenbank gespeichert.
Aufgaben im Projekt
Planung und Umsetzung der Anwendung
Eingesetzte Technologien
AJAX, JSP, Facebook graph.api, REST
01/2010 - heute
DVAG / Frankfurt a.M.
Weiterentwicklung eines Crawlers für die Volltextsuche - 2
Um Dateianhänge indizieren zu können wurde eine Anwendung entwickelt welche die Inhalte von Office- und PDF-Dateien als Text zur Verfügung stellt und an den Indexer übergibt.
Als Eingabeformat werden Microsoft Word, Microsoft PowerPoint und PDF unterstützt.
Die Metadaten zu den Dateien werden als Liste aus einer Textdatei gelesen und sequenziell verarbeitet.
Jede Datei wird zunächst vom Webserver abgerufen und die Informationen aus dem HTTP-Header verarbeitet.
Dann wird die Datei für die weitere Verarbeitung im Filesystem gespeichert.
Nachdem das Format der Datei analysiert wurde, wird diese über die POI-Api eingelesen und der Textanteil des Inhaltes zusammen mit den Metadaten aus der Liste in eine neue Textdatei geschrieben.
Aufgaben im Projekt
Entwicklung der Anwendung
Eingesetzte Technologien
Java, Apache POI, wget, curl
01/2009 - 01/2010
DVAG / Frankfurt a.M.
Entwicklung einer Webanwendung für die Erstellung von PowerPoint Präsentationen
Die Marketingabteilung stellt den Vermögensberatern PowerPoint Präsentationen zur Verfügung aus denen diese einzelne Slides auswählen und zu einer neuen Präsentation zusammenstellen können.
Es wurde eine Anwendung entwickelt, die eine vom DMS übergebene Datei in ein Redaktionssystem aufnimmt, und den Vermögensberatern im Intranet zur Verfügung stellt.
Die Anwendung zerlegt zunächst die Präsentation mit der Tonic Library in einzelne Dateien pro Slide und erstellt pro Slide ein Bild für die Vorschau im Web.
Der Redakteur kann eine Präsentation jeweils freigeben, sperren, oder eine ältere Version freigeben.
Danach hat der Vermögensberater die Möglichkeit sich im Webbrowser aus einer Liste aller Präsentationen jeweils eine auszuwählen und aus dieser dann einzelne Slides zu wählen.
Die gewählten Slides werden dann zu seiner Auswahl hinzugefügt.
Die Reihenfolge der Slides kann jederzeit geändert werden und es können auch einzelne Slides aus der Auswahl wieder gelöscht werden.
Hat der Vermögensberater alle gewünschten Slides aus den Präsentationen ausgewählt, wird eine neue Präsentation mit diesen Slides erstellt und zum Download angeboten.
Die Anwendung wurde überwiegend mit JSP?s und Servlets unter Apache Tomcat realisiert.
Aufgaben im Projekt
Entwicklung und Umsetzung des Redaktionssystems
Entwicklung und Umsetzung der Web-Oberfläche
Planung und Umsetzung der Schnittstelle zu FileNet
Eingesetzte Technologien
Eclipse, JSP, Java, JavaScript, HTML, CSS, Tonicsystem PPT Library, FileNet DMS
01/2009 - 01/2010
DVAG / Frankfurt a.M.
Planung und Entwicklung eines Content Management Systems mit firstSpirit 4.1.
Realisiert wurde ein Redaktionssystem mit dem Direktionen ihren Mitarbeitern Vertriebsinformationen zur Verfügung stellen können.
Für das Redaktionssystem wurden sowohl Webmodule, als auch serverweite Module erstellt.
Die Ausgabe wurden überwiegend als JSP generiert.
Aufgaben im Projekt
Entwicklung von Designtemplates und Modulen für das Redaktionssystem
Eingesetzte Technologien
firstSpirit 4.1, firstSpirit Webmodule und Servermodule, JSP.
01/2007 ? 01/2009
DVAG / Frankfurt a.M.
Weiterentwicklung eines Crawlers für die Volltextsuche - 1
Für die Volltextsuche im VB-Intranet der DVAG gibt es einen in Perl geschriebenen Crawler, der von einer gegebenen URL aus Seiten von Webserver abruft und den Inhalt analysiert und als Text speichert, sowie die enthaltenen Links weiterverfolgt.
Die Seiten werden mit einem konfigurierbaren Benutzer abgerufen, da ein anonymer Zugriff auf das Intranet nicht möglich ist.
Dateien die in der Seite verlinkt sind werden in eine Liste aufgenommen um später gesondert indiziert zu werden.
Die Navigation für den Benutzer ist innerhalb der Seite als JavaScript realisiert und wird vom Crawler ausgewertet und für die Zuordnung des Dokumentes zu bestimmten Themen-/Produktbereichen gespeichert.
Um die Suche für einzelne Mandanten zu ermöglichen, musste die Anwendung umfangreich angepasst werden und der Vorhandene Code teilweise neu geschrieben werden.
Aufgaben im Projekt
Analyse des vorhandenen Codes
Erweiterung der Anwendung um Mandantenfähigkeit
Eingesetzte Technologien
Eclipse, Perl
01/2007 - heute
DVAG / Frankfurt a.M.
Weiterentwicklung eines Content Management Systems auf Basis Lotus Notes und Tomcat
Für das Personalisierte VB-Intranet werden Inhalte in Lotus Notes erstellt, oder bearbeitet.
Bei der Freigabe der Dokumente werden diese mittels Lotus DXL API im XML Format exportiert und durch einen JavaAgenten zu HTML weiterverarbeitet und anschließend wieder importiert.
Das daraus resultierende HTML wird mit Inhalten und Logik aus verschiedenen Vorsystemen von zwei Tomcatservern publiziert.
Aufgaben im Projekt
Fehlerbeseitigung in den vorhandenen Datenbanken
Neuentwicklung von Anwendungen unter Lotus Notes
Support der Hotline bei Anwendungsfehlern
Eingesetzte Technologien
Lotus Notes/Domino 7, J2EE, JSP, XML, ODBC, Eclipse, LotusScript, HTML, JavaScript.
09/2006 - 12/2006
BEDAG AG / Bern CH
Entwicklung von UI Komponenten und serverseitiger Logik für die Aufbereitung Erstellung von PDF-Dateien auf dem Host
Um Aufträge und Grundstücksprotokolle im Rahmen einer Anwendung der Finanzverwaltung Bern auszudrucken, habe ich Dialoge und Eingabemasken mit ULC, (Ultra Light Client, ein auf Java Swing basierendes Framework von Canoo) erstellt und die Verarbeitung der Aufträge auf dem Server programmiert.
Aus diesen Masken heraus wird die Aufbereitung von Druckdaten für die jeweiligen Dokumente auf dem Server angestoßen. Dazu werden die Druckdaten über Hibernate in eine DB/2 Datenbank auf dem Host übertragen und anschließend aus Java verschiedene in Cobol programmierte Stored Procedures auf dem Host aufgerufen.
Nach erfolgreicher Ausführung werden die PDF-Dateien wieder aus der Datenbank ausgelesen und an den Client geschickt, der diese dann anzeigt.
Die Anwendung wurde mit Eclipse entwickelt, dazu gehörte auch die Entwicklung von JUnit-Tests.
Das Deployment auf den JBoss Server und die Ausführung der JUnit -Tests wird durch ein ANT-Script gesteuert.
Aufgaben im Projekt
Entwicklung einer Schnittstelle zum Aufruf der Cobol Stored Procedures aus Java
Entwicklung von Dialogen und Eingabemasken mit ULC
Eingesetzte Technologien
Canoo, J2EE, Hibernate, JBoss, Eclipse, JUnit, ANT, ULC, Swing, DB/2, MS-SQL, CICS, Stored Procedures.
01/2005 bis 06/2006
Activest GmbH, Unterföhring
Risiko- und Performancekennzahlen im ETL-Prozess eines Data Warehouse
Es werden alle Kennzahlen (z.B. Sharpe Ratio, Volatilität, Korrelation, BVI-Performance, Benchmark-Performance) basierend auf der historischen Wertentwicklung Initial beim Ladelauf berechnet und in der Datenbank gespeichert. Anschließend werden jeweils täglich nur noch die Werte für den Bewertungszeitraum (in der Regel ein Tag, oder ein Wochenende) hinzugefügt.
Die Performance der Berechnung (es werden Daten für ca. 1500 Anteile und einen Zeitraum von ca. 20 Jahren berechnet) und die Genauigkeit der Berechnungsergebnisse sind wichtige Qualitätskriterien.
Die Daten werden anschließend z.B. für Monatsberichte, welche mit Actuate erstellt werden, verwendet.
Aufgaben im Projekt
Entwicklung des Moduls zur Berechnung von Risikokennzahlen und Kennzahlen zur Performanceentwicklung
Programmierung von Stored Procedures in PL/SQL und Java
Implementierung der Berechnung finanzmathematischer Größen und Kennzahlen
Eingesetzte Technologien
Oracle Stored Procedures in Java und PL/SQL, Eclipse, XML, Informatica
08/2004 bis 12/2004
Fiducia AG, München
Content Management-System mit Lotus Domino-Anbindung
Inhalte werden über die Lotus Domino Java-API aus den Notes-Datenbanken gelesen und in XML umgewandelt. Nach dem Bearbeiten und Umwandeln in HTML mit XSLT werden die Inhalte wieder in Notes-Datenbanken gespeichert.
Aufgaben im Projekt
Entwicklung eines Web Client unter WebSphere Application Studio 5.1
Eingesetzte Technologien
XML, Websphere, J2EE, Corba, JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache
03/2004 bis 08/2004
Gallinger Consulting, Mannheim
Lotus Notes-Applikation für die Angebotsverwaltung
Die Anwendung dient der Planung / Steuerung der Angebotserstellung.
Es werden Exceldateien von Lotus Domino Server erstellt und über Active-X mit berechneten Vorgabedaten gefüllt an den Webbrowser gesendet. Nach dem Ausfüllten der Exceldateien werden diese wiederum mit dem Webbrowser an den Server gesendet und von diesem online über OLE in Lotus Notes Dokumente umgewandelt.
Für die Weiterleitung der Dokumente kommt ein Workflow zum Einsatz der festlegt, wer welche Dokumente bearbeiten / weiterleiten darf.
Aufgaben im Projekt
Analyse, Design und Implementierung des Systems
Eingesetzte Technologien
Active-X, OLE, JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache
06/2003 bis 02/2004
Chorus GmbH (MIS Group), München
Integrierte Projektadministration für einen Automobilkonzern
Die Anwendung dient der Planung / Steuerung des Projektverlaufes bei der Entwicklung von neuen Automobilmodellen. Für die Realisierung wurde Oracle mit Tomcat als Webserver gewählt.
Entwickelt wurde mit dem Chorus-eigenen Framework eChora.
Für den Transport der Daten werden diese nach XML und wieder zurück konvertiert.
Auch wird das System über XML-Dateien konfiguriert.
Aufgaben im Projekt
Entwicklung verschiedener Systemkomponenten
Eingesetzte Technologien
Java, J2EE, Servlets, JDBC, JavaScript, CSS, D-HTML, XML
05/2003 bis 03/2004
Chorus GmbH (MIS Group), München
Lotus Notes-Anwendung für das Tracking von Fehlern und Anforderungen
Die Anwendung kann komplett über einen Webbrowser oder Lotus Notes bedient werden.
Die Fehler bzw. Anforderungen durchlaufen dabei jeweils einen Workflow bis zur Genehmigung oder Realisierung. Der Zugriff erfolgt sowohl intern über Lotus Notes Clients als auch vom
Kunden über das Internet.
Aufgaben im Projekt
Analyse, Design und Implementierung des Systems
Eingesetzte Technologien
JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache, Lotus Domino
01/2000 bis 04/2003
Deutsche Bank, Bereich Private Banking, Frankfurt
Informationsportal für das weltweite Intranet des Private Banking
Als Applikationsserver wurde Lotus Domino eingesetzt und als Dokumentenmanagement-System und für den Workflow Lotus Domino.Doc. Die Anwendung wurde im Wesentlichen mit Servlets realisiert, welche über JDBC/SQL auf die DB/2 und über die Lotus-eigene API auf Lotus Notes zugegriffen haben.
Zusätzlich wurden die IBM Translation Services für Websphere, Lotus Sametime und Lotus Quickplace eingebunden.
Wesentliche Funktionalitäten des Portals:
Es werden für ca. 10.000 Benutzer jeweils ein persönliches Profil verwaltet und davon abhängig Informationen aus dem Dokumentenmanagement-System angezeigt.
Officedokumente werden auf Wunsch beim Speichern auf dem Server direkt in PDF umgewandelt.
Die Daten werden für Fremdsysteme im XML-Format zur Verfügung gestellt.
Für die verschiedenen internationalen Regionen wird das Portal jeweils in der Landessprache oder in Englisch angezeigt.
Die Dokumente durchlaufen von der Erstellung durch ein Redaktionsteam über die Kontrolle auf Inhalt und Form bis zur Freigabe einen entsprechenden Workflow.
Aufgaben im Projekt
Verantwortlicher Systemarchitekt
Analyse, Design und Implementierung verschiedener Komponenten
Entwicklung eines Windows NT-Systemdienstes zur Kapselung der IBM Translation Services für Websphere
Eingesetzte Technologien
C++, Java, J2EE, JDBC, JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache,
DB2/UDB, XML, Lotus Domino, ArgoUML, OLE, ActiveX, Corba
IBM AIX, Windows 2000 Server
02/1999 - 05/1999
UNION Investment / Frankfurt.
Verantwortlich für die Entwicklung.
Erstellung eines Systems zur Erfassung von Wettbewerberkennzahlen unter Lotus Notes.
Es wurden die Kennzahlen über das Intranet eingegeben.
Für die Auswertung konnten im Browser Kriterien selektiert werden und das Ergebnis
als Datei für die Bearbeitung in einer Tabellenkalkulation sofort abgerufen werden.
Kenntnisse: OLE, JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache, Lotus Domino.
01/1998 - 12/1999
Deutsche Telekom - Messesupport / Hannover.
Verantwortlicher Systemarchitekt.
Weiterentwicklung einer Ressourcenplanung für Messen auf Basis Lotus Notes.
Es wurde Standpersonal genauso wie Netzwerkanschlüsse, oder Hotelbetten über
das Intranet oder Lotus Notes gebucht. Die Messeplanung konnte jederzeit die
Einsatztage zentral koordinieren und über das Intranet alle für die Messeplanung
relevanten Daten abrufen, oder bearbeiten.
Kenntnisse: JavaScript, CSS, D-HTML, LotusScript, Lotus Formelsprache, Lotus Domino.
05/1998 - 05/1999
MIS AG - Darmstadt.
Verantwortlich für die Planung und Realisierung.
Entwicklung eines internen Informationssystems für das Intra-/Internet auf
Basis von Lotus Notes.
Kenntnisse: JavaScript, D-HTML, LotusScript, Lotus Domino.
1997
Whats up AG - München.
Leitung der Entwicklung.
Erstellung einer Anwendung für den Endkunden zur einfachen Konfiguration von
Internetsites auf Basis Lotus Notes. Es wurden sowohl Animierte Grafiken als
auch JavaScript unterstützt. Dem Benutzer sollte ohne Kenntnisse von HTML, etc.
die Möglichkeit gegeben werden einen Ansprechenden Internetauftritt zu gestalten.
Kenntnisse: JavaScript, D-HTML, LotusScript, Lotus Domino.
1997
Böhringer Penzberg.
Verantwortlich für die Planung und Realisierung.
Erstellung eines Workflows für die Erteilung von Zugriffsberechtigungsanträgen
über 5 Stellen.
Es sollten Anträge über das Intranet gestellt werden können, der Status wurde
überwacht und ggf. per Email benachrichtigt.
Realisiert unter Lotus Notes.
Kenntnisse: JavaScript, D-HTML, LotusScript, Lotus Domino.
1996
BMW - München
Leitung der Entwicklung.
Erstellung einer Raumreservierung mit variabler Verpflegungsbestellung für das
Intranet.
Die Anwendung wurde unter Verwendung von HTML / JavaScript komplett in Lotus Notes
realisiert.
1996
Siemens Werke - Augsburg
Verantwortlich für die Planung und Realisierung.
Entwicklung eines Intranetwarenkorbes.
Unter Vorgabe das Look & Feel der Lotus Notes Anwendung auch im Intranet beizubehalten, sollte die Funktionalität auch im Web verfügbar sein.
Die Anwendung wurde als reine Lotus Notes Applikation realisiert.
Direktester geht's nicht! Ganz einfach Freelancer finden und direkt Kontakt aufnehmen.
"Der Entwickler konnte sich durch sein sehr gutes technisches Know-how und seine hervorragende Auffassungsgabe sehr schnell in unser Framework einfinden und somit ohne lange Einarbeitung wertvolle Beiträge liefern. Die Aufgaben wurden schnell, kompetent und zuverlässig umgesetzt. Der Entwickler hat sich gut in unser Team eingefügt und mit seinen pragmatischen und kreativen Lösungen zum Erfolg des Projektteams beigetragen. Wir sind sehr zufrieden mit der Zusammenarbeit und möchten den Entwickler hiermit anderen Projektanbietern weiterempfehlen."
— Projekt Anlaufportal im Automotivebereich (java-basiert), 06/03 - 02/04
Referenz durch Projektleiter, chorus GmbH, vom 18.05.04
"Der Consultant ist in unserem globalen Intranet Projekt 'PB City' als Chefprogrammierer tätig und verantwortet die Programmierung der globalen personalisierten Portal-Architektur und 12 regionaler Homepages. Die Anwendung liefert Informationen an ca. 10.000 Mitarbeiter in über 400 Lokationen. Technische Felder: JAVA/HTML Entwicklung, DB2 Datenbanken auf AIX, Notes/Domino Entwicklung, Domino.Doc. Wir möchten mit dieser Referenz unsere große Zufriedenheit, insbesondere hinsichtlich folgender Punkte zum Ausdruck bringen:
- effiziente und schnelle Entwicklung
- kreative Lösung komplexer Sachverhalte
- hohe geistige Flexibilität
- qualitativ hochwertige Ergebnisse
Seine Persönlichkeit und sein Auftreten im Projekt geben keinerlei Anlass zur Kritik. Gerne gebe ich auch telefonisch zu einzelnen Punkten Auskunft."— Projekt Global Private Banking Portal / PB City, 2000 - 2003
Referenz durch Projektleiter, Leiter Intranet Deutsche Bank Private Banking, vom 11.11.02
"The consultant worked from summer 2000 till December 2002 within the project. He was a key member of the staff. His tasks were the design of the architecture based on domino and domino.doc, the Java programming of the portal and the personalization based on DB2. He was inventive, hard working and did a great deal especially during the project phases of deadline pressure. We appreciate his expertise and would enjoy cooperating with him again anytime."
— Project Setting up an intranet portal, Summer 2000 - 12/02
Reference by Project Manager financial institution (40.000 employees) of 2003-01-06