Sobre mi Carrera Profesional
Me gusta definirme como un amante de las Tecnologías digitales y de la Información. Sobre todo cuando se trata de desarrollar projectos desde cero. Todo comenzó en 2002 (¡hace ya 17 años!) como un programador sin experiencia, pero con muchas ganas de aprender, y he ido evolucionado hasta convertirme en Jefe de Ingeniería.
Conocí el framewrok Ruby on Rails en 2005 (versión 0.9.x). Cuando empecé a desarrollar, me di cuenta de que había encontrado una herramienta y metodología muy potente, y la incorporé rápidamente. Pero no podía imaginar el impacto que ha terminado teniendo en mi carrera.
En toda mi carrera profesional he estado involucrado en proyectos de diferente índole, usando diferentes leguajes, tecnologías y gestores de base de datos.
Tengo experiencia en todas las fases de la implementación de un proyecto: Análisis, Diseño, Desarrollo, Testing, Despliegue y Evolución Contínua.
Soy partidario de usar Metodologías Agile para planificar y organizar un proyecto, aunque siempre intento de ajustar la metodología al equipo con el que trabajo, para maximizar la productividad.
También tengo experiencia en Sistemas, sus requisitos e instalación de software necesario. He usado varios Proveedores Cloud y conseguido solucionar diferentes problemas de escalabilidad.
Actualmente, tengo el privilegio de utilizar mis conocimientos y experiencia en una organización sin ánimo de lucro, cuya misión es promover la educación y la lectura mediante la tecnología, Worldreader. En mi rol como jefe de ingeniería, estoy a cargo de todos los servicios (API's y Back-Office) que dan soporte a diferentes aplicaciones móviles (propias y de terceros) con la ayuda de un magnífico equipo situado en Barcelona y Accra (Ghana).
Experiencia Profesional
Worldreader es una ONG cuya misión es conseguir un mundo donde todos tengamos acceso a la lectura. Mediante la tecnología es posible ahorrar los costes de hacer llegar material de lectura de calidad a zonas rurales en países en vías de desarrollo.
Disponemos de diferentes aplicaciones Android (como por ejemplo Worldreader) con una colección gratuita de más de 30.000 libros en 43 idiomas.
Así mismo, tenemos proyectos desplegados en países como Ghana, Kenia, Sudáfrica, India, Jordania, entre otros. Cada uno de ellos con necesidades diferentes, en entornos rurales con poca conectividad que nos obligan a desarrollar e implementar soluciones originales y eficaces para hacer llegar nuestros libros mediante Tablets.
Junto con un pequeño equipo de 4 integrantes, situados en Barcelona y Accra, nos encargamos del mantenimiento y desarrollo de las API's que dan servicio a las diferentes aplicaciones móviles y a clientes de terceros.
He estado dirigiendo un proceso de reingeniería de los sistemas, preparando una base que nos permita implementar rápidamente las cambiantes necesidades de la organización, así como crecer y escalar en usuarios. Enfocándonos en buenas prácticas como:
- Cambiabilidad del código fuente
- Integración contínua
- Arquitectura de microservicios
- Monitorización de los sistemas
Nuestro Stack actual está formado por:
- NodeJS
- Angular 7
- PostgreSQL
- AWS (CodePipeline, CodeBuild, Elastic Beanstalk, RDS, ...)
Junto con un excelente equipo de entre 6 y 8 miembros, desarrollamos una plataforma móvil de marketing y publicidad no intrusiva para ser embedida en aplicaciones Android y iOS, así como en webs móviles.
Esta plataforma identificaba cada usuario único de la App o Web y servía contenido exclusivo en forma de un Bandeja de entrada.
Conseguimos tener un máximo de 70 millones de usuarios, procesando una media de 3.000 peticiones por minuto, con picos de uso de hasta 20.000 rpm.
Toda la plataforma se controlaba desde un backend donde se podían segmentar los usuarios por más de 50 filtros diferentes, crear mensajes multimedia y publicarlos a dichos usuarios, obteniendo informes detallados de cada campaña.
Seguimos una Arquitectura basada en Microservicios, creando varios servicios pequeños permitiendo solucionar cada uno de los retos encontrados. Usando:
- Diferentes lenguajes de programación: Ruby, Java y Elixir
- Diferentes gestores de Base de Datos: MySQL, PostgreSQL y MongoDB
- Diferentes protocolos de comunicación API: HTTP y RabbitMQ
Todo esto se desplegó en Amazon AWS, usando varias instancias pequeñas, balanceando las peticiones y usando autoescalado para absorver los picos de uso. Utilizamos Jenkins como herramienta de compilado y despliegue de cada servicio. En definitiva, fuimos capaces de construir una solución robusta, escalable y eficiente en costes.
En este proyecto, mis funciones fueron:
- Gestionar al equipo multidisciplinar y los diferentes proyectos, priorizando tareas de cada miembro.
- Planificar los proyectos y entregables utilizando metodologías Agile.
- Analizar los diferentes retos encontrados y, junto con las aportaciones de mi equipo, tomar decisiones técnicas clave para solucionarlos.
- Reforzar el uso de TDD (Desarrollo basado en Tests).
- Desarrollo y mantenimiento de la mayoría de nuestros servicios Ruby y Java.
- Informar a negocio de la evolución de los proyectos y obtener requisitos y feedback.
Para más información sobre la plataforma visita www.iadbox.com.
Qustodian es una App móvil (para iOS y Android) que permite recibir Anuncios y Ofertas personalizadas y remunerar a los usuarios por ello.
En la industria de la publicidad online existe un gran número de intermediarios sacando provecho de nuestros perfiles digitales sin nuestro consentimiento ni control.
El objetivo de Qustodian es custodiar los perfiles de los usuarios, para servir solo anuncios consentidos y que aporten valor, dando el control a los usuarios de lo que quieren ver y, por último, bonificarles por ver dicha publicidad, como señal de agradecimiento.
Mi rol en este proyecto era el de analizar, desarrollar y mantener el Backend de la plataforma usando Ruby on Rails y MySQL, desarrollando complejas funcionalidades. Empecé siendo el primer técnico de la empresa, y terminamos siendo un equipo de 6 desarrolladores, estando siempre involucrado en la toma de decisiones técnicas clave.
Para más información sobre la App Qustodian visita es.qustodian.com.
Programador principal en una pequña empresa, ofreciendo soluciones técnicas, especializada en Streaming de Video en Móbil, comunicación SMS e ingestión y transformación de XML.
Situémonos en la época pre-Smpartphone, con una gran cantidad de diferentes dispositivos, pantallas pequeñas y lenta conexión a internet. El iPhone (1ª generación) acababa de salir, disponíamos de plataformas como Nokia (Symbian), Blackberry, SonyEricsson y muchos más.
Nos dedicábamos, sobretodo, a construir web móviles, sirviendo el contenido más adecuado de imágenes y vídeos ajustándonos al tamaño de las pantallas y velocidad de conexión. Cuando en esa época el término Responsive todavía ni existía.
A continuación un listado de proyectos que he desarrollado:
- Plataforma de envío de alertas y de encuestas mediante SMS, integrándonos con varias APIs para envío y recibo de SMS, conseguimos elaborar encuestas completas, enviando pregunta por pregunta mediante SMS, reciviendo las respuestas y analizándolas programáticamente para decidir la siguiente pregunta. Desarrollado en Ruby on Rails.
- Desarrollo un sistema de plantillas, capaz de crear fácilmente webs móviles con contenido exclusivo de imágenes y vídeos. Todos los vídeos eran codificados usando ffmpeg y servidos mediante Streaming o Descarga progresiva. Se crearon varias webs, incluyendo canales de TV y adaptando todo tipo de páginas de vídeos para ser visualizadas desde el móvil. Desarrollada en Ruby on Rails.
- Desarrollo de una herramienta para combinar 2 vídeos (codificados en 3gp) en un solo vídeo en tiempo de ejecución. Se utilizaba para insertar dinámicamente anuncios antes de los vídeos con contenido. Algo parecido a lo que hacen Youtube y muchas otras plataformas a día de hoy. Desarrollado en C.
- Desarrollo del Backend para iSports, una App para iPhone, que mostraba resultados en Tiempo Real de varios eventos deportivos. Básicamente, consumía miles de datos XML y los transformaba usando XSLT. Desarrollado en Ruby on Rails.
- Desarrollo del portal http://myfanflash.com donde se permitía a los usuarios seguir y obtener noticias y actualizaciones de varios deportes, ligas, equipos y/o jugadores. El contenido se obtenía mediante la ingestión de miles de feeds RSS, era procesado e insertado en una base de datos Solr (de tipo documental). Desarrollado en Ruby on Rails.
Otras responsabilidades:
- Mantenimiento de los servidores Linux e instalación del software y librerías, preparando los servidores para nuestras aplicaciones en producción.
- Instalación e integración del Darwin Streaming Sever, permitiendo servir vídeos mediante Streaming RTSP.
- Gran conocimiento de la herramienta de codificación de vídeo ffmpeg.
Sadiel es una Consultora de IT, en ese momento disponían de más de 400 empleados técnicos. Formaba parte de un gran equipo de desarrollo y mantenimiento de proyectos para la Generalitat de Cataluña.
Desarrollando con Java J2EE, usando un framework específico para la Generalitat llamado openFrame, basado en Struts, Spring y Hibernate.
Tuve la oportunidad de integrar Lucene (herramienta de indexado y búsqueda documental) usando Hibernate, permitiendo usar esta utilidad en varios proyectos.
También estuve a cargo de la formación de programadores Junior.
Proyectos
A continuación incluyo una corta lista de proyectos Open Source que he desarrollado o en los que he participado de alguna manera.