L'art et la manière

Je pourrais encore parler travail et comme c'est cool d'être dans une telle entreprise1 malgré les turbulences mais cela ferait trop sempiternelle ritournelle. Comme beaucoup d'anciens bloggueurs revenant à notre drogue, l'envie d'écrire revient plus doucement que je ne l'imaginais et j'ai encore du mal à me trouver une ligne directrice dans les sujets abordés.

Read more →

2023.W02

Une semaine très intense au cours de laquelle j'ai franchi des étapes importantes, mesuré tant le chemin accompli que le chemin restant et surtout commencé à prendre du plaisir.

Read more →

2023.W01

First post of the year!

For a while, I wanted to migrate my apps & sites to a new hosting company & also stop using plesk. The main concern was, as usual, money-related and I struggled a lot to find a correct alternative to plesk.

Today, I can say I found both: the hosting company and the admin tool.

Read more →

Résolutions

Pour être très honnête, je n'en reviens toujours pas d'avoir pu écrire ce message sur LinkedIn.

Comme dit dans le billet, c'est une étape importante dans le voyage que j'ai entrepris il y a quelques années sous l'impulsion de Eric. Et, en parallèle de mes attributions professionnelles, je vais tenter une nouvelle hygiène d'écriture. C'est certain que cela fera un changement majeur par rapport au rythme habituel de ce site depuis quelques siècles…

Je vais donc tenter de publier un billet par semaine. Du technique, du perso, du sérieux ou du frivole (me connaissant, ce sujet sera rare) mais l'important est de publier quelque chose pour garder l'esprit et les doigts alertes. Non, je ne ferai pas de listing des dernières nouveautées chez AWS, vous avez assez de ressources pour cela. Je ne m'interdis pas cependant d'aborder le sujet.

Quant au jour de publication, j'hésite encore. Mais comme il y a un chouette flux RSS qui accompagne ce blog, vous savez comment suivre.

WeWork wifi error on Ubuntu 22.04

Being locked out of wifi is annoying, really. Especially when you're on a known network.

Thanks to my company, I'm the happy owner of a WeWork access card which allows me to go to any of their coworking sites and work from there. Today I had a day-long meeting with my team at one of these locations.

WeWork does not only offer nice locations and good coffee but also a unified wifi connection: on any place, you connect to the same wifi network with the same credentials. Usually, you come to the place, take a coffee, find a seat and enjoy a good working day. But today, it didn't work.

I was watching network-manager trying to connect continuously and failing with an SSL error. Strange. Some digging in my laptop's logs, some internet searches1 and I found a solution. In Ubuntu 22.04, Canonical and the community finally upgraded OpenSSL to version 3. Included in this upgrade was the deprecation of some old ciphers and providers. And, unfortunately, the wifi system at my coworking location was not updated.

The fix is "simple" as it only impacts wpa_supplicant and won't lower the security level of your system.


  1. Having a good mobile plan and connectivity is always useful. 

Toolset

Toolset

Tout d'abord, un avertissement : ce que je vous décris fonctionne pour moi & ne fonctionnera pas tel quel pour un autre. Au fil de mes expériences, j'en suis arrivé à considérer toutes les méthodes d'organisation comme une boîte à outils plus que comme des dogmes à suivre à la lettre. Je me suis donc créé ma méthode avec mes outils.

Tout d'abord, et incidemment pour contredire le paragraphe au dessus, je suis un fervent partisan de la méthode GTD de David Allen. Et pour la mettre en oeuvre, j'utilise Remember the milk sur tous mes appareils.

Cela, c'est pour la «grande» organisation, celle au plus ou moins long cours. Pour l'organisation quotidienne, en sachant que je suis plongé en permanence sur mon écran avec le casque vissé aux oreilles (réunionite quand tu nous tiens…), je découpe mon temps en suivant la logique Pomodoro avec une app toute propre & simple (comme je les aime) sous linux qui s'appelle Pomotroid. Enfin, parce que le remote possède l'inconvénient d'être bruyant, surtout pendant les vacances scolaires, j'ai découvert il y a quelques années, un site/outil nommé Brain.fm qui permet de se mettre dans ce fameux état de flux propice à la réflexion & au travail en concentration.

