Like what you see here?
João Cabrita
kewne@protonmail.com
Professional Experience
zezam
August 2021 — Current
I joined zezam to lead the Backend engineering team (2 people full-time + 2 part-time); the role involved setting up and evolving the team’s processes, notably:
- the implementation of a mostly async communication process, which gave engineers time to focus on development;
- establishing a weekly sync meeting to organize engineering efforts across the engineering teams (Frontend and Backend);
- supporting the company’s business by estimating feature complexity and suggesting alternatives or new features based on technical capabilities.
The company worked in fully remote fashion and, during my time there, pivoted through several business models:
- providing a white-label, B2B application for managing fitness and welness studios;
- a B2C SaaS offering of an e-commerce focused link-in-bio;
- a B2C SaaS offering to make affiliate marketing more accessible for social media influencers.
My most notable technical contributions to the product were:
- an ordering system, which allowed both payment systems (PayPal and Stripe) as well as product types to be introduced as plugins;
- a subscription management system, based on Chargebee;
- an accounting ledger to track user earnings, as well as the batch processes to ingest the data from partner APIs.
Name | Usage |
---|---|
Java | Heavy |
Spring Boot | Heavy |
Gitlab | Heavy |
OpenCraft (Trial)
May 2021 — June 2021
I trialed at OpenCraft. During this time, I (among other things):
- added support for developing an internal application using Docker;
- upstreamed a fix for a grading bug in Open edX;
- upstreamed a feature in Open edX comprising frontend and backend;
- documented known issues and fixes/workarounds for running tools in Apple Silicon;
- ran a discovery on how to optimize setting up databases for new Open edX instances.
Name | Usage |
---|---|
Python | Heavy |
Django | Heavy |
Javascript | Heavy |
React | Heavy |
Ansible | Heavy |
Docker | Medium |
Redux | Medium |
Open Publishing
May 2019 — April 2021
I was the first Open Publishing hire for a newly founded team based in Faro, Portugal. As a team lead, I was responsible for:
- collaborating on HR matters related to the team (hiring, procuring office space, etc.);
- coaching team members in both technical areas and soft skills;
- being an individual contributor to both technical design and implementation.
I worked remotely for this role in the local team of 3 people, which was part of a larger team of 10 people, spread across 3 locations.
My contributions included:
- supporting some of the production infrastructure and almost all of the non-production one, including:
- Elasticsearch clusters;
- MySQL databases;
- Docker Swarm Clusters;
- Secret management and rotation (certificates and passwords);
- User accounts;
- Monitoring (Prometheus);
- developing and supporting Python-based services;
- bug fixing in the core C++ application;
- designing and implementing CD pipelines using Gitlab.
Name | Usage |
---|---|
Python | Heavy |
C++ | Medium |
Javascript | Light |
React | Light |
Docker Swarm | Heavy |
Ansible | Heavy |
Online Retail Company (through Polarising)
March 2019 — May 2019
The project aimed to develop a couple of production-ready services which would also function as blueprints for other services developed in the future.
I worked mostly remotely in a 2 person team, with the exception of a few in-person meetings with the client.
My contributions included:
- reviewing the recently created Kubernetes cluster;
- developing a pair of services to produce and consume a Kafka stream, running on Kubernetes;
these included:
- high unit and integration test coverage;
- CI automation
- scripts for facilitating developer workflow (e.g. starting dockerized Kafka instances and mock databases), fully documented;
- writing a guide on Kafka topic design and error handling for messaging-based services.
Name | Usage |
---|---|
Java | Heavy |
Spring Framework | Heavy |
Spring Boot | Heavy |
Spring Integration | Heavy |
Kubernetes | Heavy |
Kafka | Light |
RegTech Company (through Polarising)
January 2018 — February 2019
This project’s main focus was modernizing the company’s applications and delivery processes. It also included ensuring GDPR compliance and preparing for security certification.
I worked remotely for this project, as part of a team of 6 people.
My contributions included:
- designing much of the standard automated delivery process;
- implementing several micro-services for integrating with third-party services;
- implementing a new, major service for case management.
Name | Usage |
---|---|
Java | Heavy |
Spring Framework | Heavy |
Spring Boot | Heavy |
Kubernetes | Heavy |
Google Cloud Platform | Heavy |
CircleCI | Heavy |
Cassandra | Light |
MongoDB | Light |
Mobility Company (through Polarising)
April 2017 — July 2017
This project aimed at building a development platform for a mobility focused, micro-service based Software-as-a-Service.
I contributed by defining part of the architecture and deployment model as well as the continuous delivery process.
I also implemented a service for managing and executing workflows.
Name | Usage |
---|---|
Java | Heavy |
Spring Framework | Heavy |
Spring Boot | Heavy |
Kubernetes | Medium |
MongoDB | Medium |
Camunda BPM | Medium |
Business Intelligence Company (through Growin)
July 2015 — March 2017
This project focused on replacing a legacy reporting application that was having trouble scaling.
A key part of the project was replicating information from an RDBMS into a scalable webservice, which would become the data backbone for both the new reporting application and other future client facing products.
Name | Usage |
---|---|
Java | Heavy |
Spring Framework | Heavy |
Spring Boot | Heavy |
Kubernetes | Heavy |
Cassandra | Medium |
MongoDB | Medium |
Online Betting Company (through agap2)
January 2015 — June 2015
This project was a continuation of the Italian site project and aimed at evolving the platform to improve the breadth of betting choices for italian customers.
Instead of temporarily relocating to Porto again, I worked remotely most of the time and travelled there every fortnight for planning and other meetings.
I also made my first contribution to an open-source project in this scope.
Name | Usage |
---|---|
Java | Heavy |
Spring Framework | Heavy |
Banking Software Company (through agap2)
January 2014 — November 2015
This project revolved around modernizing much of the company’s outdated software infrastructure, specifically in terms of application front-end development and delivery practices.
I helped design and create a framework prototype for front-end development, using Servlet-based Java for the server-side and Javascript (angular.js) on the client-side. I also implemented most of the Continuous Integration infrastructure for developing, testing, and deploying a sample application using the framework described above, using Ansible and XLDeploy.
Name | Usage |
---|---|
Java | Heavy |
Javascript | Medium |
Ansible | Medium |
Online Betting company (through agap2)
July 2013 — December 2013
The project’s goal was to replicate the company’s current international website user experience in its italian website.
In this scope, I helped develop some of the backend web services used to integrate the italian betting regulator’s platform with the company’s own platform.
Backend service development was supported by three teams, two in Porto (one of which was my team), and another in the United Kingdom, in a Scrum environment.
In spite of having had to temporarily relocate to Porto for the project, this was a fantastic project to work with. The company had a great work environment, coupling really friendly people with a very well maintained office, all the while keeping a high technical standard.
Name | Usage |
---|---|
Java | Heavy |
Spring Framework | Heavy |
Coreworks
March 2012 — June 2013
At the beggining of 2012, following my interest to work in embedded systems, I took the opportunity offered to me by Coreworks to work for them as a software engineer.
The team had five software engineers and three hardware engineers, for a total of eight people. The company was kicking off a project for a major electronics company, eventually selecting me as software team leader to organize software development efforts and allow the company’s administrators to focus on management.
During this time, at my suggestion, the company adopted some elements of Kanban to help support its development activities. In the scope of this project, I was also required to provide customer support.
Besides being involved in the company’s core audio codec development (particularly on the frontend), I implemented automated build, test and delivery procedures and managed much of the IT infrastructure.
Name | Usage |
---|---|
C/C++ | Heavy |
Ruby | Medium |
Telecommunications company (through NetPeople)
September 2011 — February 2012
This project was for a major company in the field of telecommunications, developing a Java application for Network Management. Specifically, I worked as part of one of the development teams, totalling twelve people.
The company I was in was adopting Agile development methods (Scrum) and this was my first contact with that methodology. I thus became very interested in Agile methodologies, eventually serving as a facilitator in some of the team’s retrospectives. This position also provided me with the opportunity to study the larger-scale automation and quality assurance processes that were put in place.
Unfortunately, I did not have the chance to work on features and my contributions were mostly on maintenance tasks, fixing bugs and writing unit tests. Besides working on those tasks, I developed a Java web application which queried the project’s bug tracker periodically to update and display some statistics on the team’s performance.
Name | Usage |
---|---|
Java | Heavy |
Deloitte
February 2010 — August 2011
My first professional experience was at Deloitte, working part-time on a Java Web-based Customer Relationship Management application as part of a team of three people. The internship provided me with lots of learning opportunities on the basics of application development and business in general. My main contributions to the project during this time were on the technical level, specifically bug fixing.
After six months as an intern, Deloitte hired me to work full-time for them on the same project. My time in this position allowed me to further my learning in application development and also my soft skills, since I became involved with feature development and had to deal with our users, mostly to do requirements’ analysis and present prototypes. Besides fixing some more bugs, I developed parts of the billing module, in particular the provisions’ related features.
Towards the end of my colaboration with Deloitte, I was responsible for the development of REST webservices meant to be consumed by a mobile application being developed by another team, as well as SOAP services to interact with a middleware solution, also being developed by another team.
Name | Usage |
---|---|
Java | Heavy |
Spring Framework | Heavy |
Hibernate | Heavy |
Academic Experience
-
Languages
- Japanese
- JLPT N5
- English
- Business English Certificate Higher, University of Cambridge
- Graded B (Council of Europe Level C1)
-
Technical Certifications
- Core Spring 3.0 Certification
- SpringSource
- MongoDB Certified Developer Associate Exam - #591445094
- MongoDB University
-
College
MSc Electrical and Computer Engineering — Instituto Superior Técnico
September 2004 — October 2010
Graduated from the 1st cycle of studies with an average of 14 out of 20 points.
Graduated from the 2nd cycle of studies with an average of 16 out of 20 points.
As a requisite for the Master of Science degree, wrote and defended the thesis "Brain-Computer Interfaces".
-
Others
- Member of the Algarve Toastmasters Club since October 2022
- Toastmasters International
Talks/Publications
RoguEST API: A comparison of API design styles
Geek Sessions — 24th February 2023
I discuss the properties that arise from designing the same API in two different design styles:
- the conventional style, which I call "OpenAPI" style
- a style that applies the REST constraints more strictly, the "hypermedia" style
Coding, Fast and Slow
coding earth — 6 June 2020
In this talk, based on Nobel laureate Daniel Kahneman's book about the human brain's two modes of thinking, I discuss how they influence programming practice. Through code examples, I then propose strategies to improve your programming by taking advantage of each of modes.
See the recording on Youtube.
X things to improve on REST APIs
Geek Sessions Faro — 15 March 2019
This was a presentation for the local tech community about often misunderstood aspects of REST API design, as well as a few patterns and ideas I've come up with while designing and implementing.
The Electrical Engineer in the labor market
JEEC 13 — 12 March 2013
This is a presentation I made for the Electrical Engineering Days at Instituto Superior Técnico. It presented my professional experience thus far and my views on how electrical engineering graduates fit into the labor market and the kinds of questions one could ask when trying to choose a job.