Sixfold Tech Blog

Sign in

Written by Henri Normak

Note: This is a modified version of an internal document we’ve had in place at Sixfold since April 2020.

In our previous post on code reviews, we discussed aspects of code that help ensure its health. In this post, we’ll go further into the process of code review, focusing on the communication aspects and how to keep things effective.

  • Pull Request (PR) — Method for submitting changes to a project. In our context, method for submitting changes to our production environment.
  • Author — Person(s) that are driving the PR, aiming to make changes to the production…

The number of ETAs Sixfold calculates per day has grown steadily to over 7M per day

Written by Taivo Käsper

Sixfold makes millions of ETA predictions daily (see graph above). We described the training of our arrival time prediction model (ML ETA) in our previous Machine Learning blog post. Here we will explain how we deploy trained model to the production and how we scale it.

Sixfold’s tech stack is written in TypeScript, and run on Kubernetes as tens of decoupled microservices, with inter service communication handled by Kafka. Integrating python based ML model into this stack was not a trivial challenge.

Our goal was for the service to require as little manual work and maintenance…


Written by Henri Normak

Note: This is a modified version of an internal document we’ve had in place at Sixfold since April 2020.

This is the first post of two about the code review process at Sixfold. In this post we’ll focus on the aspects of ensuring code health via code review. In the followup post, we’ll discuss the effective communications involved in code review.

Terms & Background

  • Pull Request (PR) — Method for submitting changes to a project. In our context, method for submitting changes to our production environment.
  • Author — Person(s) that are driving the PR, aiming to make changes to…

Written by Dmitri Gabbasov

In this post we are going to explore the reasons why we have chosen TypeScript as our main development language at Sixfold and why we are happy with it.

Thank JavaScript

The seeming omnipresence and the undeniable popularity of TypeScript no doubt owe it to the pre-existing popularity of the language that TypeScript is built upon — JavaScript.

Even before TypeScript came into existence, JavaScript had already been, for a very long time, the only language natively supported by one of the most important interactive content delivery channels — the Web. …


This is the first post in our series about machine learning

Written by Taivo Käsper, Anton Potapchuk, and Maksim Mišin

If asked to describe Sixfold in one sentence, a reasonable answer would be: “We estimate time of arrival for millions of road freight shipments.” The estimated time of arrival (ETA) is the core of our business. We compute millions of ETA predictions daily, and have done so without major incidents for almost four years.

Initially we were mostly relying on various heuristics, but in the last year, we have switched over to a machine learning model that has worked without…


DataLoader streamlines requests from multiple sources to batched database queries
DataLoader streamlines requests from multiple sources to batched database queries
DataLoaders are useful for batching all kinds of read/write operations to databases

Written by Henri Normak

In our previous posts, we’ve talked about improving performance by streamlining processing and by minimising the overhead in libraries such as node-postgres, this time, let’s dive deeper into how we’ve reduced our database queries (both read as well as writes) to a minimum.

DataLoaders?

The original concept of DataLoaders, as described in the repository, came from Facebook in 2010:

… A port of the “Loader” API originally developed by @schrockn at Facebook in 2010 as a simplifying force to coalesce the sundry key-value store back-end APIs which existed at the time. At Facebook, “Loader” became one of…


Written by Jaan Oras

Last time we wrote about how we scaled our services 10x over the course of 30 days. In this post, we’ll dive deeper into one of the more interesting technical improvements we achieved — optimising the way dates/timestamps are handled between the database and application layers.

While profiling one of our services, we noticed that postgres date parsing was taking a substantial amount of CPU, well over 20%. Even though this service loads a lot of time series data, it was still quite surprising to see the amount of CPU cycles it spent parsing dates. This…


Written by Henri Normak, Benjamin André-Micolon and Tõnis Pool

A map of transports processed by Sixfold in the month of September in 2020
A map of transports processed by Sixfold in the month of September in 2020
Transports processed by Sixfold, Sept 2020

At Sixfold we provide real-time visibility for supply chains, you can read more on sixfold.com.

This is the first post in a series, where we will dig deeper into how we ensure scalability of our service and the technical challenges involved. Follow us on Medium to get notified when a new post is published.

Before we dive into the details, a bit of background. As part of the Sixfold product, we ingest quite a lot of data from different sources. …

Sixfold Tech Blog

Sixfold is Europe’s leading real-time transportation visibility platform, solving supply chain visibility challenges for the world’s biggest companies.

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