Curriculum Vitae INHALTSVERZEICHNIS______________________________________________________________ ANGESTREBTE POSITION PERSÖNLICHE DATEN KOMPETENZEN PORTFOLIO FALLSTUDIE »RESTful OCR-Cluster« FALLSTUDIE »Infrastructure Engineering« FALLSTUDIE »Buildmanager« FALLSTUDIE »FLAKA« FALLSTUDIE »Darwin« FALLSTUDIE »pyANTLR« FALLSTUDIE »Software Analyst« FALLSTUDIE »ASN2XXX« TECHNOLOGIEN WERKZEUGE AUSBILDUNG SPRACHEN ANGESTREBTE POSITION____________________________________________________________ Interessante, herausfordernde Tätigkeit in der Architektur und/oder Entwicklung von Softwaresystemen an europäischen Standorten (Deutschland, Schweiz, Österreich, Benelux, Skandinavien, Großbritannien) PERSÖNLICHE DATEN_______________________________________________________________ Name, Vorname | Häfelinger, Wolfgang Anschrift | Slangenburg 42, 1082JW Amsterdam, NL Nationalität | Deutscher Geburtsjahr | 1964 Ausbildung | Dipl. Informatiker | Telefon | +31 648 27 61 59 Email | wh@haefelinger.it Internet | http://www.haefelinger.it Weblog | http://workbench.haefelinger.it KOMPETENZEN_____________________________________________________________________ Themen | Software-Architektur, Java EE/J2EE, Buildmanagement, IT Security, Compilerbau, Telekommunikation. Arbeitsweise | Selbständig, Teamorientiert, Belastbar, Flexibel, Lösungsorientiert. PORTFOLIO_______________________________________________________________________ 2011 | Europäisches Patentamt 2010 | T-Systems MMS GmbH 2009 | häfelinger IT 2005-2009 | Europäisches Patentamt 2001-2005 | Borland 2000-2001 | Dresdner Bank 2000 | Karis AG 1999 | IBM 1998 | Robert Bosch GmbH 1994-2000 | Computec GmbH Software FALLSTUDIE »RESTful OCR-Cluster«________________________________________________ Den Haag (NL), 2011-? - Freiberufliche Tätigkeit ([1]) als Software Architekt am Europäischen Patentamt. Design, Implementierung und Inbetriebnahme eines OCR ([2]) Clusters. In den einzelnen Knoten des Clusters wird kommerzielle Software zur Texterkennung eingesetzt, die jedoch nur eine synchrone Webservice-Schnittstelle anbietet. Das Cluster soll stattdessen über eine asynchrone Schnittstelle betrieben werden, die zudem die Architektur des Webs voll nutzt (REST). Technologien____________________________________________________________________ MOM(noch offen), Java EE (Jboss), Buildwerkzeuge (Ant, Maven), SCM (Subversion), Projektmanagement (Jira), Wiki (Confluence), OS (Windows XP, Windows 7, GNU/Linux SLES, MacOS X), Virtualisierung (VMWare), IDE(Eclipse), Sonstiges (Java, Groovy, XSLT/XPATH, REST, JSON). FALLSTUDIE »Infrastructure Engineering«_________________________________________ Den Haag (NL), 2010-2011 - Freiberufliche Tätigkeit als Software Architekt im Application Engineering Umfeld am Europäisches Patentamt. Umstellung der bisherigen, teilweise veralteten, teilweise proprietären Infrastruktur zur agilen Softwareentwicklung auf gängige Komponenten (Subversion, Maven, Jenkins/Hudson, Nexus Pro, SonarJ, Fisheye und Crucible). Design, Dokumentation, Präsentation und Implementierung des neuen Release-Prozesses. Planung der stufenweisen Stilllegung des bis dato aktuellen Infrastruktur. Technologien____________________________________________________________________ Buildwerkzeuge (Maven), Buildserver (Jenkins/Hudson), Artefact Repositories (Nexus Pro), SCM (Subversion), Projektmanagement (Jira), Wiki (Confluence), OS (Windows XP, GNU/Linux SLES, MacOS X), Virtualisierung (VMWare), IDE(Eclipse), Sonstiges (Java, Groovy, Ruby, GNU/Emacs, XSLT/XPATH, REST). FALLSTUDIE »Buildmanager«_______________________________________________________ Jena (DE), 2010 - Freiberufliche Tätigkeit als Build- und Deploymanager im J2EE Umfeld bei der T-Systems Multimedia Solutions GmbH (MMS). Die MMS erstellt am Standort Jena vorwiegend webbasierte Shopsysteme für Großkunden, Mittelstand und internen Gebrauch her. Die auf den Kunden zugeschnittenen Lösungen basieren auf IBM Websphere Commerce, einer J2EE Plattform für B2B und B2C-Geschäftsmodelle. Das Build- und Deployment Team ist verantwortlich für die Bereitstellung und Konfiguration der Test/Staging-Instanzen, der Buildumgebung, dem täglichen Bau und Deployment der Shopapplikationen sowie dem Einspielen und der Wartung von Datensätzen. Schwerpunkt meiner Arbeit war, neben den Aufgaben des Tagesgeschäfts, die Überarbeitung bestehender Prozesse mit dem Ziel, diese zu automatisieren. Technologien____________________________________________________________________ Buildwerkzeuge (Ant, Maven), Buildserver (Hudson, Anthill), Artefact Repositories (Artefactory, Nexus), SCM (Subversion, git), Projektmanagement (trac), Windows (XP, 7), Linux (SLES, Opensuse), Virtualisierung (VMWare), IBM Websphere (v6, v7), IBM Websphere Commerce (v6, v7), IBM DB2 (v8, v9), IDE(RAD), IBM Scripting Console (wsadmin), Sonstiges (J2EE, ssh, emacs, vi, cygwin, Jython, jacl,Tanuki Wrapper, XSLT/XPATH). FALLSTUDIE »FLAKA«______________________________________________________________ Amsterdam (NL), 2009-2012 - Unentgeltlicher OpenSource Beitrag ([3]) zum Thema Software Entwicklung. Flaka ([4]) ist ein von mir initiiertes OpenSource Projekt, das das populäre Buildwerkzeug Ant erweitert. Durch Flaka werden programmiertypische Strukturen wie Verzweigungen, Schleifen und Ausnahmebehandunglung bereitgestellt. Ferner wird eine eingebettete Sprache, die Expression Language (EL), eingeführt, deren Wurzeln auf J2EE/JSP 2.0 zurückgehen. Durch die EL können beliebig komplexe Ausdrücke formuliert werden, ohne Gefahr zu laufen, die Wohlgeformtheit der XML Skripte zu verletzten. Außerdem erlaubt die EL auf Variablen und auf die Eigenschaften der interne Datenobjekte zuzugreifen. Durch diese Eigenschaften der EL wird der Grad der Ausdrucksfähigkeit wesentlich gesteigert. Mittlerweile wird Flaka in mehreren Projekten eingesetzt, unter anderem bei der HUK-Coburg. Technologien____________________________________________________________________ Java, Ant, Java Unified Expression Language, Eclipse, Subversion, Git, Junit, TeX/LaTeX, Docbook, asciidoc, dblatex. FALLSTUDIE »Darwin«_____________________________________________________________ Den Haag (NL), 2005-2009 - Freiberufliche Position als System Architekt und Softwareentwickler in der Abteilung Architektur und Forschung am Europäischen Patentamt. Die Verwendung der korrekten Version einer Komponente ist ein herausforderndes Problem in der Erzeugung komponentenbasierter Softwaresysteme. Eine veraltete Komponente wird typischerweise erst sehr spät, typischerweise beim funktionalen Testen des Gesamtsystems als solche bestätigt. Diesen Kosten- und Verzögerungsfaktor galt es zu eliminieren. Meine Aufgabe bestand in der Situationsanalyse sowie Konzeption und Bereitstellung einer Lösung für dieses Problem. Ich löste diese Aufgabe durch die Konzeption und Inbetriebnahme eines vollautomatischem, agilem Buildsystems, welches unter dem Namen “Darwin” bekannt wurde. Ein fundamentaler Designaspekt von Darwin war die Forderung, daß Entwickler sich nicht um die Version einer Komponente kümmern sondern nur um die Komponente als solche. Die gesamte Verwaltung der Versionen wurde daher komplett von Darwin übernommen. Um dies zu erreichen musste die OpenSource Software CruiseControl ([5]) wesentlich erweitert werden, wobei ein großer Teil der komplexen Versionsverwaltung in der Skriptsprache Python realisiert wurde. Ferner wurde ein auf Ant basierendes Framework entwickelt, welches letztendlich alle Buildskripte auf die Beschreibung versionsloser Abhängigkeiten reduzierte. “Darwin” ist der de facto Standard zur Erzeugung komponentenbasierter Systeme am Europäischen Patentamt in Den Haag. Technologien____________________________________________________________________ Java, CruiseControl, Ant, CVS, Maven, Tomcat, XML, Linux, Windows, Eclipse, REST, Python, JSP, XSLT/XPATH, graphviz. FALLSTUDIE »pyANTLR«____________________________________________________________ Amsterdam (NL), 2004-2005 - Unentgeltlicher OpenSource Beitrag zum Thema Software Entwicklung. ANTLR ([6]) ist eine OpenSource Plattform für den Bau eines Compilers mit einer ausgezeichneten Unterstützung für die Konstruktion von Syntax-Bäumen, Manipulation und Traversierung. Obwohl ursprünglich für die Programmiersprache Java gedacht, kann ANTLR auf beliebige Zielsprachen erweitert werden. Diese Liste erweitertet ich um pyANTLR, mit der nun möglich ist, einen auf ANTLR basierenden Compiler in Python zu realisieren. Neben dem eigentlichen Code-Generator schrieb ich auch eine große Anzahl von Beispielen sowie die Core-Bibliothek, auf die der erzeugte Python Code aufbaut. pyANTLR ist seit der Version 2.7.5 integraler Bestandteil von ANTLR. Technologien____________________________________________________________________ Java, Python, Make, autoconf FALLSTUDIE »Software Analyst«___________________________________________________ Amsterdam (NL), 2001-2004 - Festanstellung als Software Analyst beim Softwareunternehmen Borland. Als Software Analyst verantwortlich die Betreuung von bekannten Unternehmen (u.A. Nokia, Ericsson, France Telecom, Deutsche Bank London, Euronext Amsterdam, Bundesagentur für Arbeit)im Bereich der Borland'schen Middleware Produkte (J2EE Application Server und Visibroker/CORBA für C++ und Java). Analyse und Testen von Problemen mit den Produkten vor Ort oder im EMEA Hauptquartier in Amsterdam. Pflege des Kontakts zu den Kunden sowie zu den Ingenieuren der Forschungs- und Entwicklungsabteilungen in Singapur und Kalifornien; Bereitstellung von Trainingsmaterial sowie Aufbereitung der Produktinformation für Kunden und Mitglieder des Teams. Eine beispielhafte Aufgabenstellung war ein Leistungsabfalls des, mit annähernd 90000 Benutzern, größten Visibroker-Clusters bei der Bundesagentur für Arbeit. Zur Nachstellung und Testen des Problems wurde vor Ort Silkperformer ([7]) ([8]) eingesetzt, welches die flexible Fernsteuerung beliebiger Maschinen nach vorgegebenen Schematas oder über eigene Skripte zulässt. Der Leistungsabfall konnte letztendlich von mir auf eine plattformspezifische Threadbibliothek zurückgeführt werden. Technologien____________________________________________________________________ AIX, Ant, Apache, Borland Enterprise Server, C++ Builder, CORBA, CORBA NamingService, CORBA Notification Service, CORBA POA, DB2, Dbx, EJB, Ethereal, GIOP, GNU/Linux, Gatekeeper, Gdb, HP-UX, HTTP, IIOP,JNDI,JNI,IIS,HTML, IPC, Informix, J2EE, JAAS, JCE, JDBC, JDK 1.3, JDK 1.4, JMS, JSP, Jakarta Struts, Jbuilder, LDAP, Make, Montavista Linux, OpenLDAP, OpenSSL, Oracle, Osagent, RMI, Mod_iiop, NAT, SPY6, SSL, Servlet, Shell Scripting, Silkperformer, Solaris, Squid, TCP/IP, Tcpdump, Telnet, Tomcat, UDP, UNIX, Visibroker for C++, Visibroker for Java, Windows, X.509, XML, Xdoclet FALLSTUDIE »ASN2XXX«____________________________________________________________ Karlsruhe (DE), 1994-2000 - Festanstellung als C/C++ Softwareentwickler und Produktmanager bei der Firma Computec GmbH Software. ACCENT (EP 9169 ([9])) war die Forschungsarbeit verschiedener europäischer Firmen und Organisationen und wurde von der Europäischen Gemeinschaft im Rahmen des ESPRIT Programms gefördert. Ziel war die Entwicklung einer hardwaregestützten Kodiereinheit als Implementierung des ISO-Standards X.209. Die Aufgabe der Firma Computec war die Bereitstellung einer Softwareschnittstelle und einer softwaregestützten Kodiereinheit. Erstere erlaubte den transparenten Austausch der Kodiereinheiten und Zweck der letzteren war die Abschätzung und Bewertung der Leistungsfähigkeit der hardwaregestüzten Kodiereinheit. Als Computecs Leiter des Projekts ACCENT übernahm ich das Design und die Entwicklung der Software Schnittstelle (ASN.1 Compiler) und der Kodiereinheit. Ferner repräsentierte ich Computec im ACCENT-Gremium und gegenüber der Europäischen Gemeinschaft. Es stellte sich heraus, dass die von mir realisierte Einheit extrem schnell war, auch und gerade im Vergleich zu anderen bekannten Lösungen wie etwa ISODE und somit letztendlich den Entwurf einer Hardwarezelle in Frage stellte. Konsequenterweise wurde die Hardwarezelle nie gebaut. Aufgrund des außerordentlichen technischen Erfolgs des ASN.1 Compilers und der Kodiereinheit beschloss Computec, diese Komponenten unter dem Namen ASN2CXX zu vermarkten. ASN2CXX wurde unter meiner Leitung zur Marktreife entwickelt und weltweit an bekannte Unternehmen wie Ericsson, Bell Atlantic, Marconi, Telefonica Spain, Storck (Niederlande) und Bosch Telecom Deutschland vertrieben. Technologien____________________________________________________________________ ASN.1, C++, Java, Windows, Solaris, Sniff, make, purify, gdb TECHNOLOGIEN____________________________________________________________________ Sprachen | AWK, Shell (Bash, Bourne), C#, C/C++, Lisp (SBCL), Java, Groovy, JavaScript, M4, PHP, Pascal, Perl, Prolog, Python, Ruby, Scheme (Guile, Racket), Tcl/TK, Haskell, ObjectiveC Markup | XML, (X)HTML, ASN.1, TeX/LaTeX, AsciiDoc, DocBook Minisprachen | SQL, Reguläre Ausdrücke, XPath, CSS Betriebssysteme | Cygwin, Unix (Digital, HP-UX, AIX, SGI, SunOS, Solaris), MKS, Windows (98, 2ooo, NT, XP), MS-DOS, MSYS, MacOS/X, Novell Netware, GNU/Linux (RedHat, Suse, Ubuntu, Mandrake, Montavista) Security | Kerberos, PKI, SSL/TLS Datenbanken | DB2, Informix, JDBC, MS Access, MySQL, ODBC, ObjectStore, Oracle, NoSQL (CouchDB, MongoDB) Kommunikation | ASN.1 (BER, CER, DER, PER, X.68x, X.69x.) CIFS, CORBA, CUPS, DNS, GIOP, HTTP, HTTPS, ICMP, IIOP, IMAP, JAAC, JCA, JNDI, LDAP, NAT, NFS, NIS, NTP, OSI, PEM, POP3, RMI, RPC, S/MIME, SMTP, TCP/IP, UDP, X.509, GDMO, XDR Webentwickung | CGI, J2EE, REST, Ajax, jQuery Java EE/ J2EE | Servlets, JSP, EJB, RMI, JINI, JNDI, JMS, Webservices Methoden | Extreme Programming, OOP, CI WERKZEUGE_______________________________________________________________________ IDEs | Eclipse, Visual Studio, JBuilder, Sniff, Sun Workshop, Symantec, Visual Age Editoren | Emacs, vi Versionsverwaltung | CVS, Subversion, git, mercurial, RCS, Perforce, GNU arch Compilerbau | Antlr, lex/yacc, flex/bison, JavaCC Webserver | Apache, Tomcat, lighttpd, winstone, IHS Appl. Server | Borland Application Server, Websphere, Websphere Commerce Buildwerkzeuge | Make,Ant, Maven, autoconf Buildserver | Hudson/Jenkins, CruiseControl, Hudson, Anthill Lizenzierung | FlexLM CORBA | Visibroker, mod_iiop, Mico, OmniORB, Orbix, TAO ASN.1 | ASN2CXX, ISODE, snacc, OSS Debugging | purify, gdb, dbx, nm, wireshark Performance | silkperformer Test | expect, junit Sicherheit | OpenSSL, mod_ssl Konnektivity | Samba, NFS, automounter, Humingbird Exceed, ssh UML | Paradigm Plus Graphik | Photoshop, GIMP, Inkscape, SVG, graphviz Email | Qmail, Sendmail Installbuilder | InstallAnywhere, InstallShield, MSI-Installer Integration | Swig CMS | Wordpress, Mediawiki Projekt Managment Applications | Redmine, Trac, JIRA AUSBILDUNG______________________________________________________________________ 1987-1994 | Universität Karlsruhe; Abgeschlossenes Studium der Informatik 1984-1987 | Technisches Gymnasium Müllheim; Allgemeine Hochschulreife 1981-1984 | Bahnbetriebswerk Haltingen; Abgeschlossene Ausbildung zum Maschinenschlosser 1976-1981 | Realschule Kandern; Mittlere Reife SPRACHEN________________________________________________________________________ Deutsch | Muttersprache Englisch | Verhandlungssicher Niederländisch | Flüssig FUSSNOTEN_______________________________________________________________________ [1] Weitere Fallstudien unter http://de.haefelinger.it/portfolio [2] Optical Character Recognition, vgl. http://de.wikipedia.org/wiki/Texterkennung [3] Weiter OpenSource Beiträge unter http://workbench.haefelinger.it [4] Siehe http://flaka.haefelinger.it sowie http://code.google.com/p/flaka [5] http://cruisecontrol.sourceforge.net/ [6] http://www.antlr.org [7] http://www.borland.com/us/products/silk/silkperformer/index.html [8] Silkperformer wurde mittlerweile von Borland aufgekauft und in die Borland'sche Produktfamilie integriert. [9] http://research.cs.ncl.ac.uk/cabernet/www.laas.research.ec.org/esp-syn/text/9169.html