Michael Krause Software Development

  • PDF
  • DOC
Michael Krause
Auf der Horst 11
33829 Borgholzhausen
Deutschland

Angestrebte Position

Erstellung innovativer iOS-Apps für iPhone und iPad sowie Cocoa-Applikationen für Mac OS X in Objective-C. Verwendung von Python und seinem fantastischen Ökosystem wo immer es möglich ist.

Programmiersprachen

Python, Objective-C, C, Assembler (68k), JavaScript, HTML, CSS, Java, Perl, Tcl/Tk, LaTeX, SQL, Shell scripts (sh, ksh, bash)

Datenbanken

IBM DB2, Oracle, Informix, MySQL, PostgreSQL, SQLite

APIs/Frameworks

wxWidgets (wxWindows), PySide/PyQt, Cocoa, OpenGL, Django, jQuery, POSIX, J2EE

Sonstige Kenntnisse

Debian GNU/Linux, LAMP, Apache, Lighttpd, nginx, perlbal, memcached, Docker, SSH, RCS, CVS, Subversion, Mercurial, Git, PyCharm, Eclipse, Xcode, OptimizeIt, JProbe, YourKit, Sawmill, InnoSetup

Open Source-Projekte auf GitHub

Sprachen

Deutsch, Englisch und Französisch fließend, Spanisch Niveau B1