Enfin, que ce soit pour la «grande» ou la «petite» organisation, cette méthode est totalement compatible avec des postures plus agiles comme scrum ou kanban car étant plus une méthode de flux.

Cover photo by Steve Johnson on Unsplash

Testinfra slowness with molecule

Following my migration to molecule 3, all my testinfra tests were taking more time than before. Like 56 seconds for 6 tests !

Really slow tests in molecule default configuration

As I changed nothing on the test side of my roles, I dug a bit to know what happened and try to recover my previously fast tests.

With the release of Molecule 3, the devs decided to ditch testinfra as the primary verifier tool in favor of ansible itself. While it isn't a bad decision, I'm not fond of it as I think ansible is not the best fit for a verification step as it is quite verbose and relies too heavily on register.

I still don't know who's the culprit but the slowness is linked to the connection backend used by testinfra to connect to test instance. Like it's already written in testinfra doc, the ansible backend is the slowest of all.

After digging in molecule code and testing things, the fix is really easy to deploy in your stack:

In your molecule.yml file, you need to declare the connection backend in testinfra options, like in my case, podman:

verifier:
  name: testinfra
  options:
    connection: podman

With this option, my tests are now running at lightspeed!

Warp speed tests in molecule default configuration

Paperwork

Paperwork

Ceux qui me connaissent savent que je suis un papivore acharné et que, malgré mon passage au numérique par manque de place, j'aime toujours autant le papier sous toutes ses formes1.

Et trop régulièrement, l'actualité me rappelle que ce secteur est clairement en crise, quelque soit le pays & quelque soit le domaine.

En France, on rit (très jaune) de Presstalis et on subit tous la crise sanitaire qui oblige les éditeurs à trouver de nouvelles sources de revenus pour survivre.

C'est cette fois CanardPC qui se relance. Leur avantage dans cette course à la survie est qu'ils traitent d'un domaine spécialisé avec un effet communautaire important qui leur a déjà permis de faire le tour de table. Mais cette opération ne doit pas occulter le fait que, comme tout éditeur de presse de taille moyenne, ils n'ont quasiment aucune subvention, doivent aider à éponger la dette de Presstalis tout en subissant les affres d'une distribution physique malmenée tant par la crise sanitaire que Presstalis (encore)

De l'autre côté de l'Atlantique, le même son de cloche mais à une autre échelle : la dernière journée de l'imprimerie historique du Philadelphia Inquirer. Pourquoi ? Une rationalisation des coûts et une mutualisation des ressources dans un contexte tout aussi rouge qu'en France.

Cover photo by Yang Xi on Unsplash


  1. Maintenant que nous avons plus grand avec un peu de place vide, je vais pouvoir me remettre à acheter des livres papiers. Mais chut, ne le dites pas à madame… 

Reset the digest of a terraform state in one command

Caveat: This solution only applies on states stored on AWS and relying on DynamoDB, the default, to store the lock/checksum. YMMV on other platforms, but the logic is the same.

Usually, running a terraform command is easy and, even if your plan contains errors, returns everything in a clean state. Sometimes, it fails badly1 and you get the following error:

Error: Error locking state: Error acquiring the state lock: ConditionalCheckFailedException: The conditional request failed
        status code: 400, request id: P5T1PGB8VQDI4GKIIT8G5B9K0VVV4KQNSO5AEMVJF66Q9ASUAAJG
Lock Info:
  ID:        c18b397f-817b-b5dc-53cb-cd24ab01f789
  Path:      path/terraform.tfstate
  Operation: OperationTypeApply
  Who:       user@box
  Version:   0.11.7
  Created:   2018-08-03 12:24:03.5267495 +0000 UTC
  Info:

