Michael Krause Software Development

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

Objetivo

Crear innovadoras aplicaciones en iOS para iPhone y iPad, así como aplicaciones en Cocoa para Mac OS X usando el lenguaje Objective-C. Asimismo, utilizar el lenguaje de programación Python y su fantástico ecosistema siempre que sea posible.

Lenguajes de programación

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

Bases de datos

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

APIs/Marcos de trabajo (Frameworks)

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

Otros conocimientos informáticos

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

Proyectos de Open Source en GitHub

Idiomas

Alemán (nativo), inglés (con fluidez), francés (con fluidez) y español (nivel B1)

Experiencia profesional

  • Construcción de máquinas
    septiembre de 2016 - octubre de 2016
    Avanzado el desarrollo de una aplicación Python/PyQt en Linux. Iniciando la integración de la lógica de negocio en la GUI. Implementado el lanzamiento y la comunicación con los programas gráficos prolongados de Python. Introducción de las pruebas de BDD utilizando behave y QTest que también documentan los efectos de las historias de usuarios en forma visual. Creación de scripts empaquetadores para scripts de compilación y prueba puedan ejecutarse en instancias de Jenkins.
  • Producción de efectos especiales (VFX)
    febrero de 2015 - mayo de 2015
    Creación de una aplicación para buscar y renombrar identificadores como, por ejemplo, componentes de automóviles, que se utilizan en la producción en 3D para renderización fotorrealista. Estos identificadores aparecen en escenas en 3D Max, secuencias de comandos Nuke, bases de datos SQL, archivos XML, etc. Los detalles de cada una de las acciones de renombrado se registran en una base de datos MySQL. El uso de esta base de datos de registro permite que la aplicación pueda deshacer todos los cambios y restituir cada recurso a su estado inicial. La aplicación se ha escrito con el lenguaje de programación Python utilizando además PySide (PyQt) como kit de herramientas de la interfaz gráfica de usuarios (GUI, por su sigla en inglés). También utilicé SQLAlchemy para la independencia de bases de datos y la asignación relacional de objetos. La aplicación se despliega como archivo ejecutable de Windows utilizando PyInstaller.
  • Procesamiento de imágenes
    septiembre de 2008 - septiembre de 2014
    Creación de la aplicación TiltShift para iPhone/iPod Touch en lenguaje Objective-C, que crea un efecto o ilusión óptica por el cual una escena de tamaño natural se modifica para que parezca una miniatura como, por ejemplo, un ferrocarril a escala. El efecto se consigue aplicando un efecto borroso a la mayoría de la escena y dejando una parte de ella enfocada. Esta aplicación está disponible en el App Store del iPhone.
  • Procesamiento de imágenes
    diciembre de 2007 - septiembre de 2014
    Creación de la aplicación de procesamiento de imágenes divertidas RealArtist para iPhone/iPod Touch utilizando los lenguajes Objective-C y OpenGL ES. Este programa se ha instalado más de 400.000 veces en teléfonos iPhones desbloqueados (sometidos al proceso de jailbreak) y ahora está disponible en el App Store del iPhone.
  • Marketing digital
    junio de 2008 - septiembre de 2008
    Creación de una plataforma de publicidad digital basada en Python/Django. Modelado del reparto de los ingresos realizado con Excel. Transformación de casos de uso en pruebas unitarias. Diseño, implementación y ejecución de una prueba de carga que simula meses de uso en unos pocos minutos. Implementación de procesos que transfieren archivos de registro entre servidores que se ejecutan en Amazon EC2 (Elastic Compute Cloud) a través de Amazon S3 y SQS. Importación y agregación de los datos de registro en la base de datos. Generación de facturas en formato PDF utilizando formularios PDF. Documentación del sistema mediante la herramienta Sphinx.
  • Seguros
    noviembre de 2007 - diciembre de 2007
    Mejora del proceso de despliegue automático de un entorno de WebSphere 6.1/AIX creando secuencias de comandos shell y Jython. Instalación de adaptadores de recursos y fuentes de datos, trazado y registro, gestión de sesiones y operaciones con rutinas de corrección.
  • Seguros
    diciembre de 2006 - junio de 2007
    Migración de aplicaciones J2EE de ATG Dynamo 6/7 a IBM WebSphere 6. Para un sondeo del panorama de la aplicación que constaba de más de ochenta aplicaciones para móviles, creé y analicé una base de datos utilizando Django/Python con los datos de los servidores, aplicaciones, bibliotecas y dependencias. La creación de servidores WebSphere, conexiones a bases de datos e instalaciones de aplicaciones se automatizó mediante secuencias de comandos shell, Perl y Jython. Para hacerse una idea del trabajo implicado en toda la migración, tuve que migrar varias de las aplicaciones desde ATG Dynamo/Solaris a WebSphere/AIX.
  • Seguros
    octubre de 2005 - mayo de 2006
    Ejecución de pruebas de carga en varias aplicaciones web mediante Grinder 3. Desarrollo de secuencias de comandos Jython para la sincronización de los clientes de pruebas de carga y la parametrización con datos de prueba. Análisis de rendimiento (profiling) mediante YourKit de aplicaciones web que se ejecutan en Tomcat 4.1.x y JBoss 4.0.x. Creación de varias secuencias de comandos shell y Perl para depurar aplicaciones web en Solaris 8. Implementación de procesos de transferencia de archivos mediante SSH. Configuración de una solución permanente para análisis de registros web utilizando Sawmill 7.2.x.
  • Banca
    mayo de 2005 - septiembre de 2005
    Mejora de la arquitectura técnica de una aplicación web destinada a la financiación de construcciones. Configuración y administración esporádica de los servidores de aplicaciones (JBoss 3.2.x e IBM WebSphere 5.1). Resolución de problemas relativos a cookies, HTTP/S (con certificados), comportamientos incompatibles del navegador, bloqueos de bases de datos (base de datos universal DB2 de IBM), tráfico de la red, rendimiento de Java, conflictos con versiones y distintos comportamientos específicos de cada entorno. Asesoramiento para incrustar subprogramas Java en Internet Explorer utilizando las políticas de seguridad estándar de la empresa.
  • Banca
    febrero de 2005 - abril de 2005
    Creación, configuración, despliegue y administración de complejas aplicaciones J2EE destinadas a la banca digital. El servidor de aplicación empleado fue ATG Dynamo. Asesoramiento para la integración segura y sin interrupciones de una aplicación web de otro banco en Internet.
  • Sistema de información geográfica (GIS, por su sigla en inglés)
    septiembre de 2003 - agosto de 2004
    Desarrollo de varias aplicaciones GIS utilizando Python y OpenGL. La plataforma objetivo empleada fue Windows, con énfasis en la entrega profesional de los programas como archivos ejecutables instalables. Para esta tarea desarrollé un proceso automático de creación de builds.
  • Industria del vidrio
    abril de 2003 - julio de 2003
    Creación de una aplicación destinada a calcular la transmisión de la luz y valores similares en unidades selladas con varios acristalamientos. Esta aplicación se desarrolló con el lenguaje de programación Python. La apariencia nativa de la GUI en Windows y Linux se desarrolló utilizando wxPython. El despliegue profesional en Windows se hizo con InnoSetup. La instalación y los textos descriptivos de la aplicación fueron completamente internacionalizados (en alemán, inglés y francés). La visualización e impresión de las hojas de datos calculados en una forma atractiva se realizó utilizando el formato PDF. Comunicación entre cliente-servidor en el protocolo HTTP compatible con todos los tipos comunes de servidores proxy.
  • Banca
    noviembre de 2002 - marzo de 2003
    Introducción de una aplicación groupware (Wiki) para crear y mantener la documentación relativa a la creación, despliegue y administración de complejas aplicaciones J2EE destinadas a la banca digital. Creación de eficaces y sostenibles secuencias de comandos shell y Perl en Solaris destinadas a la configuración, instalación y administración de una aplicación J2EE, incluyendo complejas cuestiones como el enlace a las CPU. Análisis de CLASSPATH de la aplicación J2EE en ejecución por medio de una secuencia de comandos Perl autoescrita. Desarrollo e integración de un módulo web J2EE para inspeccionar archivos de registro en sistemas de desarrollo y de pruebas utilizando Eclipse e Intellij IDEA. Despliegue ya listo para su ejecución de los profilers de Java OptimizeIt, JProbe y JProfiler para realizar el análisis de rendimiento (profiling) en remoto de la aplicación J2EE en Solaris desde Windows NT. Asesoramiento en materia de medidas necesarias, posibilidades y consecuencias de transformar una aplicación J2EE rígida en servicios web independientes.
  • Banca
    octubre de 2001 - noviembre de 2001
    Análisis de rendimiento (profiling) de una aplicación Java-Swing destinada a gestionar contratos de arrendamiento utilizando OptimizeIt. Implementación de medidas encaminadas a mejorar el rendimiento y la reacción de la aplicación cliente (utilizando, por ejemplo, un patrón de diseño). Modificación de un programa cliente destinado a generar cargas en el servidor de aplicaciones basado en Java. Implementación de medidas para mejorar el rendimiento (como guardar en la memoria resultados calculados con anterioridad) en la parte «servidor» de la aplicación. Evaluación cuantitativa de los controladores JDBC de Oracle (thin, OCI) con distintos ajustes de configuración en la herramienta de asignación de objetos relacionales TopLink (por ejemplo, BatchWriting, ParameterBinding). Análisis de secuencias de comandos SQL registradas utilizando secuencias de comandos autoescritas con Python y documentación sobre instrucciones de rendimiento críticas. Transformación de sentencias SQL registradas en una aplicación JDBC y en una secuencia de comandos SQL ejecutable para medir el respectivo overhead de CORBA, la red y el controlador JDBC.
  • Banca
    enero de 2001 - septiembre de 2001
    Reescritura del software de una aplicación de corretaje para que se ejecute en ATG Dynamo en lugar de en IBM WebSphere. Creación de descriptores de despliegue compatibles con J2EE de servlets y Enterprise Java Beans (EJB) y configuración de las conexiones de bases de datos asociadas. Implementación de un proceso de desarrollo y creación, incluyendo formación a los desarrolladores en herramientas de depuración y en IDE Kawa. Soporte a desarrolladores en problemas técnicos relativos al proceso de desarrollo, herramientas y el sistema de control de versiones Continuus. Configuración, ejecución y despliegue de las builds de la aplicación.
  • Gestión de conocimientos
    septiembre de 2000 - diciembre de 2000
    Introducción de métodos y herramientas encaminados a mejorar el proceso de desarrollo de software y la formación a los empleados. Análisis y modificación de programas Java y secuencias de comandos por lotes con objeto de facilitar el despliegue. Análisis de la capa de persistencia (ObjectStore) basada en ODBMS y transferencia de conocimientos a otros desarrolladores. Nuevo desarrollo del proceso de creación de builds automático utilizando la herramienta de creación basada en XML Jakarta-Ant y secuencias de comandos por lotes de Windows NT. Evaluación de varias herramientas para la gestión de la configuración, así como la introducción y administración de una herramienta de SCM (StarTeam). Formación a los empleados en el uso de StarTeam. Configuración de StartTeam para que lo puedan utilizar desarrolladores desde varios emplazamientos. Creación de builds automáticas por lotes para proyectos en Visual C++ 6.0. Extensión de las configuraciones «InstallShield for Windows Installer» para el despliegue del software en Windows 2000. Documentación sobre la build, el despliegue y las pruebas del software utilizando MS Word 2000.
  • Banca
    julio de 2000 - septiembre de 2000
    Refactorización de programas Java generados de forma parcial para la importación de un conjunto de datos en una base de datos Oracle8 utilizando VisualAge (a través de JDBC y SQL*Loader). Control secuencial de varias secuencias de comandos SQL y programas Java utilizando el shell Korn (ksh) de Unix. Perfeccionamiento del rendimiento efectuando en paralelo importaciones de datos parcialmente dependientes y un programador dinámico de trabajos escrito en ksh. Instalación de un servidor de Sun Enterprise con particionamiento de disco, creación de cuentas de usuarios y configuración de NFS. Instalación y configuración de herramientas para la monitorización de la red y del sistema. Creación de secuencias de comandos Perl para la comprobación automática de problemas de migración entre PL y SQL en materia de completitud y en relación con los atributos transformados. Depuración de programas PL/SQL. Análisis de rendimiento (profiling) del servidor de aplicación basado en Java utilizando JProbe en Solaris y Windows NT para mejorar el rendimiento y el uso de la memoria. Mejora en el rendimiento de la aplicación mediante la reescritura del software para que se ejecute en JDK 1.3 en lugar de en JDK 1.1.
  • Transporte y logística
    agosto de 1999 - mayo de 2000
    Mantenimiento y desarrollo de un software para un centro de atención telefónica basado en Java/Oracle7. Creación de un concepto que extiende el marco de trabajo (framework) Java existente con aspectos de CRM. Conversión de varios subprogramas MSIE en una aplicación Java pura y coherente. Integración de DCOM y Java para generar cartas personalizadas usando Mail Merge en Word 97. Integración de un explorador web puro de Java para visualizar páginas HTML estándar desde dentro de la aplicación. Introducción de un concepto e implementación de pruebas de regresión en Java basadas en JUnit. Creación de varias secuencias de comandos shell de Unix para importar datos en Oracle7 usando SQL*Loader. Extensión de un programa de C++ que genera listas (con Oracle Pro*C). Extensión de documentos de Word 97 utilizando campos y macros de combinaciones. Implementación de secuencias de comandos Perl destinadas a documentar las dependencias jerárquicas de documentos de Word 97 como informes HTML.
  • Agencia de créditos
    mayo 1998 - mayo 1999
    Creación del modelo de datos, esquema de bases de datos y consultas SQL en ESQL/C (Informix) para una aplicación de evaluación de créditos que utiliza fuentes de información indefinidas. Implementación de secuencias de comandos Perl encaminadas a realizar ingeniería inversa del código base existente de programas en C y del modelo de datos asociado.
  • Industria de la preimpresión
    diciembre de 1997 - marzo de 1998
    Análisis, diseño e implementación orientados a objetos de un marco de trabajo (framework) de comunicación en Java 1.1 para una aplicación distribuida destinada a inspeccionar y controlar en remoto máquinas de ajuste de imágenes para láminas de impresión en conexiones con poco ancho de banda. (Muestras de trabajo del código fuente y de la documentación de este proyecto disponibles a petición).
  • Medios digitales
    julio de 1997 - diciembre de 1997
    Desarrollo de un sistema cliente-servidor con conectividad de bases de datos (Informix) para la generación dinámica de anuncios objetivo en páginas web de terceros. La implementación se realizó en C utilizando sockets UNIX, subprocesos POSIX, módulos de Informix Datablade, así como en ESQL/C para las consultas SQL. Creación espontánea de ataques (hacks) en servidores Apache y Squid para rescatar a los servidores de bases de datos de las cargas que se realizan en la hora pico del almuerzo.
  • Medios digitales
    diciembre de 1996 - marzo de 1997
    Creación de varias aplicaciones gráficas como subprogramas Java. Visualización de mapas de vectores (GIS) desde varios formatos (2D y 3D) en un estilo visualmente agradable, parecido a imágenes realizadas con un aerógrafo.

Proyectos personales

  • Transporte público
    julio de 2007 - abril de 2008
    Creación del mashup (aplicación web híbrida) de Google Maps trom.fr que busca las conexiones de metro más rápidas entre dos localizaciones arbitrarias en la región de París (Francia). Este sitio se creó utilizando Python/Django, JavaScript, AJAX, jQuery.

Formación universitaria

Universidad de Bielefeld
octubre de 1991 - junio de 1997
Licenciado en ciencias informáticas con énfasis en ciencias naturales. Se trata del equivalente en EE. UU. al Máster en Ciencias Informáticas.

Copyright © 2016 Michael Krause