Personal Summary

15 years+ experienced software engineer mostsly focused on Scala/Java/Kotlin (JVM) solutions. I'm an enthusiastic polyglot and fast learner capable of leading, mentoring, or working with a team to help deliver business value. I worked in startups and large companies so I understand the importance of delivering solutions to provide value and not over engineer while releasing good high quality software.

Skills & Proficiency

Backend

Haskell Scala Java Kotlin Typescript

Devops and tooling

AWS Docker Kubernetes Linux

Frontend

Typescript React React Native Redux

Mobile

Android iOS Flutter

Work Experience

Software engineer - SiriusXM

08/2022 - Present
Valencia, Spain (Remote)
Working in the commerce team of SiriusXM. Developed microservices to manage orders, subscriptions and entitlements.
  • Worked in an event driven, highly scalable and global system built from scratch. Used AWS cdk, dynamodb, lambda, kinesis
  • Stripe integration as a payment system and subscription manager
  • All microservices made use of Scala 3 and cats effect, having built everything using tagless final
  • Built libraries to made the code more correct at typelevel such as NonEmptyString, PositiveInt, Interval
  • Built a library with a typeclass that sends tracing data to datadog automatically
  • Built macros to auto derive typeclasses, ie Arbitrary of scalacheck
  • Built a custom e2e test suite running on docker + localstack that tests almost in a e2e manner the whole service without deploying in aws and mocking external dependencies
  • Made use of aws smithy to define and implement api contracts

Software engineer - Habito

10/2020 - 07/2022
Valencia, Spain (Remote)
Worked in a crossfunctional crew that took care of 2 Haskell monoliths and a few microservices adding up to one million lines of code using a custom CQRS + ES solution
  • Develop & maintain complex credit policy rules that accept/reject mortgages based on customer's data
  • Designed a restful API to integrate Habito's affordability calculations with a 3rd party vendor
  • Identified a gap in internal tooling and built a few web forms to make the operations team autonomous
  • Designed and coordinated processes to update mortgage products (application state) in production without downtime
  • Created a lot of documentation around the different subdomains on the lending platform
  • Provide training/support to peers to get onboarded on the team quickly

Technical Lead - Lookiero

05/2020 - 10/2020
Valencia, Spain (Remote)
Worked in a full stack team while promoting XP practices and delivered features
  • Developed and architected the customer referral system
  • Developed a full landing page with a tight schedule
  • Worked on components and screens that worked on both react and react native
  • Introduced some functional programming style on one of the Java BEs to help with some complex domain modeling
  • Trained team on feature toggles and how to develop in a trunk-based development style
  • Organized Haskell sessions on the reading club to help distribute functional programming knowledge across teams

Software engineer - Habito

01/2019 - 05/2020
London, United Kingdom
Worked as part of the brokerage crew(s) to deliver features while adapting for the 1st time to a real production system built using Haskell
  • Extracted three services within the same subdomain out of the monolith
  • Worked closely with the operations team to get as much knowledge as I could about affordability calculations
  • Deployed ingress for Kubernetes to allow inter-cluster communication

Software Craftsman - Codurance

01/2017 - 12/2018
London, United Kingdom
Codurance provided me with an environment to grow and develop as a professional. Since the beginning, I needed to work with different crews with different programming languages at different locations.
  • Developed a few web apps using React + JS and Typescript
  • Developed an article search engine using elastic search
  • Provided internal talks on Functional programming in Scala
  • Provided training on TDD & Testing for M&S (UK)
  • Provided an intro to AWS for Mango (Barcelona)

Android craftsman - Novoda

02/2016 - 12/2016
London, United Kingdom
Worked in a strong XP practices environment. Worked solely for the Channel 4 app
  • Developed & architectured the whole My Channel 4 experience from scratch
  • Introduced full integrated tests running against different real mobile phones
  • Developed a good amount of features using outside-in TDD
  • Developed Rx workflows within the application to handle android activity state(s)

Android developer - IG

10/2015 - 02/2016
London, United Kingdom
Worked on the main IG stock trading app
  • Rearchitectured the way the application handled state since there were memory leaks around
  • Introduced a good amount of unit/integration tests to cover the main workflows
  • Coordinated work across the different teams (India and Poland)

Android developer - Moni

05/2015 - 09/2015
London, United Kingdom
Worked on the Moni currency exchange app
  • Rebranded the application with a completely different style using the material design guidelines

Android/iOS developer - Selltag

05/2014 - 05/2015
Madrid, Spain
Worked as the sole Android developer
  • Architectured and written the application from scratch alone
  • Followed the clean architecture principles to make an extensible app
  • Introduced unit/integration tests
  • Introduced a CI pipeline to build android artifacts
  • Gather requirements from stakeholders and architect technical solutions along with implementation details
  • Maintained crash-free users of the app at around 99.7%
  • Delivered versions every 1-2 weeks since the beginning

Android/iOS developer - Movilok

11/2011 - 05/2014
Madrid, Spain
Delivered a lot of features and multiple mobile apps
  • Architectured and written from scratch the Android app BBVA (Spain)
  • Architectured and written from scratch the Android app BBVA Compass (USA)
  • Delivered a major version of the Android app BBVA Vivienda (Spain, real estate)
  • Architectured and written from scratch an Android Twitter client that measures user's influence
  • Created chart components for BBVA Research (iOS) using canvas
  • Created custom components from scratch using canvas to make animations more performant

Android/iOS Developer - Ocelabs

04/2011 - 07/2011
iOS and Android app development

Java developer - everis

01/2010 - 05/2011
Valencia, Spain
Worked on the 'Orion Clinic' project. A hospital management application that's managing a few hospitals in Valencia
  • Worked with Java swing, Websphere 6/7
  • Worked on a query migrator at the runtime that translated JDO to JPA
  • Worked on the performance of database access that was degrading vastly the experience

Developer - edinn

03/2009 - 01/2010
Valencia, Spain
Worked on the main edinn app
  • Migrated a visual basic 6 application to php + javascript
  • Worked on the main edinn app written in Java + Swing

Developer - Grupo Intecformat

09/2008 - 02/2009
Valencia, Spain
Web developer

Projects

dotfiles - My system configuration, among some scripts and utilities
timebox-evo-api - This projects spins an API to control a Divoom Timebox Evo via bluetooh. Uses TS + fp-ts
Simracing DIY wheels - Created two wheels from scratch with my 3d printer, some arduinos and my soldering iron.
FxCalendar - Discord bot written in JS that publishes the economic events and market performance for the day in a discord channel
Clean contacts - This is not a library, this is a sample implementation of Clean architecture in Android. Currently I'm working with this architecture and I think the code becomes well structured, decoupled and maintainable, in summary, it follow the SOLID principles. This is a sample repository that I used in my talk “My way to clean Android”. It has around 60% code coverage and uses Travis CI to run the unit/instrumentation tests

Publications

Droidcon Madrid 2015
Introduction to Clean Architecture on Android
Introduction to Clean Architecture on Android