Jonathan is a skilled and experienced Senior Software Developer with more than 12 years of experience of Java technologies.
Jonathan has architected and designed many pieces of software (from small modules to whole applications) to be highly available, concurrent, performant, scalable, testable and readable.
Professionally, Jonathan has mainly worked on the backend of web applications, as a member of distributed and multi-cultural teams, mostly using the Java language, and a plethora of frameworks and libraries from its ecosystem; but, recently, he has also worked with newer technologies, such as Node.js and Angular.js.


Buenos Aires, Argentina



Node.js AngularJS MongoDB Java Spring REST Maven JUnit Hibernate Linux Design Patterns Mocha.js


Senior Java Developer
Jun 2015 – Present
Spredfast is a social marketing software company that helps marketers manage audience experiences and monitor brand engagement on social networks.
He started as a Senior Backend Engineer and was then promoted to Technical Team Lead. His responsibilities in Spredfast range from maintaining existing Java and PHP applications to coaching and mentoring junior members, and developing brand new microservices using Dropwizard with Java 8, all in a cloud-based environment, powered by Kubernetes, Docker and AWS.
As he has to maintain legacy applications that interact with newer ones, his job is a continuous challenge. In order to continuously improve the company's application stack, he has to figure out the way of connecting both types of applications, the way of covering with tests legacy spaghetti code written in PHP in a zero object-oriented manner, the way of re-thinking these things and producing brand new microservices that provide better scalability and code quality and succinctness, etc.
Senior Software Engineer
Oct 2014 – May 2015
KidoZen is a start-up company based in Miami, USA, that provides Mobile First Enterprise Backend as a Service platform, aiming at making the Enterprise Mobile Applications development experience as simple as possible. His main duties were:
• He worked on the implementation of generic software components (in Node.js) that comprised the company's Enterprise API infrastructure. This effectively enabled mobile application developers to access several backend services (such as Oracle, SAP, MongoDB, Sharepoint, RESTful services, among many others) using just a couple of code lines. • He designed and implemented a very ambitious tool: Kido Scraper, a Chrome extension that helped users to scrape data out of any website. This tool (made using Node.js and AngularJS) ended up generating a CasperJS script that effectively automated this process, enabling dynamic data retrieval from any website, through a user-friendly interface. For more information, please read this document.
• He designed and implemented an architecture that enabled KidoZen users to work seamlessly, even without an available Internet connection in their mobile devices. This solution was based on Node.js and CouchDB, but with the peculiarity that the ultimate datastore where the data was supposed to end up in, could potentially be anything: a relational DB, a non relational one, a CMS, such as Sharepoint, SAP, LDAP, Google Drive, etc... • He created automated reports that flagged possible misconfigurations in productive databases. (MongoDB)
• For more information about these tasks, please refer to the docs he created in the documentation center: http://docs.kidozen.com/author/jonathan/
Technologies used: Javascript, Node.js, AngularJS, CasperJS, jsdom, MochaJS, Chai, Istanbul, Winston, LoDash, Express Framework, Chrome Extensions, Linux dev. environment, Git, GitHub, BitBucket, MongoDB, CouchDB, JQuery, HTML, CSS, etc.
Senior Software Engineer
Mercado Libre S.R.L.
Mar 2014 – Oct 2014
• He worked at the Advertising business unit, where applications solved the problem of delivering context-sensitive ads using complex algorithms and also provided both the business and the final customers with statistics and metrics about the ads print pixels, clicks, conversion rates, etc.
• He developed new features and solutions for a group of applications that had high volume traffic. For some of them, all the traffic was generated from Mercado Libre (hundreds of millions of requests per day).
• He investigated new technologies and frameworks that could help to solve complex business problems.
• He established and formalized quality standards, such as good programming practices, peer reviews, automated code quality and test coverage checks.
• He contributed to the formalization and improvement of the development process, introducing Kanban boards to track the team's work and have a better view of the progress, bottlenecks, blockers, etc.
• He implemented the addition of ads banners on the native mobile applications (i.e. iOS and Android).
• He completed the redesign of the existing solution so it could deal with a high volume of print pixels for ads. He shifted from a single-threaded, synchronous solution to a highly available and scalable alternative, involving multiple decoupled and concurrent components interacting with one another to improve the throughput and overall resilience of the whole system, whilst guaranteeing data durability in the event of hardware failures.
Technologies used: Java 6, Android, ObjectiveC, Cocoa Touch, Mac OS X dev. environment, SSH, Shell Scripts, Git, GitHub, Agile, Play! Framework, Spring, Tomcat, Oracle, MongoDB, Redis, Voldemort, Apache Kafka, Elasticsearch, Slf4J, Maven, SBT, Jenkins, Sonar, JUnit, Mockito, Hamcrest, LambdaJ, H2, JMeter, etc.
Senior Software Engineer
Paddy Power PLC. (Dublin, Ireland)
Aug 2011 – Dec 2013
• He was in charge of the maintenance and development of new features for a set of high-volume, real-time and mission critical trading applications (mostly middleware and backend Java applications). He also developed a web application with low level interactions with pin-pad devices, via Java Applets.
• He helped improving the development process and the quality standards, as he was involved in the modernization and automation of the creation of applications, following Continuous Integration/Deployment principles.
• He contributed to the establishment of good programming practices and common conventions. • He mentored junior members on agile software development methodology and Kanban, which were applied consistently on a daily basis.
• He put into production a greenfield web application that provided REST services, using top notch frameworks and good practices, as well as a built pipeline that supported the concept of Continuous Deployment. He encouraged and achieved full (100%) code coverage on unit tests, 0 code quality violations (Sonar), 0 UAT bugs and 0 production bugs several months after the inception of the application in a productive environment.
• He defined the high level architecture and the low level design, and developed a greenfield application that exposed services to third parties using SOAP, following the aforementioned quality processes.
Technologies used: Java 6 and 7, Linux dev. environment, SSH, Shell Scripts, Agile, Spring, SVN, JBoss EAP, MySQL, Oracle, Informix, Slf4j, Logback, Log4J, Maven, Ant, Jenkins, Sonar, TestNG, JUnit, EasyMock, Mockito, Hamcrest, LambdaJ, JBehave, Thucydides, Spring Security, Spring MVC, Spring WS, Spring DB, Spring Transactions, H2, Tomcat, JQuery, JMeter, Require.js, Backbone.js, Marionnete.js, Underscore.js, Jasmine, CSS, etc.
Senior Java Developer
iRise via Velocity Partners Inc.
Mar 2011 – Jul 2011
iRise is the world's leading provider of visualization software for business applications. His main duties were: interacting with business representatives to refine requirements, and developing new functionalities for both web and desktop applications in Java using Agile software development methodologies.
Technologies used: Java 6, Linux dev. environment, Spring, Spring MVC, Git, SVN, Tomcat, SLF4J, Maven, Swing, Javascript, Jquery, CSS, XML, TestNG, Mockito, Selenium, H2 Database, JIRA, Confluence, Crucible, etc.
Senior Java Developer
Kiha via Velocity Partners Inc.
Oct 2010 – Feb 2011
Kiha Software was a startup created by Paul Allen (co-founder of Microsoft). Its most important product was called “Aro”. The project was dropped for economical reasons. Aro was a client-server application where clients with Android phones communicated with a multi-layered backend completely written in Java. He worked mostly on the backend, more specifically focused on the connectivity layer, interacting with supported external services (Gmail, Google Calendar and contacts, Active Sync, Exchange and IMAP servers, Facebook, LinkedIn, Twitter, etc.) and using their APIs. Technologies used: Java 6, Linux dev. environment, Shell Scripts, Agile, Spring, Git, SVN, Tomcat, Log4J, Maven, Hudson, XML, JUnit, JMock, MongoDB, SwiftMQ, JIRA, Confluence, Crucible, etc.
Technical Team Lead
Sabre Holdings S.A.
May 2008 – Sep 2010
He began working as a Java Senior Developer for lastminute.com. His main duties were: developing new functionalities, maintaining and improving existing applications, and fixing live site issues. He also took part in a massive migration of the complex system of creating some applications from Ant to Maven.
In February 2010, he was promoted to Technical Team Lead in a different team. His main duties were: making sure the code developed by the team reached the quality standards (mostly using code reviews), keeping track of the development in order to flag any risk that may have prevented the team from achieving its goals, supporting several deployments to production, interacting with QA, Business and other areas to help the team fulfil their tasks. He also worked as a developer, designing and coding some user stories. Agile methodology was heavily used in this company.
Technologies used: Java 1.4, 5 and 6, Windows and Linux dev. environment, Shell Scripts, Spring, Perforce, Jboss, Tomcat, Log4J, Ant, Maven, Hudson, JUnit, JMock, EasyMock, Oracle DB, MySQL, PostgreSQL, Informix, Bugzilla, Frontier CMS, XML, XML-RPC, EJB 2, XSL, XSD, JMX, Servlets, JSP, Velocity, Zeroconf, SOAP and REST Web Services, Version One (Agile tool), Struts, Dynamo, etc.
Semi Senior Java Developer and Designer
Caja de Valores S.A.
Jun 2006 – May 2008
He worked in a team that designed and developed two applications from scratch on a modern architecture using Domain Driven Design, with a rich graphical user interface (desktop application) and a multilayered backend (service layer, repository, daos, etc.). His main duties were: understanding the business requirements and translating them into designs; programming the business logic and the GUI, setting up Ant and Maven scripts to build and deploy applications, setting up databases (Dev and QA environments), investigating different tools and technologies that helped to improve the proficiency, etc. He also had to interact (offline) with old mainframe applications.
Technologies used: Java 5, JFace SWT , Spring, Spring Security (Acegi), Spring AOP, XML, Hibernate, CVS, Oracle App Server, Log4J, Ant, Maven, Java Web Start, JUnit, OracleDB, Mantis, Enterprise Architect, etc.
Semi Senior Java Developer and Designer
Aug 2004 – Jun 2006
He worked on a project for Citibank Latin America developing and designing the corporate portal and the home banking; he began using raw JSP's and servlets and then, developed web applications using a custom framework designed by the bank based on Struts. Portals he worked on: Uruguay, Colombia, Peru, Chile and Argentina. He also participated in other Web projects, such as the “Comercio Exterior” for Banco Río, and designed and implemented a highly configurable framework for running unit tests based on "Http Unit".
Technologies used: Java 1.4, Servlets, JSP, HTML, Javascript, Taglibs, XML, Struts, CVS, Websphere, Weblogic, Log4J, Ant, JUnit, HttpUnit, etc.

Frontend, Backend, Full Stack,
JavaScript, Node.js, AngularJS, ReactJS, MongoDB, among others....