AI is killing the web

How AI generated stuff gets crawled by search engine and end up polluting the internet

January 10, 2025 · 3 min

My home setup

A highly incomplete overview of my home automation setup

December 20, 2024 · 5 min

Contextualize your bash

Load custom bash aliases when entering directory

May 15, 2023 · 3 min

Repair your grub

On the list of bad computer things that happened to me, this one maybe in the top 3

January 7, 2022 · 2 min

Retour d'expérience Prestashop

Sur ce blog post, je m’éloigne des sentiers battus pour découvrir un domaine que je ne connais pas trop : La vente en ligne. Contexte Ma compagne s’est lancée dans une activité où elle crée des produits du quotidien, cousus-main, avec du matériel issu de ressourceries ou de fins de rouleaux. Ses enjeux/envies sont multiples : Trouver une activité à temps partiel pour pouvoir conjuguer vie de famille et professionnelle Réduire nos déchets1 Gagner de l’argent2 Essayer quelque chose de nouveau Faire quelque chose d’utile3 État des lieux Pour pouvoir vendre, il y’a plusieurs façons de faire : ...

December 18, 2021 · 3 min

Rust AWS lambda with glibc

Why AWS has announced supporting rust for the lambda, but does not provide an official runtime for it. You have to provide your own, and the official way is through building a target where you can statically link a libc implementation: musl. While it appears you could statically link the glibc, it is not advised. (see here and here) So for AWS: What While searching for alternative solutions to this (Because reasons), I found that since late 2020, they added a container image support to AWS lambda. ...

October 1, 2021 · 2 min

Never miss a google meet with systemd

I don’t like to be late at meetings, and I relied heavily on my coworkers to warn me about a meeting starting. Now, I’m working in a fully remote company, and I can’t rely on my coworkers, because they can only message me, and I don’t look at slack/emails all day. So I came up with 1 little script (and 2 systemd units) to automatically launch my meeting 1-2 minutes before it actually starts. ...

March 18, 2021 · 2 min

Using an AWS ECR image as a Github Action container

Moving from Docker Hub to ECR Pubstack, my current client decided to migrate all its docker images to ECR. With the recent announcement about rate limiting on Docker Hub, maybe we will not be the only ones moving away. For our CI/CD pipelines we use both CircleCI and GitHub Actions. Using an ECR image is a really simple task in CircleCI, it consists of adding the aws_auth to the image configuration. docker: - image: ACCOUNT.dkr.ecr.REGION.amazonaws.com/IMAGE:VERSION aws_auth: aws_access_key_id: $AWS_ACCESS_KEY_ID aws_secret_access_key: $AWS_SECRET_ACCESS_KEY On the other hand, using ECR images in GitHub Actions was a bit more tricky. ...

October 28, 2020 · 4 min

The Twelve-Factor App Checklist

Twelve-Factor Application If you don’t know about the 12 factor applications, I suggest you read this first. The twelve-factor app is a methodology for building software-as-a-service apps During my different missions, I found that these guidelines are wonderful for building and deploying software. I eventualy came up with a checklist I use on my clients’ projects in order to assess the team’s maturity level, and track what can be done to improve the application. ...

July 14, 2020 · 1 min

Going mouseless #1: Git push a new branch

TLDR: install thefuck The Right Tool for the Right Job Using the right tool for the right job is kind of why I can’t decide myself on using one programming language. When it comes to programming, I have the feeling that using the mouse is highly unefficient.1 It really breaks the flow, you are in the process of writing some code, with both your hands on the keyboard, and all of a sudden you grab the mouse to, I don’t know, launch the tests or click on some website you are testing. I don’t like that. ...

February 24, 2020 · 2 min

Login to AWS ECR using systemd

First try without systemd During my previous mission, we used AWS ECR to manage the docker images. Amazon EC2 Container Registry (ECR) is a fully-managed Docker container registry that makes it easy for developers to store, manage, and deploy Docker container images. To be able to store/retrieve docker images, you have to be authenticated. AWS CLI provides a command which takes your credentials and generate a token, authenticating the user for 12 hours. ...

May 7, 2019 · 2 min

Devoxx 2016: Huntly or nothing!

La version originale de ce post en Français peut être trouvée ici : https://code-troopers.com/2016/05/20/devoxx-2016-huntly.html This year at Devoxx France, I was the only Code-Troopers1 available but it didn’t matter because I found Michaël2, former “tourangeau” colleague currently living in Toulouse. We are going to talk to you about how fun these 3 days were. For the 2016 DevoxxFR edition, something came up that should have come sooner: we are talking about official mobile applications. Nothing astonishing here you could say, and I agree because for the previous editions we had some good fellows, working on their free time I guess, which provided some alternatives allowing us to have a digital schedule in our pocket. Instead of “just” publishing an application allowing to see and manage your sessions (that’s My devoxx), they also published on the stores the Devoxx Huntly application, which tag line is “Win tickets for devoxx events”. ...

