A picture of me.

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:

  1. providing a white-label, B2B application for managing fitness and welness studios;
  2. a B2C SaaS offering of an e-commerce focused link-in-bio;
  3. 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.

Technologies Used
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):

Technologies Used
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.

Technologies Used
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.

Technologies Used
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.

Technologies Used
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.

Technologies Used
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.

Technologies Used
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.

Technologies Used
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.

Technologies Used
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.

Technologies Used
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.

Technologies Used
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.

Technologies Used
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.

Technologies Used
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.