Our recent articles
Bad data quality or lack of data utilisation: how to avoid a 12% revenue hit
December 07, 2023Chloé Caron5 min read

Data comes from an endless list of sources, whether it be active and searching (e.g. use of sensors, collection of user data) or passive and an ‘added bonus’ (e.g. product sales, customer service emails). Data tells us a lot about our product, both what we are doing right and wrong in the eyes of…
Continue reading →Mastering File Upload Security: Understanding File Types
December 06, 2023Marek Elmayan7 min read

In today's digital landscape, file exchange has become an integral part of our online activities, from sharing work documents to uploading pictures on social media. However, this convenience comes with inherent risks. File upload functions, seemingly innocuous, can serve as potent vectors for high…
Continue reading →Nightly End-to-End & Performance Tests with Flashlight
November 30, 2023Mo Khazali5 min read

Several years ago, I was working on a web project that had quite a number of critical web flows that needed to be regularly tested to make sure that there weren't any regressions from functionality or performance across the app. On the web, this was pretty easy. We had nightly Cypress tests running…
Continue reading →Calculating software emissions: learnings and limitations
November 30, 2023Guillaume Barra4 min read

Context Earlier this year, we developed the sustainability calculator versions 1 and 2 at Theodo UK (version 2 can be downloaded here). The aim of the first version was to have a proof of concept that would allow us to calculate the CO2eq emissions of a website. With the initial version done on a…
Continue reading →How to Simply Generate a PDF From HTML in Symfony With WeasyPrint
November 30, 2023Damien Clauzon6 min read

A thousand PDF generation solutions, but which one to choose? Recently, I was faced with a problem that many developers fear and avoid: generating a PDF document. There are lots of libraries handling this, the problem is knowing which one best fits your project. For my specific use case, I had to…
Continue reading →