Publications

Build reactive, concurrent, and responsive Kotlin applications

Coauthor, to be published Packt on 2020, ISBN : 9781789535013

Build reactive and cloud-native microservices with Kotlin using Spring 5 and Spring Boot 2.0.

Author, published by Packt on 2018, ISBN : 9781788471459

Want to learn Kotlin Native? This JVM-free tutorial shows you step-by-step how to create and run Kotlin Native.

Author, published by jaxenter on 2017, article

What’s better than Kotlin? Serverless, perhaps? If you can’t decide between the two, here’s a tutorial for you.

Author, published by jaxenter on 2017, article

Programming video games can be easy. How-to book with simple explanations and numerous examples.

Code contributions & credits, published by Alfaomega • Ra-Ma on 2002, ISBN : 9701507150

Experience

Santander Technology, UK

Technical Architect • Nov, 2018 — Present

Design technical architectures for product teams that help them create a technical solution, this includes diagrams that illustrated the various components on the architecture and how will be deployed and interact with the infrastructure, additionally providing some UML diagrams that helps the team to understand the intention on the solution.

Working alongside enterprise architecture to guarantee that the architecture principles are meet in the design, and reviewing that best practices, such domain driven design and others, are followed.

Collaborating with the infrastructure teams to assure that their needs are cover when design the different components of the solution.

Occasionally review some of the project artifacts, including code, to help with the implemented solution.

Alongside my architecture function I participate in many of the inner communities, and create the engineering community for Santander UK that tries to help the teams to find a common place to learn together, arranging meetups and helping members to learn and grow. And having a graduate as a mentee that I help to develop further.

Using Visio, Draw.io, Powerpoint, Java, Kotlin, NodeJS, Python, C++, Go, Groovy, Ansible, Spring, Spring Boot, Spring MVC, Spring Cloud, Spring Cloud Config Service, Spring Data JPA, Spring Security, Spring Cloud Gateway, Maven, JUnit, Selenium, JMeter, Postgresql, NuoDB, Oracle, Kafka, RabitMQ, Redis, Sentinel, Mongo, Nginx, Logstash, Elasticsearch, Npm, React, AngularJS, LoopBack, Express, Jenkins, Docker, Podman, buildah, Harbor, Nexus, SonarQ, Kubernetes, OpenStack, OpenShift, Kibana, JIRA, Discourse, Confluence, RocketChat, Microsoft Teams and many other tools / technologies depending on the product.

Some of the architectures that I've been working on:

  • Cards Authorization using a SAGA pattern
  • Strong Customer Authentication via biometric identification
  • Confirmation of Payee on Online & Mobile Banking, Branches and Contact Centre
  • Open Baking for Corporate Customers
  • Bulk Payments for Corporate Customers
  • Authentication and Authorization from modern applications

Santander Technology, UK

Technical Coach • Nov, 2017 — Oct, 2018

Coaching product teams within the organization to help them adapt new technologies and ways of working, participating in the hand-ons experience within the teams doing pair programming, code reviews, or just developing new software with them, but as well participating in all the ceremonies, such sprint planning, stand-ups, three amigos reviews, show and tells, retrospectives etc.

Introducing new concepts such Value Stream Maps, inceptions, personas & actors, and helping the product team as whole, including the product owner, and tech lead, how to handle non-functional requirements and technical debt.

Helping to design and architect the solution including the required technologies for each product depending on their requirements and, and helping the team to understand how to make decision to produce lean software.

Using Spring, Spring Boot, Spring MVC, Spring Cloud, Spring Cloud Config Service, Spring Data JPA, Maven, JUnit, Selenium, JMeter, Postgresql, RabitMQ, Redis, Sentinel, Mongo, Nginx, Logstash, Elasticsearch, NodeJS, Npm, React, LoopBack, Express, Jenkins, Docker, Harbor, Nexus, SonarQ, Kubernetes, OpenStack, OpenShift, Kibana, JIRA, Pivotal Tracker, Discourse, Confluence, RocketChat, Ripple.

  • Award winning application, Online Mortgage
  • Award winning application, OnePayFX international payments trough Ripple

Santander Technology, UK

Technical Lead • Apr, 2015 — Oct, 2017

