Curriculum Vitae TABLE OF CONTENTS_______________________________________________________________ SEEKING ABOUT ME COMPETENCIES PORTFOLIO CASE-STUDY »Infrastructure Engineering« CASE-STUDY »Buildmanager« CASE-STUDY »FLAKA« CASE-STUDY »Darwin« CASE-STUDY »pyANTLR« CASE-STUDY »Software-Analyst« CASE-STUDY »ASN2XXX« TECHNOLOGIES TOOLS EDUCATION LANGUAGES SEEKING_________________________________________________________________________ Looking for interesting, challenging work in the design and development of software products within Europe. ABOUT ME________________________________________________________________________ Surname, First-name | Häfelinger, Wolfgang Address | Slangenburg 42, 1082JW Amsterdam, NL Nationality | German Year of birth | 1964 Education | University degree in computer science | Telephone | +31 648 27 61 59 Email | wh@haefelinger.it Internet | http://www.haefelinger.it Weblog | http://workbench.haefelinger.it COMPETENCIES____________________________________________________________________ Themes | Build/Deploy/Configuration Management, Software Development, Java EE/J2EE, IT Security, Compiler Construction, Telecommunication. Work | Independent; Teamwork; International; Flexible PORTFOLIO_______________________________________________________________________ 2011 | European Patent Office 2010 | T-Systems Multimedia Solutions GmbH 2009 | häfelinger IT 2005-2009 | European Patent Office 2001-2005 | Borland 2000-2001 | Dresdner Bank 2000 | Karis AG 1999 | IBM 1998 | Robert Bosch GmbH 1994-2000 | Computec GmbH Software CASE-STUDY »Infrastructure Engineering«_________________________________________ Contractor position as Software Engineering Expert. European Patent Office, The Hague, The Netherlands ; 2010-2011 Migration ([1]) to current and de facto standard Software infrastructure components (Subversion, Maven, Jenkins/Hudson, Nexus Pro, SonarJ, Fisheye and Crucible) from partially outdated, partially proprietary ones. Design, documentation, presentation and implementation of an appropriate release process. Decommission of obsolete components. Technologies____________________________________________________________________ Buildtools (Maven), Buildserver (Jenkins/Hudson), Artefact Repositories (Nexus Pro), SCM (Subversion), Projectmanagement/Tracking (Jira), Wiki (Confluence), OS (Windows XP, GNU/Linux SLES, MacOS X), Virtualisation (VMWare), IDE(Eclipse), Other (Java, Groovy, Ruby, GNU/Emacs, XSLT/XPATH, REST). CASE-STUDY »Buildmanager«_______________________________________________________ Contractor position as Build- and Deploymentmanager within a J2EE Environment. T-Systems Multimedia Solutions GmbH (MMS); Jena/Thuringia, Germany; 2010. The “Jena branch” of MMS creates web based, customer tailored shop systems for large and midsized customers as well for internal use. All shop systems tailored in Jena are based on IBM's Websphere Commerce suite, an extendable J2EE framework for B2B and B2C business models. I joined the build and deployment team as Buildmanager. Amongst our responsibilities were the provision of complete shop instances, build environments, build servers and accompanying build and deploy infrastructure. Furthermore, we were responsible for daily builds and deployments as well as for update and maintenance of database records. A particular corner stone of my employment was to supervise and improve our processes besides participating in our daily routine work. A particular highlight was the ability to create a shop instance without user interaction. Before I joined, shop instances were created in an interactive way using GUI based installers. One problem with this approach is surely the time it takes to complete such a complex installation (setting up the database, the application server, the commerce instance, the update installers plus fix- and feature packs, to run all in a cluster et cetera). More important for us was the ability to be able to recreate such a setup. Before, we ended up in systems with a big variety of installation details like location, user names and passwords, instance names, permissions and cluster settings to name a few. By scripting the complete setup, we got hold to provide a system in batch mode and in a reproducible way thus essentially allowing anyone to carry it out. Technologies____________________________________________________________________ Buildtools (Ant) Buildserver/CI (Hudson, Anthill), Artifact Repositories (Artefactory, Nexus), SCM (Subversion, git), Project management (trac), Windows (XP, 7), Virtualization (VMWare), IBM Websphere (v6, v7), IBM Websphere Commerce (v6, v7), IBM DB2 (v8, v9), IDE(RAD), IBM Scripting Console (wsadmin), Other (J2EE, Emacs, vi, Cygwin, Jython, jacl,Tanuki Wrapper, XSLT/XPATH). CASE-STUDY »FLAKA«______________________________________________________________ Non-commercial contribution to Open Source and Free Software Amsterdam, The Netherlands; 2009-2010. Flaka ([2]) ([3]) extends Ant - a popular build tool – by providing control structures typically found in modern programming languages such as if-then-else branching, loops and exception handling. In addition, an embedded Expression Language (EL) has been added. EL provides variables, gives access to properties of low level data object and allows arbitrary complex expressions without violating XML's well-formedness. Special attention has been given on documenting Flaka by providing a decent manual ([4]). Flaka is based on experiences made in case study Darwin. Meanwhile Flaka is used in a couple of projects and companies. Amongst them HUK-Coburg, a well known insurance company in Germany. Technologies____________________________________________________________________ Java, Ant, JavaUnified Expression Language, Eclipse, Subversion, Git, Junit, TeX/LaTeX, Docbook, asciidoc, dblatex. CASE-STUDY »Darwin«_____________________________________________________________ Contractor position as Software Architect and Developer within the Research and Architecture Division at the European Patent Office. Design and Development build-system “Darwin” as quality assurance measurement. European Patent Office, The Hague, The Netherlands ; 2005-2009 A problem to tackle when building component based software applications is the use of “proper” component versions. Using an outdated component is detected late in the deployment cycle and thus costly. The goal of my assignment design and provide a solution for this problem. I solved this task by providing a fully automated build-system based on a Continuous Integration approach. The system got internally branded as “Darwin”. A fundamental aspect of Darwin is that developers do no longer care about dependency versions. Thus, all component version management was entirely taken over by Darwin in a fully automated way. CruiseControl ([5]) had to be extended in order to archive the overall goal. A larger part of the rather complex version management got written in Python. Furthermore, a framework sitting on top of Ant had to be written to reduce build scripts to essentially dependency listings while assuring a homogeneous build process of several hundred projects. Due to the extraordinary success of this build-system, Darwin became the de facto standard for building software components within the EPO. Technologies____________________________________________________________________ Java, CruiseControl, Ant, CVS, Maven, Tomcat, XML, XPATH, XLST, Linux, Windows, Eclipse, REST, Python, JSP, graphviz CASE-STUDY »pyANTLR«____________________________________________________________ Non-commercial contribution to Open Source and Free Software. Amsterdam, The Netherlands; 2004-2005 ANTLR ([6]) is a framework for writing language recognizers, translators and compilers with an excellent support for syntax tree construction, manipulation and tree walking. ANTLR is written in Java while having a plug-in system allowing to write and plug-in code generators for other target languages than Java. Before joining, ANTLR supported Java and C/C++ as target languages. I extended this list by writing pyANTLR, a code generator targeting Python. pyANTLR became an integral part of ANTLR since release 2.7.5. Technologies____________________________________________________________________ Java, Python, Make, autoconf CASE-STUDY »Software-Analyst«___________________________________________________ Full-time employment as Software Analyst; Post-sales support middle-ware products (CORBA, J2EE), International team, International clients. Borland, Amstelveen, The Netherlands, 2001-2004. Responsible for post-sales support of mostly large, well known customers including Nokia, Ericsson, France Telecom, Deutsche Bank London, Euronext Amsterdam or Bundesagentur für Arbeit (Nuremberg, Germany). Main task to analyze, test and debug customer configurations related Visibroker and Borland's J2EE Application Server. Working either customer or Borland premises. Other tasks were to maintain a highest level of knowledge about the interaction of Borland products; to maintain contact with specialists at other sites – especially with R & D in Singapore and California; to create and distribute information about specific products; to give training and o support pre/after sales activities. Highlights______________________________________________________________________ Solved a mysterious problem occurring at Bundesagentur für Arbeit related to Visibroker in in a heavy multithreaded environment. That Visibroker deployment was the largest ever taken with approximately 90.000 connected clients. The problem could be explained with the help of specialized performance testing tools like silkperformer. Eventually I solved the problem by exchanging a Solaris specific thread library. Lead architect in designing and providing a solution that allowed engineers to use Visibroker without installing them, regardless of platform (Windows, Solaris, Linux, HP-UX, AIX) or machine. This solution got later implemented in other support centers as well. Technologies____________________________________________________________________ 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 CASE-STUDY »ASN2XXX«____________________________________________________________ Full-time employment as C/C++ Developer and Project-manager; Head of Computec's research project ACCENT; international project experience; design and development ASN.1 compiler and framework (C/C++, Java); Product development ASN2CXX and ASN2Java - commercial outcome of ACCENT. Computec GmbH Software, Karlsruhe, Germany; 1994-2000. ACCENT was a collaborative research work of several European companies and organizations. It was partially founded and supported by the European Community as part of their ESPRIT program (EP 9169 ([7])). The objective of ACCENT was to devise a coding system acting as hardware cell. This hardware cell had the ability to encode and decode X.209 binary data, the canonical binary representation of ASN.1 at that time. I represented Computec GmbH Software in this consortium during the complete lifetime of ACCENT. Besides participating in the design of the overall concept of ACCENT, I provided an ASN.1 compiler and a software coding system for ASN.1 data structures. This provision allowed us to measure the performance improvement gained by using hardware instead of a pure software solution. My software encoding engine was extremely fast and questioned the idea of implementing a (rather complex) hardware cell. The collected experiences led to the commercial development of the ASN2XXX product family at Computec. The whole product family got designed by me and implemented in a small team led by me. The ASN2XXX product family has been sold world wide, mainly within the telecommunication area. Well known customers have been Ericsson, Bell Atlantic, Marconi, Telefonica Spain, Storck Netherlands and Bosch Telecom Germany. Technologies____________________________________________________________________ ASN.1, C++, Java, Windows, Solaris, Sniff TECHNOLOGIES____________________________________________________________________ Language | AWK, Shell-scripting (Bash, Bourne), C#, C/C++, Lisp, Groovy, Guile, Java, JavaScript, M4, PHP, Pascal, Perl, Prolog, Python, Ruby, Scheme, Tcl/TK, Jthon, Jacl Markup | XML, HTML, ASN.1, TeX/LaTeX, AsciiDoc, DocBook Mini-language | SQL, Regular Expressions, XPath, CSS Operating-system | 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 Database | IBM DB2, Informix, JDBC, MS Access, MySQL, ODBC, ObjectStore, Oracle Communication | 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 Web-development | CGI, J2EE, REST, Ajax, jQuery J2EE | Servlets, JSP, EJB, RMI, JINI, JNDI, JMS, Web-services Methods | Extreme Programming, OOP, CI TOOLS___________________________________________________________________________ IDEs | Eclipse, Visual Studio, JBuilder, Sniff, Sun Workshop, Symantec, Visual Age, RAD Editors | Emacs, vi, Notepad+ Versionsmanagement | CVS, Subversion, git, mercurial, RCS, Perforce, GNU arch Compilerconstruction | Antlr, lex/yacc, flex/bison, JavaCC Webserver | Apache, Tomcat, lighttpd, winstone, IHS Appl. Server | Borland Application Server, IBM Websphere, IBM Websphere Commerce Build-tools | Make,Ant, Maven, autoconf Build-server | CruiseControl, Hudson, Anthill License-systems | 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 Security | OpenSSL, mod_ssl Scripting Consoles | IBM wsadmin Connectivity | Samba, NFS, automounter, Humingbird Exceed, ssh UML | Paradigm Plus Graphics | Photoshop, GIMP, Inkscape, SVG, graphviz Email | Qmail, Sendmail Installbuilder | InstallAnywhere, InstallShield, MSI-Installer Integration | Swig CMS | Wordpress, Mediawiki Virtualization | VMWare, Parallels EDUCATION_______________________________________________________________________ 1987-1994 | University of Karlsruhe; Graduate in Computer Science 1984-1987 | Grammar School (Technisches Gymnasium) Müllheim; Allgemeine Hochschulreife 1981-1984 | Bahnbetriebswerk Haltingen; Education as Metalworker 1976-1981 | Secondary School (Realschule) Kandern; Mittlere Reife LANGUAGES_______________________________________________________________________ German | mother-tongue English | fluent Dutch | advanced FOOTNOTES_______________________________________________________________________ [1] Please find furthter case studies at http://en.haefelinger.it/casestudies [2] Further contributions at http://workbench.haefelinger.it [3] See http://flaka.haefelinger.it and http://code.google.com/p/flaka [4] See flaka.googlecode.com/files/flaka.pdf [5] http://cruisecontrol.sourceforge.net/ [6] Please find further details on ANTLR at http://www.antlr.org [7] http://research.cs.ncl.ac.uk/cabernet/www.laas.research.ec.org/esp-syn/text/9169.html