Mi historia como programador   open programming technology

He programado toda mi vida. A los 13 años en Basic en el Sinclair ZX81; a los 15 en Pascal en el Osborne 1 de mi padre (con CP/M; usábamos Supercalc como hoja de cálculo, y Wordstar para editar textos). Después en C, usando el estupendo Turbo C 2.0 de Borland en un 80386 que debió costar 400.000 pesetas. Mi primer programa en C++ fue un CAD hidráulico, que permitía definir un circuito en un fichero de texto, hacía los cálculos de dinámica de fluídos, y lo dibujaba.

El primer programa que vendí, en C++, fue un interfaz para un controlador que diseñamos para la máquina de test de cascos de Idiada. Mi padre hizo la electrónica, yo el programa que la controlaba y que mostraba en pantalla las curvas de los acelerómetros y hacía los cálculos según la normativa.

Hacia el 95 descubrí Linux, y pasé innumerables horas instalando Slackware a partir de los veintipico discos en los que lo podías encontrar. A menudo no conseguía que las X-windows funcionaran, y acababa programando en modo terminal, con varios terminales virtuales, editando en Vi y compilando con gcc.

Después llegó el Perl. Mi mayor proyecto en Perl fue Yads, un sistema de documentación basado en XML que publiqué como código abierto en Mayo de 2000. Da un poco de vergüenza ver aquel código. Acabaron siendo muchos miles de líneas, y la última versión ya era Perl orientado a objetos; pero no debería haberlo basado en XML. Yads y otro programa que hice por esa época, Autodoc, generaron muchos miles de páginas web tanto en HP como fuera.

Hacia 1998 empecé a usar Perl escribir aplicaciones online. La primera fue un servicio automático de prensa personalizada: escribí un programa que se bajaba y analizaba las páginas web de los principales periódicos españoles, y construía una página con las opciones que escogía el usuario (por ejemplo, la economía de El País y el Internacional de La Vanguardia). Resolvía la misma necesidad que cubre el RSS, que todavía no se había inventado.

También escribí un repositorio online de marcadores (antes de del.icio.us), un generador de páginas web para inmobiliarias, una web para organización de actividades con amigos, webs para crear blogs, y un prototipo de web para anotar lugares en el mapa y compartirlos como enlaces, notamap.

Hacia el 2000 descubrí Python, y me pareció desde el principio un lenguaje extraordinario. Empecé a hacer lobby, junto con un colega basado en Vancouver, para introducirlo como lenguaje de desarrollo en HP. En 2002 lo habíamos conseguido, yo había sido promocionado, y estaba liderando el equipo de programadores basados en San Diego, Vancouver, Palo Alto y Barcelona, con contractors en la India, que escribió el entorno de desarrollo que todavía está en el corazón de nuestras impresoras y en los ordenadores de los ingenieros de HP en tres continentes. Hoy en día tiene casi 700.000 líneas de código, escritas en C++, Python y Perl. Ha sido mi mayor proyecto y, seguramente, el que más impacto ha tenido.

La experiencia arrancando, liderando y llevando a buen puerto un proyecto de esta magnitud resultó tremendamente enriquecedora, y me ayudó a entender los mecanismos de desarrollo en equipos grandes. La política, que es inevitable y hay que saber gestionar; los grandes egos de los grandes programadores, que hay que cuidar; y los procesos y herramientas que permiten que un desarrollo de esta envergadura acabe funcionando.

Más adelante aprendí Common Lisp. Fue casi una revelación: es un lenguaje y son matemáticas. Desde entonces ha sido mi primera opción, y he escrito muchos miles de líneas en él. Sistemas de análisis y gestión de documentos, librerías para procesar arrays multidimensionales, gestión de fotos.

Hoy en día programo, sobre todo, en Python, en Perl y en Common Lisp. Mi librería Python para hacer cálculos con números con unidades, Magnitude, hace que modelar sistemas físicos sea mucho más cómodo. Desde 2010 programo también en ObjectiveC. Hasta el momento mi único proyecto en este lenguaje ha sido GeoPostr, una aplicación iPhone que guarda notas asociadas a un lugar y un momento, con varias opciones de comunicación con el cloud.

Ahora estoy trabajando en varios programas, como siempre. Pero si necesitas un programador para hacerte una aplicación para el iPhone o una aplicación online, o si buscas mejorar los procesos de desarrollo en tu empresa, no dejes de contactar conmigo. No te garantizo disponibilidad, pero sí que te escucharé.