Develop, designing and architect the new Santander UK mobile banking application, designed to be a cloud native application that could be up to the edge of technology for delivering the best in class experience for our 4M customers.

Responsible as Senior Engineer to develop the main backend components and helping the team to archive it potential. We worked as a product team using agile methodologies, mainly scrum based but with some bit of XP.

Stablish a backend guild for learn together with other teams. Creating internal meetups and katas to further spread the knowledge.

Using Spring, Spring Boot, Spring MVC, Spring Cloud, Spring Cloud Netflix (Eureka, Zuul, Hystrix, Turbine, Feign), Spring Cloud Config Service, Spring Data JPA, Zipkin, Sleuth, Maven, JUnit, JMeter, Postgresql, RabitMQ, Redis, Sentinel, Nginx, Logstash, Elasticsearch, Docker, Harbor, Nexus, Kubernetes, OpenStack, OpenShift, Kibana, JIRA, Confluence, Slack, InVision, Zeplin, Draw.io, Adobe Analytics, Crashlytics.

  • Cloud Native
  • Highly Available
  • Application Hardening, Arxan
  • Certificate Pinning
  • Strong Customer Authentication, base on FIDO
  • Asymmetric Cryptography
  • Mobile Version Control
  • Multiple Version of backend / application live at the same time

Santander Technology, UK

Solutions Engineer • Dec, 2014 — March, 2015

Working as Solutions Engineer for the newly create department of Solutioning in Santander UK, created for helping in the digital transformation to adopt new technologies and agile ways of working, designing and developing PoC that could be reuse to deliver new solutions, using Python, Pandas, scikit-learn, NumPy, nltk, Java, Spark, Hadoop, Hbase, Shell Scripting, perl, tck, RHEL, OpenStack.

  • Complaints Classifications based on Natural Language Processing
  • Customer Insights based on Expending Habits

Santander Technology, UK

Online Banking Lead • Feb, 2014 — Nov, 2014

Manage the complete Online Banking channel in Santander UK, responsible to delivery the digital plan for improve the digital service offering to our customers. Working with 20+ teams between the different applications teams and software labs.

  • Online Banking Facelift, redesign
  • Cahoot Facelift, matching OLB
  • Customer Alerts
  • Customer Secure Message
  • eDocs
  • Credential Management

ISBAN, UK

IT Programme Manager, Online Channels • Dec, 2012 — March, 2014

Manage the IT programme for deliver the PayM, mobile to mobile payments, into Santander UK online channels, coordinating off-shore development teams with the local delivery teams, assisting the architects to design the correct solution and managing the project budget.

  • Online Banking
  • Mobile Banking
  • Contact Centre
  • IVR, telephone banking

ISBAN, UK

Project Manager • October, 2011 — November, 2012

Design and deliver the software solution for migrating 2M Santander UK existing business banking customer from MBB, My Business Banking, into the new Santander UK Business Online Banking with an online migration journey helping them into the transition, using Rational Rose, IBM WAS, IBM RAD, Clearcase, DB2, Oracle, Control-M, Trusteer, RSA, RHEL, LDAP, IBM MQ, MS Project.

  • Online and Batch Migrations
  • Setup One Time Password
  • RSA Migration
  • Fraud Profile Creation
  • Bulk Payments
  • MI & Reports on the migration status

ISBAN, UK

Project Manager • Jan, 2010 — November, September 2011

Design and deliver several Santander UK online banking applications, managing the software lifecycle from requirements and off-shore development into the deployment and support of the applications including CSA, using Rational |Rose, IBM WAS, IBM RAD, Clearcase, DB2, Oracle, Control-M, Trusteer, RSA, RHEL, MS Project.

  • Faster Payments, Standing Order, Direct Debits
  • PSD / PSR implementation
  • Pay Credit Card with Debit Card
  • Card Statements, Replacement, Pin Management
  • Santander UK Business Online Banking for SMEs

ISBAN, Spain base on UK

Project Manager • Feb, 2007 — Dec, 2009

Manage and design Several application for ISBAN, Santander software company, in the recently acquired Abbey National, integrating the mortgage sale offering from into Santander, migrating the legacy system into new sales process that are handle by global back offices. Coordinating the development teams in Spain and the Local team in UK that design and deliver the solution, using Rational Rose, WSAD, BankSphere, in-house Santander J2EE solution based on EJB and JSP with IBM connectors to mainframe transactions, additional usage of DB2 and Oracle.

  • From a manual system in an BPM managed process
  • Migrating from dozen of legacy system into Santander
  • UML designs of all process and modules

