Michael Krause Software Development

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

Objective

Create innovative iOS apps for iPhone and iPad as well as Cocoa applications for Mac OS X in Objective-C. Use Python and its fantastic ecosystem wherever possible.

Programming Languages

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

Databases

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

APIs/Frameworks

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

Other Skills

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 Projects on GitHub

Languages

German (native speaker), English (fluent), French (fluent), Spanish level B1

Professional Experience

  • Mechanical Engineering
    September 2016 - October 2016
    Advanced the development of a Python/PyQt application running on Linux by starting the integration of the business logic into the GUI. Implemented launching and communicating with long running graphical Python programs. Introduced BDD tests using behave and QTest that also document the effects of user stories in visual form. Creation of wrapper scripts for build and test scripts so they can run in Jenkins instances.
  • VFX Pipeline
    February 2015 - May 2015
    Creation of an application to find and rename identifiers like car parts for example that are used in a 3d production pipeline for photo realistic renderings. The identifiers appear in 3ds Max scenes, Nuke scripts, SQL databases, XML files and so on. The details of every rename action is logged into a MySQL database. Using this logging database the application allows reverting every change and restoring every resource to its initial state. The application is written in Python using PySide (PyQt) as GUI toolkit. I used SQLAlchemy for database independence and object-relational mapping. The application is deployed as a Windows executable file using PyInstaller.
  • Image Processing
    September 2008 - September 2014
    Creation of the application TiltShift for the iPhone/iPod Touch in Objective-C which simulates a tilt-shift lens that tricks the mind into viewing a photo as a miniature scene like a model railroad for example. The effect is achieved by blurring most of the scene and leaving a certain region focussed. This application is available in the iPhone App Store.
  • Image Processing
    December 2007 - September 2014
    Creation of the fun image processing application RealArtist for the iPhone/iPod Touch in Objective-C and OpenGL ES. This program has been installed more than 400000 times on jailbroken iPhones and is now available in the iPhone App Store.
  • Online Marketing
    June 2008 - September 2008
    Creation of an online advertising platform based on Python/Django. Modeling of revenue sharing with Excel. Transformation of use cases into unit tests. Design, implementation and execution of a load test that simulates months of usage within minutes. Implementation of processes that transfer log files between servers running on Amazon EC2 (Elastic Compute Cloud) via Amazon S3 and SQS. Developed the import and aggregation of log data into the database. Generation of PDF invoices using PDF forms. Documented the system using Sphinx.
  • Insurance
    November 2007 - December 2007
    Advanced the automated deployment process of a WebSphere 6.1/AIX enviroment by creating Jython and shell scripts. The subjects were installation of resource adapters and data sources, tracing and logging, session management and patch handling.
  • Insurance
    December 2006 - June 2007
    Migration of J2EE applications from ATG Dynamo 6/7 to IBM WebSphere 6. For a survey of the application landscape that consisted of over eighty apps I created and analyzed a database using Django/Python with the data of the servers, applications, libraries and dependencies. The creation of WebSphere servers, database connections and application installations has been automated using shell, Perl and Jython scripts. To estimate the effort of the whole migration I have migrated several of the applications from ATG Dynamo/Solaris to WebSphere/AIX.
  • Insurance
    October 2005 - May 2006
    Executed load tests using Grinder 3 for several web applications. Developed Jython scripts for synchronization of load test clients and parametrization with test data. Profiling of web applications running on Tomcat 4.1.x and JBoss 4.0.x using YourKit. Created several shell and Perl scripts to debug web applications on Solaris 8. Implementation of file transfer processes using SSH. Set up a permanent web log analysis solution using Sawmill 7.2.x.
  • Bank
    May 2005 - September 2005
    Advanced the technical architecture of a web application for construction financing. Configuration and sporadic administration of the application servers (JBoss 3.2.x and IBM WebSphere 5.1). Troubleshooting of problems regarding cookies, HTTP/S (with certificates), incompatible browser behaviour, database deadlocks (IBM DB2 Universal Database), network traffic, Java performance, version conflicts and diverse environment specific behaviour. Consulting for embedding Java applets in Internet Explorer using the standard company-wide security policies.
  • Bank
    February 2005 - April 2005
    Build, configuration, deployment and administration of complex J2EE applications for online banking. The application server is ATG Dynamo. Consulting for a secure and seamless integration of a web application of another bank over the Internet.
  • GIS
    September 2003 - August 2004
    Development of several GIS applications using Python and OpenGL. Target platform is Windows with emphasis on professional delivery of the programs as installable executables. For this task I created an automatic build process.
  • Glass Industry
    April 2003 - July 2003
    Creation of an application to calculate light transmission and similar values of sealed multiple glazing units. Realisation was done in Python. Native Look&Feel of the GUI on Windows and Linux was achieved by using wxPython. Professional deployment on Windows using InnoSetup. The installation and descriptive texts of the application are fully internationalized (german, english, french). Viewing and printing of the calculated data sheets in an appealing style was achieved by using the PDF format. The client-server communication over the HTTP protocol supports all common types of proxy servers.
  • Bank
    November 2002 - March 2003
    Introduction of a groupware application (Wiki) to create and maintain the documentation regarding the build, deployment and administration of complex J2EE applications for online banking. Creation of robust and maintainable shell and Perl scripts on Solaris for the configuration, installation and administration of a J2EE application including complex issues like CPU binding. CLASSPATH analysis of the running J2EE application by a self-written Perl script. Development and integration of a J2EE web module to inspect log files on development and staging systems using Eclipse and Intellij IDEA. Turnkey ready deployment of the Java profilers OptimizeIt, JProbe and JProfiler for remote profiling of the J2EE application on Solaris from Windows NT. Consulting regarding necessary measures, possibilities and consequences in transforming a monolithic J2EE application into independent web services.
  • Bank
    October 2001 - November 2001
    Profiling of a Java-Swing application for handling leasing contracts using OptimizeIt. Implemented measures to increase the performance and responsiveness of the client application (using object pooling for example). Modification of a client program to generate load on the Java based application server. Implementation of performance-enhancing measures (like caching of previously calculated results) in the server part of the application. Quantitative evaluation of the Oracle JDBC drivers (thin, OCI) with different configuration settings in the object-relational mapping tool TopLink (e.g. BatchWriting, ParameterBinding). Analysis of logged SQL scripts using self-written Python scripts and documentation of performance critical statements. Transformation of logged SQL statements into a JDBC application and into an executable SQL script to measure the respective overhead of CORBA, the network and the JDBC driver.
  • Bank
    January 2001 - September 2001
    Ported a J2EE online brokerage application from IBM Websphere to ATG Dynamo. Creation of J2EE compliant deployment descriptors of servlets and EJBs (Enterprise Java Beans) and configuration of the associated database connections. Implementation of a development and build process including coaching the developers in debugging tools and the IDE Kawa. Developer support for technical problems regarding the development process, tools and the version control system Continuus. Configuration, Execution and Deployment of application builds.
  • Knowledge Management
    September 2000 - December 2000
    Introduction of methods and tools to enhance the software development process and coaching of the employees. Analysis and modification of Java programs and batch scripts to easy the deployment. Analysis of the ODBMS based (ObjectStore) persistence layer and Know-How transfer to other developers. Further development of the automatic build process using the XML-based make tool Jakarta-Ant and Windows NT batch scripts. Evaluation of multiple tools for configuration management as well as introduction and administration of a SCM tool (StarTeam). Coaching the employees to use StarTeam. Configuration of StarTeam to be used by developers of multiple sites. Creation of automatic batch builds of Visual C++ 6.0 projects. Extension of 'InstallShield for Windows Installer' setups for the deployment of the software on Windows 2000. Documentation about the build, deployment and test of the software using MS Word 2000.
  • Bank
    July 2000 - September 2000
    Refactoring of partially generated Java programs for the import of the data pool into a Oracle8 database using VisualAge (via JDBC and SQL*Loader). Sequential control of multiple SQL scripts and Java programs using the Unix shell ksh. Performance tuning by parallelizing partially dependent data imports with a dynamic job scheduler written in ksh. Installation of a Sun Enterprise Server including disk partitioning, creation of user accounts, configuration of NFS. Installation and configuration of system and network monitoring tools. Created perl scripts for automatic checking of PL/SQL migration programs for completeness regarding the transformed attributes. Debugging of PL/SQL programs. Profiling of the Java based application server using JProbe on Solaris and Windows NT for performance and memory usage. Acceleration of the application by porting it from JDK 1.1 to JDK 1.3.
  • Transportation & Logistics
    August 1999 - May 2000
    Maintenance and development of a Java/Oracle7 based call center software. Creation of a concept to extend the existing Java framework with CRM aspects. Conversion of multiple MSIE applets into a coherent pure Java application. Integration of DCOM and Java to generate form letters using Mail Merge in Word97. Integration of a pure Java web browser to view standard HTML pages from within the application. Introduced a concept and implementation of regression tests in Java based on JUnit. Creation of multiple Unix shell scripts to import data into Oracle7 using the SQL*Loader. Extension of a list generating C++ program (with Oracle Pro*C). Extension of Word97 documents using merge fields and macros. Implementation of Perl scripts to document the hierarchical dependencies of Word97 documents as HTML report.
  • Credit Agency
    May 1998 - May 1999
    Created the data model, database schema and SQL queries in ESQL/C (Informix) for a credit assessment application that uses fuzzy information sources. Implementation of Perl scripts to reverse engineer the existing code base of C programs and the associated data model.
  • Prepress Industry
    December 1997 - March 1998
    Object oriented analysis, design and implementation of a communication framework in Java 1.1 for a distributed application to inspect and control imagesetting machines for printing plates remotely over small-bandwidth connections. (Work samples in form of source code and documentation for this project are available on request.)
  • Online Media
    July 1997 - December 1997
    Development of a client-server system with database connectivity (Informix) for dynamic generation of targeted advertisements within third-party webpages. The implementation was done in C using Unix sockets, POSIX threads, Informix datablade modules and in ESQL/C for the SQL queries. Spontaneous creation of Apache and Squid hacks to rescue the database servers from lunch hour peak loads.
  • Online Media
    December 1996 - March 1997
    Creation of several graphical applications as Java Applets. Display of vector maps (GIS) from multiple formats (2D and 3D) in a visually pleasing style resembling airbrush images.

Personal Projects

  • Public Transport
    July 2007 - April 2008
    Creation of the Google Maps mashup trom.fr that finds the fastest metro connections between two arbitrary locations in the region of Paris, France. The site was created using in Python/Django, JavaScript, AJAX, jQuery.

Education

University of Bielefeld
October 1991 - June 1997
German diploma in computer science with emphasis on natural science. This is equivalent to the american Master of Science in Computer Science.

Copyright © 2016 Michael Krause