Sign in

Onfido Tech
Stories from Engineering, Machine Learning, Product and Design at Onfido
Modified photo by Sound On from Pexels

Now, if there’s anything we can all agree on, it’s that 2020 was not a normal year by any means. The world changed, and as the physical world stood still, the digital world accelerated. Our work, personal, and family lives all came crashing together — from figuring out virtual homeschooling to how to navigate the grocery store.

There’s a running joke that it was COVID rather than your CEO or CTO that led your company’s digital transformation this year, and we’ve certainly seen this reflected in the marketplace.

On average, digital offerings have leapfrogged seven years of progress in a…


Co-authored by Mario Cardoso and Andre Rabello.

JS to TS
JS to TS

The Operations Tools team in Onfido handles a lot of repositories. Being “the glue” for manual check processing, the domain is large and vast. Front-end projects were written in JavaScript and while there was some Flow types, they weren’t first-class citizens and were usually either old/unmaintained/wrong or simply missing.

Exactly because we have to context switch so much between different repos, strict types help immensely with code discovery and safety. When the interface between two unrelated files is typed and you only need to change a single one, you no longer need to…


One day I stumbled onto a ticket from the website team that was open for several days. The ticket was for a simple change, to enable file compression.

The comments went back and forth. First we would try something, then we would ask someone else to test. Then they would come back and say it didn’t work. This repeated 3 or 4 times until everyone gave up.

I was confused, the request seemed easy to do. I decided to investigate, and that’s when I found The Beast.

Unraveling The Beast

To understand The Beast, you need to understand what would happen at the…


Modular iOS

Great libraries are ones that are easy to consume. They must be easy to install and use. So how can we make Swift static libraries easy to install and consume?

The installation process depends on how we deliver our static library. There are 2 ways we can deliver a Swift static library:

  1. Deliver the source code to the integrator
  2. Compile it and then distribute the compiled library

This post will focus on the second case.

In this post we will learn:

  • why should you distribute compiled static libraries
  • how to build compiled static libraries using Xcode
  • what are static frameworks…


Over the past few years, we’ve invested significant effort into building better research infrastructure for our team. Building on some terrific open source projects — particularly Kubeflow, an open source ML platform built on Kubernetes — we’ve built a multi-cloud research platform on AWS and Azure that has enabled our research team to both grow in size and ship faster.

Design Requirements

When we started building this platform, we laid out a few core requirements:

  • Simplicity: the platform should be very simple to use by researchers with no prior knowledge about Kubernetes, Kubeflow etc. …


Most apps that we build for iOS rely on some functionality developed and serviced by another provider. For example allowing you to login with Google.

Many apps also rely on data and functionality which is available outside the iOS operating system and on the internet. For example, in the case of a food delivery business we would require a list of restaurants open. Once the user selects the desired restaurant then the menu for such restaurant is required.

You could create a new app. When the restaurants screen is loaded, you call the server endpoint to fetch the list of…


In Figma, if you delete a component from a shared library, every instance of that component in any designs you’ve used it in will link to the last history point that the component existed.

This is great because your designs are very unlikely to break due to components being removed.

This is terrible because deleted components are completely invisible and really hard to detect in more complex designs.

I offer you today, not a solution… (the tools need to implement proper version management for that), but a strategy that may help ease some of the pain and confusion when deprecating…


TPM stands for Technical Program Management — As a function and role we drive the delivery of company objectives through the tech organisation. We do this by leading complex, multidisciplinary and cross functional initiatives.

The move to a microservice architecture for modern tech companies led to the increase in the prominence and popularity of program management expertise over the last 6–7 years. The benefit of this architecture is the increased speed of output and autonomy of teams within a domain. This, however, doesn’t stop an organisation’s leadership team from instigating strategic mandates. Consequently delivering these mandates successfully across distributed teams…


During Onfido’s recent API upgrade project we let the documentation drive the development cycle, leaving us with release ready docs before the final code changes were merged.

This was the first major upgrade to the Onfido API in almost 4 years. During that time the business pivoted from background checking to identity verification so the range of products we offer and their use cases changed a lot. Some of the features, terminology and concepts in the existing API (v2) were no longer relevant, and we were hearing through support tickets and client queries that customers sometimes found integrating with it…


There are already too many Figma plugins available to easily find the hidden gems. Below are five I’ve found increasingly essential in my work at Onfido.

Redlines

Onfido Tech

Stories from Engineering, Machine Learning, Product and Design at Onfido

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store