Skip to content

Our recent articles


Manage your technical debt roadmap right from your code 🚀

October 21, 2020Maxime Thoonsen10 min read

Exec summary: Technical debt leads to bugs creation: the number of bugs and the number of design flaws (technical debt) are 0.92 correlated in a study from the Software Engineering Institute Static analysis tools like SonarQube are massively used (100k+ users) to chase quality defects, but they can…

Continue reading →

Write tests for humans

September 07, 2020Adèle Gauvrit6 min read

Let me tell you the story of the day I almost quit testing my code altogether. For the tenth times this week, the CI failed with this cryptic error message "Received value does not match stored snapshot" and a diff that looked something like: It felt pointless to fix this test : why does it matter…

Continue reading →

Software-based CPU power consumption using PowerApi

September 03, 2020Maxime Thoonsen6 min read

The ICT sectors carbon footprint represents now around 4% of the global CO2 emissions. To minimize that, one of our goals at Theodo is to design sustainable web applications with minimal carbon footprint. And in order to know how performant we are at this, we need to be able to evaluate the power…

Continue reading →

Prevent AWS from Reading Your Step Functions Data

August 31, 2020Axel Fournier5 min read

AWS Step Functions is the perfect tool to handle long-running, complex or business-critical workflows such as payment or subscription flows. However, a naive implementation could put sensitive data at risk. What is AWS Step Functions? AWS Step Functions is an Amazon cloud service designed to create…

Continue reading →

Typescript: use the nullish coalescing operator to prevent bugs

August 04, 2020Maxime Thoonsen2 min read

My goal as a CTO is to improve quality. The score of this game is the number of bugs we find each week. Today I share with you a typical bug that more than one person got caught by. Let's say you want to initialize the audio volume of your react application with the value previously saved in the…

Continue reading →