May 19, 2016 · 5 min

Http is dead

In a previous article I talked about switching to https. Since the 3rd December, Let’s Encrypt is in public beta1, that means that everybody can have free trusted ssl certificates. That’s right, you heard it. What would be an agileek article without a little bit of Docker in it? Goal I will show you how to generate and use an ssl certificate with nginx. First, you generate the certificate with: docker run -it --rm -p 443:443 --name letsencrypt -v /etc/letsencrypt:/etc/letsencrypt -v /var/lib/letsencrypt:/var/lib/letsencrypt quay.io/letsencrypt/letsencrypt:latest --server https://acme-v01.api.letsencrypt.org/directory certonly -a standalone -d hello.bitard.fr ...

December 5, 2015 · 2 min

Raspberry Pi, RFXCom and Domoticz

This begins a serie of home automation articles. First step I recommend to start with something easy. I tried a remote controllable wall socket a few years ago, and it really works very well. I use it to control 4 lights area in my living room. Now it’s time to take it to the next level! Choose wisely There are 2 main wireless protocols to communicate with your devices, 433.92 MHz and Z-wave. ...

December 5, 2015 · 2 min

Forcing https for GitHub Pages and Disqus

Observation This blog uses GitHub Pages, which are by default available using both http and https protocols. The comments are powered by Disqus, and it works really well. Almost really well, actually, because something strange appeared using only https. Why switching to https only ? Firefox starts to deprecate non secure http Https as a ranking signal on google Let’s Encrypt is trusted!1 Force https on Github Pages I found this gist to force the https redirection, simple, efficient. ...

November 20, 2015 · 2 min

Changer de mapping, changer de clavier

Cela fait bientôt 3 ans que j’ai changé de mapping et de clavier, il est temps de faire un petit bilan. Le choix du clavier Il existe des tas de claviers, j’ai des collègues complètement à fond sur le sujet (Oui sylvain, c’est de toi que je parle, avec ton ergodox et Ctrl+Alt+Shift au pied) et les énumérer là n’est pas le sujet. Si je devais en citer 3, je pense qu’il y’aurait l’ergodox, keyboard.io et le typematrix. ...

April 15, 2015 · 3 min

HTTPie and json: REST in your terminal

Je suis, comme Emmanuel Bernard, un taré du terminal. Ce que je trouve génial avec cet outil, c’est qu’on n’arrête jamais de découvrir de nouvelles choses. Je vais vous parler de la combinaison de 2 outils pour jouer avec du Rest depuis votre terminal : HTTPie, qui est un “cURL-like tool for humans” json (très mauvais nom), qui est un utilitaire pour travailler sur du json Pour notre exemple on va jouer avec l’API de github, en essayant d’afficher tous les repos docker de l’organisation agileek. ...

April 14, 2015 · 2 min

Poste de dev avec docker et ansible

Vous avez un projet où il faut 3 jours d’installation acharnée en suivant un wiki obsolète pour réussir à faire un premier commit ? Vous n’osez plus mettre à jour votre poste depuis 2006 de peur de ne plus pouvoir travailler ? Vous en avez marre d’oublier de mettre à jour le wiki chaque fois qu’il faut installer quelque chose de nouveau pour votre projet ? Ce post est fait pour vous ! ...

April 13, 2015 · 4 min

Docker Tips #3: How to lose data with a bad CMD

Scenario I want to be sure I don’t lose data when I stop my container. Given A simple program which add to a list the current time every second (Very critical program) and write the list to a file when it exits. private static final Path parentDirectory = Paths.get("dataFolder"); private static final Path data = Paths.get(parentDirectory.toString(), "data"); public static void main(String[] args) throws IOException, InterruptedException { if (!Files.exists(data)) { Files.createDirectories(parentDirectory); Files.createFile(data); } List<String> lines = Files.readAllLines(data); Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { Charset charset = Charset.forName("utf-8"); try (BufferedWriter writer = Files.newBufferedWriter(data, charset)) { for (String line : lines) { writer.write(line, 0, line.length()); writer.newLine(); } } catch (IOException ex) { throw new RuntimeException("Couldn't save lines"); } } }); while (true) { lines.add(Instant.now().toString()); Thread.sleep(1000); } } I assume it’s understandable even if you are not familiar with java. If not, let me know and I’ll explain it. ...

