Career Profile

I like to define myself as an IT and Digital Lover. I began as an unexperienced programmer back in 2002 (17 years ago!) and been evolving since then to an Engineering Manager.

I met Ruby on Rails framework in 2005 (version 0.9.x) and when I started developing with it I realized I had found a powerful Tool and Methodology I felt comfortable with. But I couldn't imagine the impact it would mean to my career.

I've been involved in many different projects, using different languages, technologies and database engines.

I like to use Agile methodologies to plan and organize a project, but I always try to adjust the methodology to the type of team I’m working with.

I have experience in all phases of a project: Analysis, Design, Development, Testing, Deployment and Continuous Evolution.

I also know about system requirements and installation, and have used many Cloud Providers and solved several scalability issues.

Currently, I have the privilege to apply my skills and experience in an non profit organisation, which mission is to promote the literacy and education with technology, Worldreader. On my actual role, I'm in charge of all the API's and Back-office services that support several mobile apps (own and third parties) with the help of an excelent team based in Barcelona and Accra (Ghana).

Experiences

Engineering Manager

2017-Present
Worldreader @ Barcelona

Worldreader is an NGO which mission is to build a world where everyone has access to books. With the use of technology, it is possible to lower costs and deliver quality reading material to rural zones in developing countries.

We have several Android apps (i.e. Worldreader) with a free collection of more than 43.000 titles in 43 languages.

Likewise, we have projects deploid in countries like Ghana, Kenia, South Africa, India and Jordan, among many others. Each one of them with different needs, in rural environments with few or none conectivity that make us develop and implement effective technical solutions to deliver our books through tablets.

Among with a small team of 4 members, based in Barcelona and Accra, we are in charge of maintaining and developing the API's that serve the different mobile apps and third party clients.

I've been leading a re-engineering process of the systems, setting up a basement that allows to quickly implement the constantly changing needs of the org, as well as to grow and scale in readers. Focusing in good practices as:

  • Source code changeability
  • Continuous Integration
  • Microservice architecture
  • System monitoring

Our current Stack is:

  • NodeJS
  • Angular 7
  • PostgreSQL
  • AWS (CodePipeline, CodeBuild, Elastic Beanstalk, RDS, ...)

IT Manager and Lead Programmer

2013-2017
iadbox @ Barcelona/London

Among with an excellent team of between 6 and 8 members, we developed an unintrusive marketing and advertising mobile platform to be embedded in Android and iOS apps, as well as in Mobile Websites.

This platform identified each unique user of the App or Website and delivered exclusive content to him/her in the form of an Inbox.

We had upto 70 million users, processing a mean of 3,000 requests per minute, with peaks of use of upto 20,000 rpm.

Everything was controlled from the backend where one could segment users by more than 50 different filters, build rich media messages and publish them to its users, obtaining detailed reports of each campaign.

We had used a Microservice Architecture, building small services to solve each one of the challenges we were facing. Using:

  • Several Programming languages: Ruby, Java and Elixir
  • Several Database engines: MySQL, PostgreSQL and MongoDB
  • Different API communication protocols: HTTP and RabbitMQ

All this platform was deployed on Amazon AWS, using several small instances, autoscaling when necessary and load balancing requests. All these services were deployed using Jenkins. We’ve been able to build a robust, scalable and cost effective platform.

Specifically, my functions were:

  • Manage the team and projects, prioritizing the tasks of each member of the team.
  • Plan projects and deliverable using Agile methodologies.
  • Analyze and make key technical decisions.
  • Empower the use of Test Driven Development.
  • Develop and maintain most of the Ruby and Java services.
  • Report to Business of the evolution of the projects and obtain requirements and feedback.

For more info about the platform visit www.iadbox.com.

Senior Software Engineer

2010-2014
Qustodian Trust @ Barcelona

Qustodian is a mobile App (for iOS and Android) that is used to receive personalized Advertisements and Offers and remunerate users for it.

In the Internet advertisement industry there are a lot of players making profit of our digital profiles without our consent or control.

The goal of Qustodian is to guard users’ profiles, serve only agreed and meaningful advertisements, give control to the user to what he or she wants to see and pay him or her back as a sign of gratitude for watching the advertisement.

My role in this project was to analyze, develop and maintain the platform's Backend using Ruby On Rails and MySQL, building complex features and communicating through an API with the mobile apps. I started as the first technician in the company, and end up with a Team of 6 developers, being always involved in the key technical decisions.

For more info about Qustodian App visit en.qustodian.com.

Senior Software Engineer

2007-2009
Interfaz Solutions @ Sitges, Barcelona

Lead Programmer in a small company offering technical solutions, specialized in Mobile Video Streaming, SMS communication and XML feed.

Situate yourself in the pre Smartphone era, with many different devices, small screens and the slow internet access. iPhone (1st Generation) had just been launched, we had Nokia (Symbian), Blackberry, SonyEricsson and many other different platforms and devices.

We were building mobile web pages, and serving the most accurate images and videos adjusting to the screen sizes and internet speed, when the term Responsive Design didn’t yet exist.

Here is a list of projects I developed:

  • Alert and polling platform using SMS, integrating with several APIs to send and receive SMS’, we were able to create a full survey sending each question via SMS, receive the responses, analyze them and programmatically send another question depending on the given answer. Developed using Ruby on Rails.
  • Develop a template to build mobile websites, serving video and images, encoding videos for each device using ffmpeg, and serving them via streaming or progressive download. This template was used to build several mobile websites, including TV channels, and other video oriented sites. Developed using Ruby on Rails.
  • Develop of a tool for combining 2 videos (3gp encoding) in 1 at runtime, it was used to dynamically add advertisements to the videos before the real content of the video. Something similar to what Youtube does now. Developed with C.
  • Develop the Backend for iSports, an iPhone app, that showed Real Time scores on various sporting events. It basically consumed plenty of XML data and transform it using XSLT.
  • Develop of the web app http://myfanflash.com where one can sign up to follow and get news and updates of several leagues, teams and players. Accomplished by the ingestion of thousands of RSS feeds, parsing its contents and feeding a Solr (documents) database. Developed using Ruby on Rails.

Other responsibilities:

  • Linux server maintenance, installation of necessary software an libraries, getting them ready for our production apps.
  • Integration of Darwin Streaming Server, allowing to serve our videos via streaming over RSTP.
  • Specialized in ffmpeg encoding tool.

Senior Java Programmer

2007
Sadiel @ Barcelona

Sadiel is an IT Consulting Firm, in that moment it had more than 400 employees. I was part of a big team developing and maintaining different projects for the Catalonian Government.

Developing in Java J2EE using a special framework called openFrame, based in Struts, Spring and Hibernate.

I was able to integrate Lucene search engine into Hibernate inside openFrame framework, this tool was later used in many other projects.

I was also responsible of the training of Junior Developers.

Projects

Here is a short list of Open Source projects I've developed or somehow participated.

Liebre - A Ruby gem that handles RabbitMQ Consumers and RPCs.
Resque Multi Step - A little contribution to support Resque hooks in this Reque plugin.
Sneakers - A little contribution adding headers to messages that entered in the error queue.

Skills & Proficiency

Ruby & Ruby on Rails

Javascript & Node.js

Java & J2EE

HTML5 & CSS

MySQL

PostgreSQL

MongoDB

RabbitMQ

AWS