Ibermatica, Spain

Technical Project Manager • Nov, 2005 — Jan, 2007

Develop, architect, design various software solutions for Telefonica Mobile using UML, Borland Together, J2EE, EJB, WebLogic, Visual Age, JBuilder, TOAD, Test Director JSPs, Struts, HTML, JavaScript, jQuery, Service Builder, Tuxedo, Oracle 8, ASP.NET, Unix (Aix), MicroStrategy, MS Project.

  • Distribution System
  • Orders and Supplies
  • Desktop client for branches

Ibermatica, Spain

Team Leader • Feb, 2005 — Oct, 2005

Develop, architect, design a new software solution for Vodafone, one the biggest mobile network providers in spain, that help manage and design their mobile network. Coordinating the development team and managing the business requirements using UML, C++, Tuxedo, PSQL, Visual Basic, WebLogic, J2EE, Sybase, Embarcadero, XML Spy, Unix (Sun & Digital), MS Project.

  • Configure an optimizing GSM, DCS & UMTS networks
  • Supporting Ericsson, Siemens & Nortel Devices
  • Network planning with an GIS

Ibermatica, Spain

Software Architect • Aug, 2002 — Jan, 2005

Develop, architect, design and support an C/S application that type concurrently hundred of transactions into a set of IBM 3270 terminals for Telefonica, using UML, Visual C++, COM/DCOM, IBM 3270 simulation, sockets, MFC, OLE DB, MS SQL Server, UML, datagrams, DES, gzip, SNA.

  • Remote Deployment & Client Version Control
  • Network Compression and Encryption
  • Task Scheduler for ETLs and housekeeping
  • Application logic defined on XML
  • Plugable modules using DLLs

IECISA, Spain

Software Engineer • Aug, 2000 — Jul, 2002

Develop, architect and design eCommerce solutions for IECISA as the Store front for El Corte Ingles, one of the biggest department stores in Spain, using Rational Rose, UML, HTML, JavaScript, XML, ASP, ADO, MS SQL Server, DB2, CICS, IMS, MTS, SNA, J2EE, EJB, JSP, JDBC, CORBA, RMI, JNI, Visual Age, Clearcase.

  • Online Travel Reservations
  • Payments
  • Tickets
  • Shopping Basket

Global Teleworking, Finland

Cross-Teams Engineer • March, 2000 — Jul, 2000

Develop and deployment of software solutions create by Global Teleworking Spain Labs into the various finish clients, becoming a bridge between the Spanish and Finish teams.

  • Lab System, Thermobio Group
  • Securitas
  • Proha Oy
  • Nokia

Global Teleworking, Finland

Software Engineer • March, 1999 — March, 2000

Developing applications and third party components in Helsinki, Finland, for different clients, using C++ Builder, Sysbase PowerBuilder, PCVS, Test Director, IIS, Visual C++, ISAPI, COM, ASP, Visual Basic, Web, WAP.

  • Embedded Software, Drivers, and Desktop Client for Lab System, Thermobio Group
  • FSB, Trade Stock Market Solution by Proha Oyj
  • eMail & SMS gateway for Proha Oyj

True Balance, Spain

External Game Framework Engineer • Aug, 1997 — Sep, 2004

Game Frameworks design and development for the Gaming Software company True Balance, with Watcom C/C++ & Visual C++ using Win32 API, Direct X, OpenGL, and 3dfx Glide.

  • Data Compression and Packing
  • Sound Engine
  • Input Controller
Some of the titles that used that framework where
  • Cyberlaw, published by Dynamic Multimedia
  • War Times, published by Strategic First
  • Karting Racing, self-published by True Balance

True Balance, Spain

Publishers Engagement • Aug, 1997 — Nov, 1998

Marketing and Publisher Engagement for the Gaming Software company True Balance during the 1997 & 1998 ECTS, European Computer Trade Show,

Freelancer, Spain

SMEs Solutions Engineer • Aug, 1994 — Jan, 1996

