From JUnit 4 to JUnit 5

Our unit test suite at work was started almost 10 years ago, and is comprised of thousands of tests. A few months ago, there was an initiative to migrate from JUnit 4 to JUnit 5.

From Ant to Gradle

The build system at work was comprised of an ant build for Java with various node and npm scripts, as well as lots of bash to bundle our software. It did the job, but showed its age due to lack of parallelization and good system dependency. It was time to migrate to something more robust and modern.

From R to Python

A few years ago, I was asked to help on a R codebase. However the performance was really slow and the program really hard to maintain. I decided to rewrite it in Python.

Teenager books

For a 14 years old teenager, it is sometimes hard to find books that suit her own taste. Fortunately, a great colleague gave me a great list (in french) that is published here as a reminder.

Backpack craziness

My old backpack was starting to wear off in different places, so I thought it was time to get a new one.

Fixing a faulty git merge

I came upon a situation where a target release branch was unintentionally merged into a base release branch, and several commits were added afterwards. I describe how it was fixed and the git history rewritten cleanly without the faulty commit.

Adding a source dependency to a Gradle build

Gradle allows adding source dependencies to a build since 4.10. Even though the process is quite simple, I stumbled upon a small problem when using them.

Adding an environment variable to a Gradle build

I had to add an environment variable to a Gradle build at work, but the Gradle task I used does not support setting environment variables.
TLDR: add it to the gradlew script.

Visiting the Loire Valley without a car

We decided to visit the Loire Valley, but as a 100% parisian family, we do not have a car and no driving license, and we are also not very comfortable with bikes. I here describe the schedule we had for the small trip accross Loire Valley, as organizing everything was a bit of a challenge.

Goodbye to my cat

Thoughts on my cat who just left us after almost 18 years.

On Pull Request merge strategies

I sometimes run into discussions with colleagues on how to merge a Pull Request (PR). Here is my take on it and why I usually favor squash merges.

Killing child processes when the parent fail

At work, we often need to run computation heavy workloads which involve using multi processes to distribute computations on different cores of a single machine (and also a cluster). When the parent process sometimes dies, its children are kept alive running and we want to ensure they also exit as fast as possible to prevent using too much resources.

Comments in a Dockerfile

This is a note to my future self after spending way too much time finding why my Dockerfile did not work: Dockerfile comments start at the beginning of a line.

Python 3.6 and Matplotlib 2 on macOS Big Sur

After upgrading to macOS Big Sur (11.2), I had to use Python 3.6 and Matplotlib 2.2.5. It turned out to take more time than anticipated. I use Pyenv to manage multiple Python versions and Homebrew as a general package manager.

Python, unicode and exceptions

Code compatibility between Python 2 and Python 3 is tedious. I have recently stumbled upon some unexpected behavior when using unicode (Python 2) and str (Python 3) for string formatting and exceptions.

Handling different Git configurations

Having different Git repositories with different identities, I used to configure Git for every repository I checked out. I recently stumbled upon the Git includeIf which allows loading an overriding configuration file depending on the repository location.

Accessing a Git repository behind an http gateway

A project I worked on had a Git repository behind a Citrix NetscalerGateway and only accessible over http. It was at first impossible to clone the repository, but Git has an option to bypass that.

Adding a local jar to Maven

A supplier has given a couple of jars to add to our java project which uses Spring Boot and Maven. Those files are not published in any Maven repository and we do not have one at work yet. There are several different ways to add them.

Eyewear craziness

I recently got a prescription for full time glasses and chose rimless glasses. After a few months of wearing them, I got tired of the “mostly” invisible look, so I started looking for something that would best fit my tastes.

Using Gitlab Nginx as SSL Reverse Proxy

Gitlab bundles nginx as a web server. It can also be used as a reverse proxy to host other services while listening on the same port and make use of other SSL certificates.

Upgrading Apache 2.2 to Apache 2.4 on Debian or Ubuntu

After answering several times to the question “Why do I have a 404 error on all my services after upgrading apache?” at work, I just decided to write about it.

Changing MTU size to connect to a service behind a VPN

Recently at work, we had a problem when connecting to a service behind a VPN, itself being behind a firewall. Packets would get truncated between the service and the computer we used. It turned out to be a MTU problem not set to the correct size.

How to recycle?

I am launching https://recycleme.yuen.fr (in french) to try recycling packages based on product bar codes. However the database is small!

Getting outside of China

I have been to China a lot of times, but I have never felt the Great Firewall presence as much as now. I describe below my experience with accessing external services from China.

Cython cheatsheet

Cython is a great tool to improve speed on computation heavy parts of a Python program, but the documentation is somewhat not very clear on where to start.
The following sums up different steps to more easily dive into cython.

Very old news

Very first web update… at last.
Right now, only the About section is available, with various information along with resumes.

Much to come later?