April 12, 2015 · 3 min

Docker Tips #2: Limit the layers

Scenario I want to transfer efficiently my images to the production machines. Given My Dockerfile with android sdk ADD http://dl.google.com/android/android-sdk_r24.0.2-linux.tgz /opt/android-sdk.tgz RUN tar xzf /opt/android-sdk.tgz -C /opt/ RUN rm -f /opt/android-sdk.tgz built with docker build -t docker_layers . When I want to push it to the registry Then It will push 3 layers: the first is the android tgz pushed into /opt the second is the extracted sdk into the /opt directory the last one is the deletion of the tgz This is really not optimal, the first and third layer are useless. Worst, they use space on your filesystems, on your network when you pull/push, … ...

April 11, 2015 · 2 min

Devoxx France : jour 3

Keynote Un robot peut-il apprendre comme un enfant ? On recommence avec les robots pour cette première keynote de Pierre-Yves Oudeyer. Nous avons tous une vision des robots en tant qu’extension de nos mains (robots aspirateurs, ceux sur Mars, pour tondre la pelouse,…) mais Pierre-Yves essaie de créer des robots qui étendent notre esprit. Pour cela il se base sur l’observation de l’apprentissage des enfants. C’est bluffant de voir à quel point en analysant mathématiquement nos interactions avec le monde extérieur on peut modéliser le comportement d’un nouveau né. ...

April 10, 2015 · 5 min

Devoxx France : jour 2

Keynotes Cette première session de keynotes va nous parler du futur de l’informatique. Aldebaran Le premier speaker nous parle de ce que sera la robotique dans le futur, au travers de sa société. Les premières applications seront probablement l’assistance aux personnes agées, ce qui ne sera pas disponible avant 5 ans, à cause des problématiques de reconnaissance vocale à distance. Pour lui, dans 20 ans les robots seront devenus des compagnons présents dans nos logements, nous assistant dans nos taches quotidiennes. Il seront en quelque sorte au coeur de la domotique. ...

April 9, 2015 · 6 min

Devoxx France : Jour 1

Devoxx France 09:30-12:30 Google Cloud Platform Présentation de Google Cloud Platform par David Gageot et Ludovic Champenois. J’ai hésité avec “Quand Devops rencontre BigData”, mais il est trop tôt pour attaquer violemment avec du spark. Le but de cette session est de nous présenter une bonne partie de l’infrastructure google cloud au travers du déploiement d’une application de vote de tapis1. Pas de slides pour cette session, tout est live. ...

April 8, 2015 · 7 min

Devoxx France : la préparation

Devoxx France Cela fait maintenant 4 ans que devoxx se fait en France. Ça va faire la 3ème fois que j’y vais, et, pour en rater le moins possible, il faut être préparé. C’est une année particulière car, pour la première fois, devoxx se situera au palais des congrès. On peut voir que c’est pas la même dimension que les années précédentes qui prenaient place à l’hôtel Marriott Rive Gauche. ...

April 7, 2015 · 3 min

AssertJ 3.0.0 for Java 8

AssertJ est enfin sorti avec le support de Java8. Je le considère comme le meilleur outil de tests unitaires pour Java. Son approche est la suivante : une assertion doit être lisible par un humain. Pour vous en faire la démonstration, je vais vous montrer plusieurs exemples avec assertJ, en les comparant avec les assertions Junit. Exemples Boolean check Junit assertTrue(myBooleanValue); AssertJ assertThat(myBooleanValue).isTrue(); List checks Supposons cette liste : ImmutableList<String> elementList = ImmutableList.of( "element1", "element2", "element3"); Si je veux vérifier que les éléments sont bien présents ...

April 6, 2015 · 3 min

Moelleux au chocolat

Comme aujourd’hui c’est la journée mondiale du chocolat (Ha non, en fait c’est Pâques), c’est l’occasion pour moi de commencer une section recettes. Quoi de mieux pour commencer que des moelleux au chocolat. En plus, vous pouvez les cacher dans le jardin, c’est vachement mieux que des oeufs, non? Moelleux au chocolat Préparation : 15 minutes Repos : 30 minutes Cuisson : 10 minutes Ingrédients 200 g de chocolat noir extra 200 g de beurre 5 oeufs 300 g de sucre 65 g de farine Préparation Faire fondre le chocolat au bain marie avec le beurre coupé en morceaux. Fouetter pour lisser la préparation et laisser refroidir. ...

April 5, 2015 · 1 min

Docker Tips #1: Beware the 'rm'