Design, develop & support custom solutions for SMEs using Cobol, dBase, Clipper & Delphi.

  • Inventory Management
  • Video Rentals
  • Shares Trading

Education & Training

Advance Microstrategy • 2006

Ibermatica, Madrid

Design and optimization of applications using Microstrategy, generation of fact tables, views, prompts, and reports. Administration of Intelligence Server, creation of ETLs and design of cubes with OLAP services. 40h

Object Oriented Java Programming • 2001

IBM, Madrid

Programming of business applications in java using Sun and IBM tools. 65h

Advanced Java Programming • 2001

IBM, Madrid

Advance development on Java using CORBA, RMI, JNI, etc. 55 h

Java Development with XML • 2001

IBM, Madrid

Develop Java application that uses XML, focus on internet. 45h

UML Design • 2001

IBM, Madrid

Design of applications and software using UML. 25h

Developing J2EE applications • 2001

IBM, Madrid

Design applications, components and services using J2EE. Patterns for EJBs and deployment on application servers. Using IBCM CICS connector. 50h

Developing Distributed Applications in Visual Basic • 2001

Microsoft, Madrid

Develop distributed application using COM / DCOM & Microsoft Transaction Server. 45h

Technical Specialist in Business Software • 1993

I.E.S. Politécnico Jesús Marín, Malaga

Side Projects

Machine Learning

Game ML is an experiment to apply machine learning to create a different recommendations algorithm, instead to be based on what people like it uses natural language processing to find similar item that people speak in similar manner, regardless of how they like that item.

The algorithm is quite effective and is able to find items categories without training them.

The example use a game reviews database but has not been update in years.

Examples:
https://dev.juan-medina.com/game/network/203
https://youtu.be/N5yxbBx-sz4

PoC and Examples

Example for learning new technologies and tools, includes several repositories with more than 200 stars on github together

Open Source Game

An under development Open Source Game with a Physics engine than run on Windows, Mac, Linux, Android and iOS

Open Source Components

Open Source Components for handling security on reactive applications, currently includes only a reactive certificate pinning implementation done fully in Kotlin

Docker Kotlin

Simple Docker for creating FaaS in apache OpenWhisk using Kotlin native

Docker Machine Learning

Simple Docker container to produce machine learning rest APIs

Skills

Developer Languages

I've developed with several languages during my career, but the ones I've used more are

  • Java
  • Kotlin
  • JavaScript/ECMAScript
  • TypeScript
  • C/C++
  • C#
  • Go
  • Python
  • SQL
  • Bash

Tools

This are the tools that I use more often

  • IntelliJ IDEA
  • Visual Studio
  • Android Studio
  • XCode
  • VSCode
  • PyCharm
  • HTTPie
  • Postman
  • Slack/Rocket Chat
  • JMeter
  • Jenkins
  • Travis/CircleCI
  • Selenium
  • Docker/Podman/Buildah
  • Minikube/Kubectl
  • NPM
  • WebPack
  • Grunt
  • Bower
  • git, git-duet, gitflow
  • Maven/Gradle
  • Conan
  • Make/CMake
  • Jenkins
  • Sonar
  • ESLint
  • OpenStack
  • OpenShift
  • PCF
  • Windows, Linux/Unix, MacOS, Cygwin, WSL
  • Draw.io
  • Mermaid
  • Confluence
  • Jira/Pivotal Tracker

CI/CD

I've deliver and created continuous integration and continuos delivery solution during my career, including creating reusable pipelines, libraries and meta pipelines for others teams to use.

Agile

I'm an Agile practitioner and have done mostly scrum and XP and focus on lean principles, but this vary depending on the maturity of the team that I've work with.

Testing

I prefer to use TDD to deliver the best quality software and I've done many types of test during my career

  • Unit Testing
  • Integration Testing
  • E2E Testing
  • UI Testing
  • Contract Testing
  • Smoke Testing
  • System Testing
  • Performance Testing
  • Security Testing

Coaching

I'm a capable coach and mentor and I try to help the teams that I work with to improve and grow, even when not formal mentoring or coaching is required, but trying not interference with the mechanics or ways of working of the team.

Outside Interests

  • Gaming, developing and playing
  • Music, live or just listening
  • Traveling, as far as I can as often as I could
  • Movies, including classics
  • Literature, as well Writing