Latest articles

The strange case of Golang + Reddit RSSMay 2022

Recently, while working on goeland, I ran some test on reddit’s RSS feeds.

While it worked fine in the past, in the last few months with update to golang 1.17, people started complaining that reddit was rejecting their requests. While if you do the same request with curl, it works, with golang you would get a 429 error code.

The solution outlined on reddit was alike:

req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("User-Agent", "Custom Agent")
var defaultClient = http.Client{
    Transport: &http.Transport{
	TLSNextProto: map[string]func(authority string, c *tls.Conn) http.RoundTripper{},
resp, _ := defaultClient.Do(req)


 Read more

Install rclone with this one-linerFebruary 2022

One easy way to have a rclone in the current folder (adapt with your distribution):

curl -o && 7z e -y && del

How to secure proxmox web interface with CaddyJanuary 2022

Here is an easy way to secure a proxmox interface with proper https. Install caddy.

Edit the Caddyfile (`/etc/caddy/Caddyfile on Debian) as follow: {
        reverse_proxy localhost:8006 {
                transport http {

How to unbrick SomuOctober 2021

Recently, I accidentally put the wrong firmware on a Somu, thereby bricking it. In order to unbrick it, it is necessary to link it with a STLink. See the following schema to have the correct pinout (taken from here). Don’t forget it may be mirrored from what you are seeing. Use the the clues and asymmetries in order to figure out which pin is which. The following correspondance must be made: Read more

Create Client Cert UbiquitiSeptember 2021

Instead of using the script, it’s easier to create the certificates by hand.

Create CA then server key:

sudo -s
openssl req -new -keyout server.key -out server.csr -subj "/C=FR/ST=Paris/"
openssl x509 -days 1095 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt 
mv server.crt /config/auth/server.crt
mv server.key /config/auth/server.key


 Read more

Setup DebianAugust 2021

Half automated steps in order to have a proper debian installed with AWS, Azure, Scaleway, etc. Prerequisites A ssh account with root on the target. A way to either connect with user,pass to the instance or the proper ssh key from the host put inside authorized_keys at the target. Ansible with debops scripts. Works properly only in linux now. A hostname pointing to the instance. Steps Create a host. Read more

This Puzzle Does Not ExistAugust 2020

First of all, credit where is credit is due. As with many deep learning projects, nothing is possible without the work of real, talented humans beforehand. Therefore I would like to thank Tuesday Quest with their Hungry Cat Nonogram (Android, iOS). Especially shoutout to Sev_4Game for her incredibly beautiful artworks. As we will see, the rules can be learned, but what makes a beautiful pixel is not possible. Please check out their work and suscribe to their games! Read more

How to Save Bitlocker KeysJanuary 2019

Here is a simple script to help you save all your bitlockers keys easily.

$blvs = Get-BitLockerVolume | Where-Object {$_.MountPoint -match "[A-Z]:"}
foreach ($blv in $blvs)
    $id = $blv.KeyProtector | Where-Object { $_.KeyProtectorType -match "RecoveryPassword" }
    echo "Backuping ... $($blv.MountPoint) - $($id[0].KeyProtectorId)"
    Backup-BitLockerKeyProtector -MountPoint $blv.MountPoint -KeyProtectorId $id[0].KeyProtectorId


 Read more

Chut!November 2018

I was brought on this project to develop the game. Art and basic gameplay were already done, but the deadline was quite short. I developed the following points: Automatic CI and builds for Unity Import toolchain Level Editor within Unity Integration of assets Gameplay Testing It was quite a challenge as art was already done and the margin for modification was narrow. However this educational game was extremely well received. Read more

Hungry Cat Picross solverMarch 2018

This program is an attempt to automatically solve a Hungry Cat Picross grid with a simple algorithm.

The principle of the game is simple, yet complex to solve: each pixel has different possible values. It is not possible to test all combinations, so we have to be smarter.

 Read more