Berufliche Erfahrungen

  • Maschinenbau
    September 2016 - Oktober 2016
    Weiterentwicklung einer in Python/PyQt geschriebenen Applikation durch Beginn der Integration der Fachlogik mit der GUI. Implementierung des Starts und der Kommunikation mit langläufigen grafischen Python-Programmen. Einführung von BDD-Tests mit behave und QTest, die außerdem die Auswirkungen von User Stories in grafischer Form dokumentieren. Erstellung von Wrapper-Skripten für die Build- und Testskripte, damit diese in Jenkins-Instanzen laufen können.
  • VFX Pipeline
    Februar 2015 - Mai 2015
    Erstellung einer Applikation um Bezeichner von z.B. Autoteilen in einer 3d Produktionspipeline für fotorealistisches Rendern zu finden und umzubenennen. The Bezeichner erscheinen in 3ds Max-Szenen, Nuke-Skripten, SQL-Datenbanken, XML-Dateien und so weiter. Die Details jeder Umbenennung werden in einer MySQL-Datenbank protokolliert. Mit dieser Protokoll-Datenbank kann jede Umbenennung rückgängig gemacht und jede betroffene Resource in ihren Ursprungszustand zurückversetzt werden. The Applikation ist in Python mit PySide (PyQt) als GUI-Toolkit geschrieben. Ich habe SQLAlchemy für Unabhängigkeit von speziellen Dankbanken und als objektrelationalen Mapper eingesetzt. Die Applikation wird durch PyInstaller als Windows executable ausgeliefert.
  • Bildbearbeitung
    September 2008 - September 2014
    Erstellung der Bildbearbeitungsapplikation TiltShift, die eine Landschaft in einem Photo derart verwandelt als handle es sich um ein Photo einer Miniatur-Landschaft wie bei einer Modelleisenbahn. Die Applikation für iPhone/iPod Touch ist in Objective-C geschrieben und ist im iPhone App Store verfügbar.
  • Bildbearbeitung
    Dezember 2007 - September 2014
    Erstellung der heiteren Bildverfremdungsapplikation RealArtist für iPhone/iPod Touch in Objective-C und OpenGL ES. Dieses Program wurde bereits mehr als 200000 Mal installiert.
  • Online Marketing
    Juni 2008 - September 2008
    Erstellung einer auf Python/Django basierenden Online-Marketing-Plattform. Modellierung der Gewinnverteilung mit Excel. Transformation der Anwendungsfälle in Komponententests. Design, Implementierung und Durchführung eines Lasttests, der die Benutzung über mehrere Monate in wenigen Minuten simuliert. Implementierung von Prozessen, die Logdateien zwischen auf Amazon EC2 (Elastic Compute Cloud) laufenden Servern via Amazon S3 and SQS transferieren. Entwicklung des Datenbankimports von Logdateien und Aggregation der Logdaten. Generierung von PDF-Rechnungen mit PDF Formularen. Documentation des Systems mit Sphinx.
  • Versicherung
    November 2007 - Dezember 2007
    Erweiterung des automatischen Deployment-Prozesses in einer WebSphere 6.1/AIX-Umgebung durch Erstellung von Jython und Shell-Skripts. Die Themen waren Installation von Ressourcenadaptern und Datenquellen, Traceerstellung und Protokollierung, Sitzungsverwaltung und Behandlung von Patches.
  • Versicherung
    Dezember 2006 - Juni 2007
    Migration von J2EE-Anwendungen von ATG Dynamo 6/7 nach IBM WebSphere 6. Zur Bestandsaufnahme der aus über achtzig Applikationen bestehenden Anwendungslandschaft wurde mit Django/Python eine Datenbank aller verwendeten Server, Applikationen, Bibliotheken und Abhängigheiten aufgebaut und ausgewertet. Für die Einrichtung der WebSphere-Server, Datenbank-Anbindungen und Anwendungsinstallationen habe ich einige Shell-, Perl- und Jython-Skripte erstellt. Zur Aufwandsabschätzung der Gesamtmigration habe ich mehrere Applikationen von ATG Dynamo/Solaris nach WebSphere/AIX migriert.
  • Versicherung
    Oktober 2005 - Mai 2006
    Durchführung von Lasttests mit Grinder 3 für mehrere Web-Anwendungen. Entwicklung von Jython-Scripts zur Synchronisaton vieler Lasttest-Clients und Parametrierung mit Testdaten. Profiling von Web-Applikationen unter Tomcat 4.1.x und JBoss 4.0.x mit YourKit. Erstellung einiger Shell- und Perl-Skripte zum Debugging von Web-Applikationen unter Solaris 8. Implementierung von Filetransfer-Prozessen mit SSH. Bereitstellung einer dauerhaften Lösung zur Weblog-Analyse mit Sawmill 7.2.x.
  • Bank
    Mai 2005 - September 2005
    Weiterentwicklung der technischen Architektur einer Webapplikation zur Baufinanzierung. Konfiguration und gelegentliche Administration der Applikationsserver (JBoss 3.2.x und IBM WebSphere 5.1). Fehleranalyse in Bereichen von Cookies, HTTP/S (mit Zertifikaten), Browserinkompatibilitäten, Datenbank-Deadlocks (IBM DB2 Universal Database), Netzwerkverkehr, Java-Performance, Versionskonflikten und allen umgebungsabhängigen Unterschieden. Beratung zur Einbindung sicherheitsbeschränkter Java-Applets im Internet-Explorer nach Konzern-Richtlinien.
  • Bank
    Februar 2005 - April 2005
    Build, Konfiguration, Deployment und Administration komplexer J2EE-Applikationen zum Online-Banking. Verwendeter Applikationsserver ist ATG Dynamo. Beratung zur sicheren nahtlosen Integration der Webapplikation einer weiteren Bank über das Internet.
  • GIS
    September 2003 - August 2004
    Entwicklung diverser GIS-Anwendungen auf Basis von Python und OpenGL. Zielplatform ist Windows, der Schwerpunkt liegt dabei auf der professionellen Auslieferung der Programme als installierbares Executable. Dazu wurde ein vollautomatischer Buildprozeß erstellt.
  • Glasindustrie
    April 2003 - Juli 2003
    Erstellung einer Applikation zur Berechnung der licht- und strahlungstechnischen Werte von Scheibenaufbauten. Die Realisierung erfolgte mit Python. Native Look&Feel der GUI auf jeweils Windows und Linux wurde durch wxPython erreicht. Professionelles Deployment unter Windows mit InnoSetup. Die Installation und Beschriftungstexte der Anwendung ist vollständig internationalisiert (Deutsch, Englisch, Französisch). Ansicht und Ausdruck der berechneten Datenblätter in ansehnlicher Form wurde durch den Einsatz des PDF-Formats erzielt. Client-Server Kommunikation über das HTTP-Protokoll wobei alle gängigen Proxy-Typen unterstützt werden.
  • Bank
    November 2002 - März 2003
    Einführung einer Groupware-Anwendung (Wiki) zur Erstellung und Pflege der Dokumentation im Bereich Build, Deployment und Administration komplexer J2EE-Applikationen zum Online-Banking. Erstellung robuster und wartbarer Shell- und Perlskripte unter Solaris zur Konfiguration, Installation und Administration einer J2EE-Anwendung unter Berücksichtigung komplexer Thematiken wie CPU binding. CLASSPATH-Analyse der laufenden J2EE-Anwendung durch ein selbsterstelltes Perl-Skript. Entwicklung und Integration eines J2EE-Webmoduls zur Einsicht der Logdateien auf Entwicklungs- und Stagingsystemen mit Hilfe von Eclipse und Intellij IDEA. Schlüsselfertige Bereitstellung der Java-Profiler OptimizeIt, JProbe und JProfiler für das Remote-Profiling der J2EE-Anwendung unter Solaris von Windows NT aus. Beratung zu notwendigen Tätigkeiten, Möglichkeiten und Auswirkungen der Umstellung einer monolithischen J2EE-Anwendung auf unabhängige Web-Services.
  • Bank
    Oktober 2001 - November 2001
    Profiling einer Java-Swing-Applikation zur Bearbeitung von Finanzierungsverträgen mit OptimizeIt. Erarbeitung und Implementierung von Maßnahmen zur Steigerung der Performance und der Responsivität des Clients (z.B. Object Pooling). Anpassung eines Client-Programms zur Lasterzeugung auf dem in Java geschriebenen Applikationsserver. Implementierung performanceverbessernder Maßnahmen (z.B. Caching berechneter Werte) im Serverteil der Anwendung. Vergleich der Oracle-JDBC-Treiber (thin, OCI) unter verschiedenen Konfigurationsmöglichkeiten des objekt-relationalen Mapping Tools TopLink (z.B. BatchWriting, ParameterBinding). Analyse protokollierter SQL-Skripte mit selbsterstellten Python-Skripten und Dokumentation der zeitkritischen Statements. Transformation protokollierter SQL-Statements in eine JDBC-Anwendung und in ein ausführbares SQL-Skript zur Messung des Overheads von CORBA, Netzwerk und des JDBC-Treibers.
  • Bank
    Januar 2001 - September 2001
    Portierung einer J2EE-Applikation für Online-Brokerage von IBM Websphere auf ATG Dynamo. Erstellung J2EE-konformer Deployment-Deskriptoren von Servlets und EJBs (Enterprise Java Beans) und Konfiguration der zugehörigen Datenbankverbindungen. Implementierung eines Entwicklungs- und Build-Prozesses mit Einweisung der Softwareentwickler in Debugging-Tools und die IDE Kawa. Entwicklersupport für technische Probleme im Umgang mit dem Entwicklungsprozeß, Entwicklungswerkzeugen und dem Versionskontrollsystem Continuus. Konfiguration, Durchführung und Deployment von Applikationsbuilds.
  • Wissensmanagement
    September 2000 - Dezember 2000
    Einführung von Methoden und Tools zur Verbesserung des Softwareentwicklungsprozesses sowie Coaching der Mitarbeiter. Untersuchung und Veränderung von Java-Programmen und Batch-Skripten zur Erleichterung des Deployments. Analyse der ODBMS-basierten (ObjectStore) Persistenzschicht mit Know-How-Transfer an weitere Entwickler. Weiterentwicklung des automatischen Build-Vorgangs mit dem XML-basierten Make-Tool Jakarta-Ant und der Windows NT-Batchskripte. Evaluation mehrerer Tools zum Konfigurationsmanagement sowie Einführung und Administration eines SCM-Tools (StarTeam). Schulung der Mitarbeiter im Umgang mit StarTeam. Konfiguration von StarTeam für den Zugriff durch die Entwickler mehrerer Standorte. Erstellung eines automatisierten Batch-Builds von Visual C++ 6.0-Projekten. Erweiterung von 'InstallShield für Windows Installer'-Setups für das Deployment der Software unter Windows 2000. Erstellung von Dokumentation über Build, Deployment und Test der Software mit MS Word 2000.
  • Bank
    Juli 2000 - September 2000
    Refaktorierung teilweise generierter Java-Programme zum Import des Datenbestands in eine Oracle8-Datenbank mit VisualAge (über JDBC und SQL*Loader). Erstellung einer Ablaufsteuerung zur Koordination mehrerer SQL-Skripte und Java-Programme mit der ksh-Shell. Performance-Tuning durch Parallelisierung teilweise abhängiger Datenimporte durch eine dynamische Jobsteuerung mit der ksh-Shell. Installation eines Sun Enterprise Servers mit Plattenpartitionierung, Einrichten von Usern, Konfiguration von NFS. Installation und Konfiguration von System- und Netzwerküberwachungswerkzeugen. Automatische Überprüfung der PL/SQL-Migrationsprogramme auf Vollständigkeit der transformierten Attribute mit selbsterstellten Perl-Skripten. Debugging von PL/SQL-Programmen. Profiling des in Java geschriebenen Applikationsservers mit JProbe auf Solaris und Windows NT in Bezug auf Performance und Speicherbedarf. Beschleunigung der Anwendung durch Portierung von JDK 1.1 auf JDK 1.3.
  • Transport&Logistik
    August 1999 - Mai 2000
    Pflege und Weiterentwicklung einer Java/Oracle7-basierten Call-Center-Software. Erstellung eines Konzepts zur Erweiterung des vorhandenen Java-Frameworks um CRM-Ansätze. Umwandlung mehrerer MSIE-Applets in eine zusammenhängende Pure Java-Applikation. Integration von DCOM und Java zur Generierung von Serienbriefen mit Word97. Einsatz eines Pure Java-Webbrowsers zur Anzeige von HTML-Seiten aus der Java-Applikation. Konzeption und Implementierung von Java-Regressionstests basierend auf JUnit. Erstellung mehrerer Unix-Shell-Skripte zum Import von Daten in Oracle7 (Einsatz des SQL*Loaders). Erweiterung eines C++-Programms (in Verbindung mit Oracle Pro*C) zur Listengenerierung. Erweiterung von Word97-Dokumenten mit Auswertung von Datenbankfeldern durch Makros. Implementierung von Perl-Skripten zur Dokumentation der hierarchischen Abhängigkeit von Word97-Dokumenten mit Ausgabe in HTML.
  • Auskunftei
    Mai 1998 - Mai 1999
    Erstellung des Datenmodells und Datenbankschemas einer Auswertungsdatenbank unter Informix sowie Implementierung der SQL-Abfragen in ESQL/C zur Bonitaetspruefung mit ungenauen Informationsquellen. Implementierung von Perl-Skripten zum Reverse Engineering der bestehenden Programme und des zugehoerigen Datenmodells.
  • PrePress-Bereich
    Dezember 1997 - März 1998
    Objektorientierte Analyse, Design und Implementierung eines Kommunikationsframeworks in Java 1.1 für eine verteilte Anwendung im Bereich Teleservice zur Überwachung und Steuerung von Druckplatten-Belichtungsmaschinen über schmalbandige Verbindungen. (Arbeitsproben in Form von Quelltext und Dokumentation dieses Projekts sind auf Anfrage erhältlich.)
  • Online-Medien
    Juli 1997 - Dezember 1997
    Entwicklung eines Client-Server Systems mit Datenbankanbindung (Informix) zur dynamischen Generierung personalisierter Werbeeinblendungen in Webseiten mehrerer Kunden (Werbeschaltsystem). Die Implementierung ist in C unter Verwendung von Unix-Sockets, POSIX-Threads, Informix Datablade Modulen sowie in ESQL/C für die SQL-Abfragen erfolgt. Spontane Erstellung von Apache und Squid-Hacks, um die Datenbankserver vor dem Ansturm zur Spitzenzeit der Mittagspause zu retten.
  • Online-Medien
    Dezember 1996 - März 1997
    Erstellung mehrerer grafischer Anwendungen als Java-Applets. Grafische Darstellung von Vektorkarten (GIS) mehrerer Formate (2D und 3D) im Airbrush-Stil.

Persönliche Projekte

  • Öffentlicher Nahverkehr
    Juli 2007 - April 2008
    Erstellung des Google Maps Mashups trom.fr, das die schnellsten Metro-Verbindungen zwischen zwei beliebigen Punkten in der Umgebung von Paris findet. Die Webseite wurde mit Python/Django, JavaScript, AJAX und jQuery erstellt.

Ausbildung

Universität Bielefeld
Oktober 1991 - Juni 1997
Dipl.-Informatiker im Bereich angewandte Informatik mit naturwissenschaftlichem Hintergrund.

Copyright © 2016 Michael Krause