Design for the Long Term

I really enjoyed reading the debates around choosing boring or exciting technology. In my opinion, there is another interesting point, beyond new or old, that is about longevity, or durability....

About Maintenance Mode

You may be familiar with this situation: your team has been working on a project for a while, and now that it seems to do the job, it is not really justified for so many engineers to spend time on...

Poucave, an observation standpoint for our services

Most of us are relatively familiar with system monitoring: we monitor RAM, CPU, or disk usage over time and receive alerts when some thresholds are reached. But the quality of a whole service is...

Tips for your Makefile with Python

Recently, while I was migrating old repos from TravisCI to Github Actions, I realized that several of them had wobbly Makefiles. I know that Makefiles are not super elegant, and that intrepid...

The History of Firefox Remote Settings

When I started to write the first lines of this article, it was the last day of Ethan in our team. His departure marked the end of an era that I'll try to tell you about here. Prehistory (~2014)...

Leveraging Rust in Python and JavaScript

I had several opportunities to hack with Rust, but so far, besides this very high loaded Web service that runs in production, it was either on prototypes or on stuff that could have been...

Python good practices in early 2020

A great part of my job at Mozilla consists in maintaining the ecosystem of Firefox Remote Settings, which is already a few years old. But recently I had the chance to spin up a new Python project...

JavaScript return await

A very short article about one of the recent bugs I carelessly designed :) I wrote the code below and had certain expectations: no matter what happens, catch the error and return a fallback value....

Check content hash between server and client

In order to make sure that your remote content was fetched successfully by your client, we can use a bit of cryptography. A simple way is to compute a hash on the server, and let the client...

Handling requests timeout in Python

Being optimistic is sometimes a disadvantage. When we make calls to an API, we usually test it under ideal conditions. For example, we make sure the client behaves as expected against a real HTTP...

More...