This begins a serie of docker tips. Scenario I want to remove a container from my host Given My very simple Dockerfile FROM phusion/baseimage:0.9.16 RUN echo useless command VOLUME ["/data"] built with docker build -t test . Given A container based on this image started with docker run --name test_container -ti test /bin/dd if=/dev/zero of=/data/agileek_test.file count=102400 bs=1024 When I remove it: docker rm test_container Then I expect to have everything deleted, right? Wrong ...

April 4, 2015 · 2 min

Maven 3.3.1: La mort du pom.xml

Maven Haaaa, maven, le seul, l’unique. On l’a tous détesté pour plein de raisons, que ce soit : son fonctionnement ‘convention over configuration’ sa lenteur sa capacité à télécharger la terre entière son cycle de vie limité. Sans oublier sa syntaxe ultra verbeuse en XML. Le constat Petit rappel qui pique les yeux : voici comment déclarer UNE dépendance dans son pom : <dependency> <groupId>net.code-story</groupId> <artifactId>http</artifactId> <version>2.83</version> <scope>test</scope> </dependency> Ça fait quand même 6 lignes pour 1 dépendance, soyons réalistes, c’est juste ignoble… ...

April 3, 2015 · 3 min

Jekyll : ajouter des catégories à vos menus

Jekyll Comme il y’a énormément de posts sur ce blog, j’ai eu envie de pouvoir lister les posts par catégories. Je me suis dis que c’était relativement facile, et au final j’y ai passé un moment avant de réussir à le faire fonctionner complètement avec githup pages. J’ai trouvé des resources un peu partout mais rien qui expliquait de bout en bout la manipulation, d’où le post. Le générateur Jekyll sert statiquement les pages, il n’y a donc pas la possibilité de récupérer les paramètres de l’url pour s’en servir. ...

April 2, 2015 · 3 min

One day, one post, one month

Challenge du mois J’ai commencé ce blog en Juillet 2014 avec plein d’idées, de sujets, de bonnes résolutions. Résultat, 9 mois plus tard, 3 billets en ligne… c’est pas fameux comme bilan. Je me suis rendu compte que c’était difficile de blogger pour plein de raisons: On trouve toujours autre chose à faire, même si on a des sujets plein la tête. Ça prend du temps, même pour des sujets qu’on maitrise En tant que freelance qui télétravaille, c’est difficile de se détacher de son client pour prendre du temps “pour soi” Je suis un peu fainéant je pense J’étais en train de me poser la question de garder mon blog ou pas, car un blog abandonné, c’est quand même triste. ...

April 1, 2015 · 2 min

Generate log line with Intellij and live templates

With IntelliJ, one missing feature is the automatic generation of the famous private static Logger LOGGER = ...; You can do it easily with the Live Templates, you just have to go to Editor -> Live Templates -> others -> create new And in these fields : Abbreviation: log Description: Add log line Template text: private static final org.slf4j.Logger LOGGER = org.slf4j.LoggerFactory.getLogger($CLASS_NAME$.class); Applicable in: Java: declaration Edit variables: CLASS_NAME Expresion: className() Make sure you have slf4j-api in your classpath, with maven: ...

March 1, 2015 · 1 min

Playing with docker and cpuset

For my client I need to benchmark a multi-threaded/multi-server solution. Unfortunately, we only have a big server (128 GB, 32 cores,…) and we are putting all our instances on this single server. As each instance is multi-threaded, we noticed that they often get in each others way, resulting in bad performances (context swapping, …). We solved this problem in 2 ways. On one hand we used thread affinity in the application in order to bind some thread to a given CPU, and on the other hand we used docker to authorize a given application to access only some CPUs (via cpuset). ...

August 6, 2014 · 1 min

Jekyll quickstart with docker

This is my first blog post! It’s been quite some time that I wanted to start it but I never had the energy to do it. After a quick search on blog engines, I decided to give a try to Jekyll, since it is integrated with github pages and is very simple to use. I followed their tutorial and Bam! $ sudo gem install jekyll Building native extensions. This could take a while... ERROR: Error installing jekyll: ERROR: Failed to build gem native extension. /usr/bin/ruby1.9.1 extconf.rb /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError) from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' from extconf.rb:1:in `<main>' Gem files will remain installed in /var/lib/gems/1.9.1/gems/fast-stemmer-1.0.2 for inspection. Results logged to /var/lib/gems/1.9.1/gems/fast-stemmer-1.0.2/ext/gem_make.out It didn’t work on my computer… and since i’m a lazy person, I get tired really fast when things don’t work like expected. ...

July 23, 2014 · 2 min