Reapply minor changes

This commit is contained in:
Alexis Métaireau 2024-07-15 14:36:54 +02:00
parent d88da93f06
commit 701d3027b6
No known key found for this signature in database
GPG key ID: 1C21B876828E5FF2
3 changed files with 92 additions and 22 deletions

View file

@ -0,0 +1,87 @@
---
status: draft
title: De retour au développement
---
Depuis la fin de l'année 2023, je travaille à mon compte sur des projets
informatiques. Ce qui était au départ une sorte de période de test suite à une
aubaine proposée par Yohan et David pour travailler sur uMap s'est transformée
en quelque chose de plus pérenne.
Après quelques années à brasser, je retrouve le développement
logiciel.
Quand j'ai quitté mon travail chez Mozilla en 2016, je ne savais pas trop vers
quoi me tourner. J'avais fait 5 superbes années de découvertes, et je ne savais
pas trop ce que j'attendais pour la suite. A l'époque, je m'étais donné deux
"arcs" possibles: faire des ateliers d'autodéfense numérique, ou alors monter
une brasserie. Au final, l'envie partagée de monter le projet de la Brasserie
du Vieux Singe nous a porté avec Fred, et j'ai donc mis de côté l'informatique
"pro" pendant plusieurs années.
7 ans plus tard, l'été dernier, je quitte la brasserie (ou, la brasserie me quitte) et je commence à me former autour de la gestion des conflits dans les collectifs.
A ce moment, plusieurs projets intéressants se trouvent sur mon chemin, et je m'arrête quelques instants pour voir à quoi cela ressemble. J'ai pu
travailler pour Framasoft sur [un projet de supervision](https://framagit.org/framasoft/framaspace/argos), avec David et Yohan sur [un projet de cartographie](https://umap-project.org/), et plus récemment avec Freedom of the Press Fountation sur [un projet autour de la sécurité](https://dangerzone.rocks/).
Petit retour sur cette dernière année.
## Confiance en soi
Une des choses les plus compliquées pour moi, à été de retrouver de la confiance
en moi. J'ai eu beaucoup de chance de travailler avec des gens talentueux, que
j'ai tendance à mettre sur un pied d'estal, et avec qui j'ai tendance à me
comparer.
On parle souvent du « syndrome de l'imposteur », et je pense que c'est
clairement quelque chose qui s'est déroulé pour moi. Après ces nombreuses années à faire « autre chose », j'avais peur de ne pas être à la hauteur.
La réalité est que j'ai aussi du réapprendre à utiliser les outils, pour enfin réussir à améliorer la confiance en moi.
Ça a été criant pour moi sur le dernier projet en date, « Dangerzone » puisque
j'y travaille sur des technologies auxquelles je n'ai quasiment jamais été
exposé : les *containers* (Docker et/ou Podman), et QT, en anglais, en tant
que contractor.
L'équipe à été très accueillante, et vraiment ça fait la différence. En fait,
je me rends compte en avançant que ce qui intéresse mes collègues n'est pas tant
mes compétances techniques (qui bien sur sont importantes), mais la manière dont
nous intéragissons ensemble. Finalement, en étant « moi-même » j'ai l'impression
que ça fonctionne mieux.
L'avenir dira bien si ça leur convient ou non, mais je suis très content de
réussir à faire baisser la pression à cet endroit.
Je retrouver dans mon journal, des notes publiées pour un point d'étape après
deux ans et demi chez Mozilla :
> Dire que l'on comprends pour éviter de passer pour un idiot est un biais qui
> se prends assez rapidement, et qu'il faut éviter à tout prix.
>
> Connaître ses limites techniques est un bon début pour pouvoir les
> surpasser. Chercher à les rencontrer est un processus actif.
>
> Notes perso de 2014 (il y a 10 ans)
## Poser un cadre
Une des choses qui est compliquée pour moi est de poser un cadre. Le travail est
important, mais ce n'est qu'une partie de ma vie. Travailler sur des horaires
specifiques, et rester concentré uniquement sur des tâches liées au travail
m'est un peu étrange : parfois j'ai envie de penser à autre chose, parfois j'ai
envie de travailler le soir, et en journée de faire autre chose. C'est un des
avantages de travailler en tant qu'indépendant, mais c'est bien sur aussi un
piège. Pour le moment, j'ai décidé de cadrer fortement, en allant travailler
dans un lieu autre que chez moi, mais je me rends bien compte des limitations que ça m'impose.
Aussi, je me retrouve à vouloir poser un cadre relationnel dans mon travail.
Il y a quelques années, j'acceptais différents cadres relationnels, et ça ne
me posait aucune question, quitte à ce que ça chauffe parfois dans les moments
de désaccords.
J'ai envie maintenant de clarifier ce genre de situations avant même de
commencer à travailler: je me connais mieux, et je demande clarification. Je
suis très content de faire cette découverte, et je me rends compte de la qualité
de travail et de relation que cela amène.
##

View file

@ -10,13 +10,8 @@ easy to define the the structure of the objects I want to use, using typing.
One use case I have at the moment is to parse a json object and build different One use case I have at the moment is to parse a json object and build different
objects depending on some key in the json object. objects depending on some key in the json object.
I tried multiple times, and finally managed to do it: Here, I have three types of messages: `OperationMessage`, `PeerMessage` and
`ServerRequest`, as follows:
have different pydantic classes which share a same property (here named `kind`),
and end up with the proper classes at the end.
Here, I have three types of messages: "OperationMessage", "PeerMessage" and
"ServerRequest", as follows:
```python ```python
from typing import Literal, Optional from typing import Literal, Optional
@ -24,8 +19,6 @@ from pydantic import BaseModel
class OperationMessage(BaseModel): class OperationMessage(BaseModel):
"""Message sent from one peer to all the others"""
kind: Literal["operation"] = "operation" kind: Literal["operation"] = "operation"
verb: Literal["upsert", "update", "delete"] verb: Literal["upsert", "update", "delete"]
subject: Literal["map", "layer", "feature"] subject: Literal["map", "layer", "feature"]
@ -34,18 +27,13 @@ class OperationMessage(BaseModel):
class PeerMessage(BaseModel): class PeerMessage(BaseModel):
"""Message sent from a specific peer to a specific one"""
kind: Literal["peermessage"] = "peermessage" kind: Literal["peermessage"] = "peermessage"
sender: str sender: str
recipient: str recipient: str
# The message can be whatever the peers want. It's not checked by the server.
message: dict message: dict
class ServerRequest(BaseModel): class ServerRequest(BaseModel):
"""A request towards the server"""
kind: Literal["server"] = "server" kind: Literal["server"] = "server"
action: Literal["list-peers"] action: Literal["list-peers"]
@ -61,8 +49,6 @@ from pydantic import Field, RootModel, ValidationError
class Request(RootModel): class Request(RootModel):
"""Any message coming from the websocket should be one of these, and will be rejected otherwise."""
root: Union[ServerRequest, PeerMessage, OperationMessage] = Field( root: Union[ServerRequest, PeerMessage, OperationMessage] = Field(
discriminator="kind" discriminator="kind"
) )
@ -74,7 +60,7 @@ Which can be used this way:
try: try:
incoming = Request.model_validate_json(raw_message) incoming = Request.model_validate_json(raw_message)
except ValidationError as e: except ValidationError as e:
error = f"An error occurred when receiving the following message: {raw_message}" # raise
``` ```

View file

@ -45,9 +45,6 @@ point sur le mois passé, depuis la dernière note.
- Des rencontres à côté du boulot qui sont simples et motivantes, être à fond. - Des rencontres à côté du boulot qui sont simples et motivantes, être à fond.
- Me remettre à faire des trucs fermentés (légumes lactofermentés, kombucha) - Me remettre à faire des trucs fermentés (légumes lactofermentés, kombucha)
- Prendre le temps d'animer des ateliers d'autodéfense numérique. - Prendre le temps d'animer des ateliers d'autodéfense numérique.
- Me retrouver dans des assemblées avec des gens qui partagent des valeurs fortes de liberté
- Retrouver une partie du controle sur mon temps
- Me retrouver sous Linux + Gnome, c'est bête mais ça m'avait en fait manqué, je me sens plus à l'aise.
- Sentir le temps se décaller, me coucher tard et me leve tard, me reposer quand - Sentir le temps se décaller, me coucher tard et me leve tard, me reposer quand
j'en ai envie. C'est surement ça que j'appelle « retrouver le contrôle de mon j'en ai envie. C'est surement ça que j'appelle « retrouver le contrôle de mon
temps »», un peu paradoxalement peut-être. temps »», un peu paradoxalement peut-être.
@ -146,7 +143,7 @@ qu'identité. Bye bye.
### Reddition de comptes ### Reddition de comptes
> After all, if you cant hold back from judging yourself, youre unlikely > After all, if you cant hold back from judging yourself, youre unlikely
> to do so with others. So to get started, you can refrain from the demeaning > to do so with others. **So to get started, you can refrain from the demeaning
> self-talk the next time you do something that, in hindsight, looks like an > self-talk the next time you do something that, in hindsight, looks like an
> error.** Instead, you can practice asking questions like, what was I thinking and > error.** Instead, you can practice asking questions like, what was I thinking and
> noticing when this happened? How did I respond to what I saw happening? What did > noticing when this happened? How did I respond to what I saw happening? What did