Michael Krause Software Development
  • PDF
  • DOC
Michael Krause
Auf der Horst 11
33829 Borgholzhausen
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, C++, Assembler (68k), JavaScript, HTML, CSS, Java, Perl, Tcl/Tk, LaTeX, SQL, Shell scripts (sh, ksh, bash)
IBM DB2, Oracle, Informix, MySQL, PostgreSQL, SQLite
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
German (native speaker), English (fluent), French (fluent), Spanish
Professional Experience
January 2018 - August 2018
Wrote Python scripts to automate applications via mouse and keyboard actions using pyautogui/pywinauto through Citrix sessions. Wrote an SMS server and client/server API to send SMS over SMPP. Implemented download of files available on the ESB via SFTP with bastion host support using Paramiko. Parallelized a Pyro based topology server for concurrent use by dozens of simultaneous clients. Wrote Python scripts to compare Cisco IOS XR configuration files with known good templates in annotated Word format. Automated ticket creation by retrieving emails from an Exchange Server via EWS, extracting relevant information with fuzzy address matching and further database processing.
Shop Fitting
October 2017 - December 2017
Restructured the prototype of a Python script that uses KeyShot to generate rendered images of product carriers and sign holders. Enhanced the logic to select surface materials for product parts with information taken from a SQL database combined with business rules. Created a visual form of logging to trace back the origin of material selection decisions to its business rules and data sources. Implemented the continuous rendering of new incoming 3D models with the Windows Task Scheduler.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 © 2021 Michael Krause