Terraform acquires a state lock to protect the state from being written
by multiple users at the same time. Please resolve the issue above and try
again. For most commands, you can disable locking with the "-lock=false"
flag, but this is not recommended.

This error is easily fixed by running the force-unlock command with the ID given in message.

But sometimes, even after running the force-unlock command, you still get an error:

Error loading state: state data in S3 does not have the expected content.

This may be caused by unusually long delays in S3 processing a previous state
update. Please wait for a minute or two and try again. If this problem
persists, and neither S3 nor DynamoDB are experiencing an outage, you may need
to manually verify the remote state and update the Digest value stored in the
DynamoDB table to the following value: 9355476ad083c709fe8da56ca7b60b73uri

If you're not familiar with DynamoDB, or don't have direct access to table due to IAM restrictions, here is a single aws command to run to reset the digest :

$ aws dynamodb update-item --table-name terraform-states-lock --key '{"LockID": {"S": "<LOCKID_PATH>"}}' --attribute-updates '{"Digest": {"Value": {"S": "<DIGEST>"},"Action": "PUT"}}' --return-values UPDATED_NEW | jq '.Attributes.RuleSetVersion.S'

You need to change the values of <LOCKID_PATH> and <DIGEST> to match your own, of course.


  1. Often, it is due to a Ctrl+C done at the wrong time. Sh** happens. 

Liste chaînée #6

Liste chaînée #6

Une fois n'est pas coutume, je démarre l'année avec quelques outils & liens que j'ai glané depuis mon déménagement1.

  • Parce que j'ai fortement travaillé sur le rendu lors du travail sur le nouveau thème de ce blog, les extensions Markdown sont rapidement rentrées dans la liste des packages python que je garde sous la main.
  • L'ami Frédéric m'a converti à Notion (lien sponsorisé). Il faut le temps de se mettre à l'outil et comprendre ce qui se passe. Je vais certainement quitter Remember The Milk grâce à cela.
  • Au début, on rit. Au fur & à mesure de la lecture, on sourit de moins en moins en se disant que l'on a déjà commis ce genre d'horreur. A la fin, on se promet de ne plus jamais recommencer2. Le guide des anti-patterns en python devrait être enseigné en école tellement il nous renvoie à nos crimes (pas si ) passés.
  • Il est toujours difficile d'écrire des documentations à destination de personnes peu versées sur le sujet. Je redécouvre cela depuis quelques mois en travaillant avec des clients pour qui le mot cloud est encore un gros mot. What make a good runbook est une réflexion ouverte et utile sur la qualité des livrables que l'on fournit.
  • Certainement la liste la plus complète de ressources gratuites pour les développeurs. Clairement à garder en tête à chaque nouveau projet OSS.
  • Un pan méconnu de l'histoire de l'informatique.
  • Les bases de Go, une série d'articles plutôt courts et complets pour tenter, comme moi, de se lancer dans ce langage.
  • Régime minceur pour images Docker. C'est un peu magique, il faut parfois mettre les mains dans le cambouis. Mais parvenir à réduire la taille d'une image docker de 250Mo à seulement 42Mo avec les même fonctionnalités reste un exploit.
  • Pour continuer sur Docker, un runtime alternatif: podman. J'ai rapidement eu l'occasion de le voir fonctionner, j'espère pouvoir y toucher un peu plus en détails.
  • Enfin, pour ceux qui ont encore du mal à comprendre IaaS & PaaS, un article complet et clair sur le sujet.

Sinon, un peu de retape ne faisant jamais de mal, je travaille toujours sur ce projet et devrai avoir un prototype web.

Cover by unsplash-logo Stanislav Kondratiev


  1. Un jour, je terminerai ce billet… Après mon prochain déménagement ? 

  2. Une promesse que l'on doit rompre dès le lendemain. "Pavé de la réalité sur tartelette aux fraises..."