I’m Joan
Software Engineer at Margo Bank
We are building a new bank for small and medium businesses,
centered around humans, using top-notch
tools and technology.
desk Created with Sketch.
 

Skills
I’m a passionate coder who strives to write clean, tested, high-quality code. I’m also a hobbyist designer who seeks pixel-perfect UI and seamless UX. I strongly believe in user‑oriented products and fast feedback loops.
Backend • • • •
Elixir, Java, Scala

Web • • • •
React, AngularJS, SASS

iOS • • • •
Swift, Rx, Cocoapods, Fastlane

Android • • • • •
Kotlin, Rx, Dagger, Retrofit

Design • • • • •
Sketch, Photoshop
 

Work

15 years ago I started crafting community websites as a kid. I now have an engineering degree and 6+ years of work experience. Here are some of the projects I’ve been working on.
 
Margo Bank
Backend Web Android iOS
2017 - Now
Margo Bank

2017 - Now

We are currently building a new bank for small and medium businesses, from scratch.

Our goal is very ambitious and all the team is very talented.

We’re all working full-stack, from the product definition to the implementations, backend, web and mobile.

You can find more information here.

Also, we’re hiring!

Hertz 24/7
iOS
2016 - 2017
Hertz 24/7

2016 - 2017

I worked on two distinct subjects on the Hertz 24/7 iOS app.

  • In-app vehicle condition
  • Remote car opening using BLE

Aside from these topics, I chose to raise the overall maintainability of the app. It was a seven years old app, with multiple targets — Flexicar is built from the same source code —, no continuous integration, no clear branching model, no test, and a singleton based architecture. There was a lot to do so I focused myself on five main aspects.

  • Continuous integration using Jenkins and Fastlane
  • Continuous delivery to Beta and the AppStore
  • AppStore screenshots generation using UI tests and Snapshot
  • Refactoring out of a singleton based architecture
  • Tests of all business rules in a separate framework with no dependency

I learned a lot during this experience. Enabling in-app vehicle condition was a UX challenge, and the BLE communication library was a really good case for TDD/BDD. Eliminating the many obstacles in the beta/release process was really fulfilling. Working with legacy code and its large technical debt can be a frustrating experience, but it sharpened my skills at separating concerns, and taught me once again the importance of tests.

Memori
Design iOS
2016
Memori
2016

Memori helps people stop forgetting what matters to them using gamification. Memori is my first iOS app, you can read more about my transition from Android to iOS here.

Livetouch Apps
Design Android
2015 - 2016
Livetouch Apps
JCDecaux, Paris
2015 - 2016

Livetouch is a set of 42” Android-powered screens integrated into urban furnitures like kiosks and bus shelters. In the context of expanding the platform to a lot of new cities, I designed and developed multiple applications to quickly adapt to each cities and provide useful information.

  • A launcher app customizable with news feed, twitter, weather, and a list of apps
  • A twitter app designed specifically for Livetouch
  • An RSS app allowing cities to quickly display any content on their Livetouchs
  • A weather app with a 3-days prediction on an interactive temperature curve
  • A transport Widget displaying next bus stops at the top of the screen
  • A map app showing points of interest and directions to get there
  • An indoor map prototype app to show directions inside malls
Créabri
Design Android
2015
Créabri
JCDecaux, Paris
2015

Créabri is a tablet app to help JCDecaux agents collect in-depth details about bus shelters on the field and provide the city with the most accurate answer for a renewal contract. I designed and developed it from scratch. Technically, the biggest challenge of this app was its offline capabilities and reliable synchronization. It’s mostly based on RxJava and a reactive storage.

ConnectCity
Design Web Backend
2015
ConnectCity
JCDecaux, Paris
2015

ConnectCity is a web app allowing the city of Paris to visualize on a map the state and maintenance operations of all JCDecaux street furnitures in Paris. I designed and developed the front end, and part of the backend.

Guillotine
Android Web Backend
2015
Guillotine
JCDecaux, Paris
2015

Guillotine is an automated testing platform for Android applications. It manages multiple connected devices through ADB, and tests APKs by installing them on the device and monitoring RAM, CPU, leaks, crashes, etc.. while smartly simulating touch events or reproducing a pre-recorded touch scenarios. Technically, this project was a good fit for me, it required Android skills to know how and what to test on APKs, backend skills to properly architecture the server side and web skills to generate an appealing administration board with many graphs and reports.

Midpic
Android
2014
Midpic
Redmill, Paris
2014

Midpic is a social app to engage conversation with people using a playful mechanism based on fair trade of selfies. I developed the Android application, working alongside with two iOS developers to make the app available on both platforms. I learnt a lot from Candyshop and I developed AsyncService to help me develop it faster.

S02
Design Android Backend
2014
S02
2014

