= Curriculum Vitae Dipl. Inf. Wolfgang Häfelinger = Wolfgang Häfelinger v1.2, Januar 2010 == ANGESTREBTE POSITION == Interessante und herausfordernde Tätigkeiten in der Architektur und/oder Entwicklung von Software an europäischen Standorten; insbesondere Deutschland, Schweiz, Österreich und Niederlande. == PERSÖNLICHE DATEN == [width="100%",frame="none",grid="cols",cols="20%,80%"] |======================================================================= | Name, Vorname | Häfelinger, Wolfgang | Anschrift | Slangenburg 42, 1082JW Amsterdam, NL | Nationalität | Deutscher | Geburtsjahr | 1964 | Geburtsort | Freiburg im Breisgau, Deutschland | | | Telefon | +31 648 27 61 59 | Email | wh@haefelinger.it | Internet | http://www.haefelinger.it/ | Weblog | http://workbench.haefelinger.it/ |======================================================================= image:images/L1010027.jpg[width=170] image:images/L1010037.jpg[width=170] image:images/L1010042.jpg[width=170] image:images/L1010044.jpg[width=170] == KOMPETENZEN == [width="100%",frame="none",grid="cols",cols="20%,80%"] |======================================================================= | Themen | Infrastrukturlösungen zur Softwareentwicklung (Konfigurations-, Deploy- und Buildmanagement), Webapplikationen, IT Security, Compilerbau, Telekommunikation. | Arbeitsweise | Selbständiges Arbeiten mit dem Anliegen, dem Kunden eine bestmögliche Lösung im Rahmen einer zu beherrschenden Komplexität anzubieten und zu verwirklichen. |======================================================================= == PORTFOLIO == [width="100%",frame="none",grid="cols",cols="20%,80%"] |======================================================================= | 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 1/3 == Europäisches Patent Amt, Den Haag, Niederlande ; Freiberufliche footnote:[Diese und weitere Fallstudien zu meinen Berufserfahrungen finden Sie auf meiner Firmenseite unter http://de.haefelinger.it/portfolio] Position als System Architekt ; 2005-2009 Das Europäische Patent Amt (EPA) mit Sitz in München ist führend in der Entwicklung von Infrastrukturlösungen rund um “das Patent”. Diese Lösungen werden überwiegend innerbetrieblich hergestellt, wobei ein modularer, auf Komponenten basierter Ansatz, verfolgt wird. Die vorwiegend benutzte Programmiersprache ist "Java", sowohl auf dem Client wie auch auf dem Server. Ein erhebliches Problem in diesem auf Komponenten basierten Ansatz ist die fehlerhafte Verwendung einer Komponenten in einer "veralteten" Version. Eine solche wird typischerweise erst spät im Entwicklungsprozess entdeckt und verursacht dadurch nicht unerhebliche Kosten. Das Ziel meines Auftrags war die Analyse der Situation, die Erarbeitung eines Lösungsvorschlages für dieses Problem und ggfs. dessen Umsetzung. Aus meiner Analyse der Situation ergab sich, dass einerseits eine "manuelle" Vorgehensweise und andererseits ein situationsbedingter Mangel in der Kommunikation für das Problem verantwortlich war. Auf dieser Analyse aufbauend entwarf ich ein "Buildsystem" welches in letzter Konsequenz sowohl die Kontrolle der Versionen der Komponenten als auch die Erzeugung der Endprodukte vollständig automatisiert. Die zugrunde liegende Idee dieses Systems war die Pflege der Beziehung zwischen einer Komponente und deren aktueller Version. Die Version einer Komponente darf nur dann erhöht werden, wenn die neue Version vollständig kompatibel zu allen anderen Komponenten ist, die von ersterer Gebrauch machen. Dieser Ansatz wurde mittels eines so genannten "Continuous Integration" Servers realisiert, wobei dieser jedoch erheblich erweitert werden musste um allen Aspekten Rechnung tragen zu können. Das unter meiner Leitung umgesetzte System wurde EPA intern unter dem Namen “Darwin” bekannt und hat sich bestens bewährt. Darwin ist bis dato der anerkannte Standard zum Erzeugen von lauffähigen Programmen im Europäischen Patent Amt Den Haag. === Technologien === Java, CruiseControl, Ant, CVS, Maven, Tomcat, XML, Linux, Windows, Eclipse, Rest, Python, JSP, XSLT/XPATH. == FALLSTUDIE 2/3 == pyANTLR, Amsterdam, Niederlande; Freischaffender, unentgeltlicher OpenSource Beitrag footnote:[Diesen Beitrag zu einem OpenSource-Projekt sowie weitere von mir geschaffene Projekte und Beiträge finden Sie auf meiner Werkbank http://workbench.haefelinger.it] zum Thema Software Entwicklung; 2004 - 2005 ANTLR footnote:[http://www.antlr.org] ist eine Plattform zum Schreiben von Spracherkennungswerkzeugen mit einer ausgezeichneten Unterstützung für die Konstruktion von Syntax-Bäumen, deren Manipulation und deren Traversierung. Zwar ist ANTLR ursprünglich in und für die Programmiersprache Java geschrieben worden, doch erlaubt ein Mechanismus die Erweiterung auf beliebige Zielsprachen. Bevor ich dem Opensource-Projekt beitrat, waren C, pass:[C++] und C# die möglichen Zielsprachen neben Java. Ich erweiterte diese Liste durch das Schreiben von pyANTLR, eines Code-Generators für die Zielsprache Python. Dadurch ist es nun also möglich, 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 3/3 == Computec GmbH Software, Karlsruhe, Deutschland; Festanstellung als Softwareentwickler und Produktmanager; 1994 - 2000 Die Produktfamilie ASN2xxx bestand aus einem ASN.1 Compiler und einer Programmierschnittstelle für die Programmiersprachen pass:[C++] und Java. Compiler und Framework wurden von mir entworfen und in einem kleinen Team unter meiner Leitung realisiert. ASN2CXX (ASN.1 für pass:[C++]) wurde weltweit an Kunden wie Ericsson, Bell Atlantic, Marconi, Telefonica Spain, Storck (Niederlande) und Bosch Telecom Deutschland vertrieben. Die ursprüngliche Version des Produkts war der Beitrag der Firma Computec GmbH Software zum europäischen Forschungsprojekt ACCENT (EP9169 footnote:[http://research.cs.ncl.ac.uk/cabernet/www.laas.research.ec.org/esp-syn/text/9169.html]) im Rahmen des ESPRIT Programms der Europäischen Gemeinschaft. ACCENT war die gemeinschaftliche Arbeit von verschiedenen europäischen Firmen. Computec GmbH Software wurde dabei während der gesamten Laufzeit des Projektes von mir repräsentiert. Weitere beteiligte Firmen waren B3i (Frankreich), Pijnenburg (Niederlande), Digital Equipment (Deutschland), Joanneum Research (Österreich), Universität von Patras (Griechenland) und XandMail (Frankreich). Geschäftssprache war Englisch. Ziel des Projektes war die Erstellung eines Kodiersystems als Hardware-Zelle. Diese Zelle sollte über die Fähigkeit verfügen, Daten gemäß X.209 (BER), der kanonischen binären Repräsentation von Daten in ASN.1, zu kodieren und zu dekodieren. Durch die Implementierung des Kodiersystems in Hardware erhoffte man sich, als eigentliches Ziel des Projekts, eine bedeutende Steigerung der Geschwindigkeit (Faktor 1oo – 1ooo) gegenüber der herkömmlichen Methode, der Kodierung mittels Software. Neben der Mitarbeit an dem Entwurf des Gesamtsystems war meine Aufgabe die Bereitstellung eines ASN.1 Compilers und einer Programmierschnittstelle für pass:[C++]. Deren Einsatz verbarg dem Benutzer, ob die Kodierung mittels Hardware oder Software erfolgte. Dieser Ansatz erlaubte auch eine Einschätzung der zu erzeugenden Leistungsfähigkeit der Hardware. Es stellte sich heraus, dass die von mir entworfene Maschine extrem schnell war. Die Hardware-Zelle wurde nie realisiert. === Technologien === ASN.1, pass:[C++], Java == TECHNOLOGIEN == [width="100%",frame="none",grid="cols",cols="20%,80%"] |======================================================================= | Sprachen | AWK, Bash, Unix Shells, C#, *C/pass:[C++]*, Lisp, Guile, *Java*, JavaScript, M4, PHP, Pascal, Perl, Prolog, *Python*, Ruby, Scheme, Tcl/TK | Markup | *XML*, *HTML*, *ASN.1*, *TeX*, *LaTeX*, *AsciiDoc*, *DocBook* | Minisprachen | SQL, *Reguläre Ausdrücke*, *XSLT*, *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 | IBM DB2, Informix, JDBC, MS Access, *MySQL*, ODBC, ObjectStore, Oracle | 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 | Webdevelopment | CGI, J2EE, *REST*, Ajax, jQuery | J2EE | Servlets, *JSP*, EJB, RMI, JINI, JNDI, JMS, Web Services | Methoden | Extreme Programming, OOP |======================================================================= == WERKZEUGE == [width="100%",frame="none",grid="cols",cols="20%,80%"] |======================================================================= | IDEs | *Eclipse*, Visual Studio, JBuilder, Sniff, Sun Workshop, Symantec, Visual Age | Editoren | *Emacs*, vi | Versionsverwaltung | *CVS*, *Subversion*, *git*, mercury, RCS, Perforce, GNU arch | Compilerbau | *Antlr*, lex, *flex*, yacc, *bison*, JavaCC | Webserver | Apache, *Tomcat*, lighttpd, winstone | Appl. Server | Borland Application Server | Buildwerkzeuge | *make*, nmake, *Ant*, *Maven*, *autoconf* | Buildserver | *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 | Email | *Qmail*, Sendmail | Installbuilder | InstallAnywhere, InstallShield, *MSI-Installer* | Integration | Swig | CMS | *Wordpress*, Mediawiki |======================================================================= == AUSBILDUNG == [width="100%",frame="none",grid="cols",cols="20%,80%"] |======================================================================= | 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 == [width="100%",frame="none",grid="cols",cols="20%,80%"] |======================================================================= | Deutsch | Muttersprache | *Englisch* | Verhandlungssicher | Holländisch | Konversationstauglich |=======================================================================