Telecommunication Engineer major in Distributed Systems with interest in information technology services. Distributed Computing and large scale systems have become areas I really like to hear about. I am an ambitious Software Engineer with great interest in new problems and challenges. That is why I show a proactive personality where I always train myself in new trends and technologies improving my easiness to grasp technologies.
Software Developer [June 2016 - Present]
Currently working in the Tech department of iZettle in the platform team. Working with Java, Dropwizard, Docker, InfluxDB, Grafana, Splunk, AWs, Docker and Docker clustering technologies for Microservices. We also maintain some critical systems in iZettle that make use of Postgres and Cassandra
Software Developer [February 2014 - June 2016]
During my time at Comeon! I was involved in multiple areas of the system which included several accomplishments:
Building a pipeline for multiple test environments based on Jenkins, Docker & Kubernetes for distributed container management in Google Cloud. This allowed to have immutable, isolated test environments for our teams to test multiple features and automated tests in parallel and remove the contention of teams working on one unique test environment.
Design and implemenation of a microservice to migrate our KYC document storage. Stack included a REST Stateless Webservice in Dropwizard with a replicated MongoDB in GridFS clustering mode in replica sets. In addition, the REST client was implemented with Netflix Hystrix; integration test where setup to work with a mongo DB docker container.
- Tech talks given in the company regarding No SQL databases, Git and Gitlab (See talks section)
- Refactoring of legacy code in parts of the old payment web service API to adapt it to the new frontend payment flow.
- Refactoring and clean of code architecture of mobile application based in Angular JS.
- Server side: Java programming with Servlets, Netflix Hystrix, Tomcat and REST services based on dropwizard.
- Data layer uses mainly MySQL, MongoDB.
- Testing includes Junit and Mockito for mocking.
- Version Control: migrated from SVN to git.
- Process and Tools: Maven & Jenkins, Kubernetes with docker.
Research Engineer [June 2013 - January 2014]
Total months: (8 months)
Technology: Java, Maven, Glassfish, cloud technologies used like Amazon EC2 and Open Stack for prototyping and testing.
- Cluster management interface to allow provisioning a cluster through a web wizard from scratch.
- Implementation of an interface to retrieve deployment progress of a cluster.
- Bundling of an Amazon Machine Image (AMI) with our predefined software to increase the deployment speed.
- Bundling of a Virtual Image for Open Stack to offer the same solution as Amazon EC2.
- Orchestration development for deployment in Bare Metal physical machines.
Master Thesis in SICS [January 2013 - June 2013]
Total months: (6 months)
Thesis Work: KTHFS Orchestration – Platform as a Service orchestration for Hadoop.
Design and implementation of a Domain Specific Language for cluster deployment platform to configure Hadoop clusters in Amazon EC2 and Open Stack cloud infrastructures.
Supervisor: Dr. Jim Dowling, Examiner: Prof. Seif Haridi
- Design orchestration architecture with jclouds, chef and YAML, implemented 2 artifacts based on this design:
- Implemented a web portal using Java Server Faces with Primefaces that configures a web application with a monitoring application, KTHFS Dashboard.
- Integrated orchestration architecture in KTHFS Dashboard that allows deployment of a Hadoop cluster with chef and jclouds from a cluster defined in a YAML file.
- Optimize the orchestration architecture, managed to reduce the deployment time by increasing the throughput through asynchronous Future constructs.
Software Developer [July 2010 - February 2011]
Total months: 9 months
Technology: Primarily Java programming and software development on this language
Degree Master of Science, Software Engineering of Distributed Systems (M.Sc.) [August2011- June2013]
Master student in parallel with my double degree studies which includes Swedish language courses.
Telecommunications Engineering (Equivalent to MSc level accredited by ABET/EAC) [September 2005- June2013]
Double Degree program KTH + UPM, Erasmus exchange program
- Algorithms: Design and Analysis, part 1. Coursera & Stanford University. March 2015.
- Machine Learning. Coursera & Stanford University. Summer 2014.
- Functional Programming in Scala. Coursera & EPFL. Nov 2013.
Since I like to work at all stack levels, I have a large variety of multidisciplinary technical skills which includes:
- Operating Systems: Ubuntu, Windows
- Programming Technologies: Java (Experienced), Go (Adv. Beginner), Python (Adv. Beginner)
- Cloud Technologies: Amazon Web Services (Adv. Beginner), OpenStack Nova(Adv. Beginner)
- Database Technologies: MySQL(Competent), Cassandra(Adv. Beginner), Neo4j(Beginner), MongoDB(Competent)
- Version Control: Git, SVN
- Scripting: Bash scripting (Beginner)
- Other: Docker (Competent), Kubernetes (Competent), Ansible (Adv. Beginner)
Open Source Contributions
Contributing to open source projects from SICS in relation to my old Master Thesis work and time at SICS.
Karamel: Karamel orchestrates the execution of Chef Cookbooks using jClouds. My contribution includes adding preliminary support to Openstack: Project Link
HOPS Hadoop: Hadoop Open Platform-as-a-Service. Project Link
If you want to have a better view of my side projects, I recommend checking out my github account as in here I will have a brief selection of the projects I felt most proud of:
Campaign Optimizer: Here we try to allocate in an optimal manner different campaign schedules so we can maximize the revenue of showing this advertisements. This solution was implemented with a dynamic programming algorithm for the unbounded knapsack problem with some optimizations from S. Mortello’s Knapsack problems book. Code Link
A distributed URL Shortener: What does it need to devise a highly available, scalable and distributed URL shortener? Here I try to implement a web service using Drop wizard in order to attain a service with the previous requirements. The architecture involved implemented a 3 tier layered application by splitting frontend, backend and data in layers. Both frontend application and backend services where implemented. The solution was tested in Amazon Web services using an initial deployment of 2 frontend servers, 3 backend servers behind a load balancer where backend services communicated with Amazon Dynamo, a scalable high performance No SQL DB. Later on, the solution was designed also to work with Cassandra and another test was done by deployment a 4 node Cassandra cluster in Amazon.
I have done multiple talks both internally at my workplace and as a IEEE Volunteer for students & young professionals.
- Containers @ iZettle: Small presentation for an AWS meetup event, it covered how we embraced docker containers in production with ECS at iZettle. We went over the different design decisions we took to setup our infrastructure on Containers and problems we faced when implementing this solution. In addition, we spoke on different improvements that would be great to include in the short term inside iZettle. SlideShare
- Introduction to Distributed Data Processing: Small presentation as an overview to present Spark, Hadoop and Flink as a general picture of the different frameworks with special focus on examples and libraries for Apache Spark. Prezi
- Crash to No SQL: Talk focusing on the No SQL ecosystem focusing on the different data models, CAP Theorem and later on zooming on different database implementations like Cassandra, Riak or MongoDB. Prezi
- Apache Thrift and HTTP 2.0: Informative talk for discussing on possible technologies that could be handy when trying to communicate between our systems in frontend and backend. Google Slides
- Introduction to Git and Gitlab: Presentation to show git and gitlab as a possible transition from SVN. Prezi
- Tech Interview Workshop: Small presentation given to students in order to give them tips of how to prepare and orientate their preparation for interviews in IT companies.
- Career Development Workshop: Small Workshop giving an overview of how life looks like when leaving college and aiming for their first job. To succeed in the workplace and career, new skills will be required to be developed if you want to see your Professional career evolve as you desire.
- Judge IEEExtreme 10.0. Design programming problems for IEEExtreme 24 hour online competition with 6500+ teams worldwide hosted by IEEE.
- Judge IEEExtreme 9.0. Design programming problems for IEEExtreme 24 hour online competition with 6500+ teams worldwide hosted by IEEE.
- Judge and Quality Assessor IEEExtreme 8.0. Design and evaluate programming problems for IEEExtreme 24 hour online competition with 6500+ teams worldwide hosted by IEEE.
- Contestant of IEEExtreme. Part of a 3 member team on multiple editions of IEEExtreme including 6.0, 4.0 and 3.0 . On the last edition our team managed to obtain a Wordwide ranking position 110 and Region 8 ranking position 40.
- Spanish (Mother tongue).
- English (Second language, Professional Working Proficiency)
- Swedish (4 course levels from KTH, up to intermediate/advance level)
- French (Up to Secondary School)