S02 helps keeping track of the progress in multiple TV shows. I designed and developed this minimalist app with subtle animations, backed by a cloud backend made with Parse.

Tracker Prototype
Android
2014
Tracker Prototype
Avalanche Tech Group, Australia
2014

I developed a proof of concept for an Android app that would track suspicious usages of the camera or microphone and alert the user. The challenge was to bypass the Android platform restrictions to track the camera, microphone and GPS usage from other apps. I used the Groovy language on this prototype instead of Java, which was much more readable for all IO operations.

Candyshop
Android
2014
Candyshop
Redmill, Paris
2014

Candyshop makes seduction sweeter and funnier. I developed the Android application from scratch, catching up on the iOS app started months before me. I mainly used Androidannotations and Spring REST template, I wrote a lot of custom animated components like radio buttons, partially blurred pictures, pictures swipe view, etc…

Design My App
Design Android Web Backend
2014
Design My App
eBusinessInformation, Paris
2014

Web tool to quickly generate a fully working Android app displaying data on a map based on open data services or CSV files. I designed and developed the initial website using AngularJS, and the backend written with Spring and RESTEasy. The backend includes an Android application generation engine, which generates apps based on the user selected data and settings.

Memory Map
Design Android
2013 - Now
Memory Map
2013 - Now

Memory Map helps users with insufficient disk space to remove their biggest files through an interactive view. This app made me go through the whole lifecycle of a product on my own. I went from the initial idea to the final release, including the design, development, communication and monetization. Technically, I learnt a lot about the Android Canvas API and rendering optimization, which is crucial for creating graphically unique animated custom components.

JCDecaux Developer
Design Web Backend
2013
JCDecaux Developer
JCDecaux, Paris
2013

All of JCDecaux bike-sharing data made available to all developers through a dedicated website and API. I designed and developed the website with AngularJS and a Java/Spring backend. I managed user registration, API key generation, the interactive documentation for developers and an administration interface.

VuzZz
Design Android Backend
2012
VuzZz

2012

Winner app of the Global Android DevCamp 2012 Paris (48h-hackaton), it gives a rating to any place, based on the density and quality of public services around it. I worked both on the server side — Play Framework, hosted in the cloud —, and on the Android side.

Livetouch Platform
Design Web Backend
2011 - 2013
Livetouch Platform
JCDecaux, Paris
2011 - 2013

Livetouch is a set of 42” Android-powered screens integrated into urban furnitures like kiosks and bus shelters. In the context of expanding the platform to a lot of new cities, I designed and developed multiple applications to quickly adapt to each cities and provide useful information.

I designed, developed and deployed in production a distributed system with many actors:

  • A real-time administration interface written with GWT
  • A distributed server with webservices based on Spring
  • An Android service running as root on all devices
  • MQTT brokers for real-time communications
  • Cassandra databases for usage stats and logs
  • A MySQL database for relational data
Capico
Android Backend
2011
Capico
eBusinessInformation, Paris
2011

A digital workbook for a class of student, with lessons and exercises, and real-time feedback for the teacher. I developed the Android application from scratch with another developer, as two others developed the iOS app. Also worked on the server side, used TDD, written unit and functional tests on both server and Android sides.

2011
Polytech Nantes
Engineering School
 
More
Social links
     

Blog
http://blog.joanzapata.com

Given trainings
AngularJS and Responsive Design at eBiz, Paris 2014
Java/JEE at ISEP, Paris 2012
Android at eBiz, Paris 2012
Java/JEE at EPF, Paris 2011

Certifications
Principles of Reactive Programming COURSERA 2013
Functional Programming Principles in Scala COURSERA 2013
Certified Professional Java Programmer ORACLE 2012
Engineering Degree POLYTECH NANTES, FRANCE 2011

Side work on Open Source
3400 Iconify OWNER
2300 PDFView OWNER
1700 Base Adapter Helper OWNER
340 AsyncService OWNER
36 String Format OWNER
5 Simple Mapper OWNER

Last read books
Elixir in Action SAŠA JURIĆ
Programming Elixir 1.3 DAVE THOMAS
RxSwift PILLET, BONTOGNALI, TODOROV, GARDNER
Growing Object-Oriented Software, Guided By Tests FREEMAN, PRYCE
Domain Driven Design Quickly AVRAM, MARINESCU
The Pragmatic Programmer HUNT, THOMAS
Clean Code ROBERT C. MARTIN
iOS Programming THE BIG NERD RANCH
The Lean Startup ERIC RIES
Gradle In Action BENJAMIN MUSCHKO
Effective Java 2 JOSHUA BLOSH
Head First Design Patterns FREEMAN, ROBSON, BATES, SIERRA
Android Programming THE BIG NERD RANCH
 

Contact me