Orbitale.iohttp://www.orbitale.io/feed.xml2023-08-13T11:47:32+00:00Autism, masking, and personal experiencehttp://www.orbitale.io/2023/08/10/autism-masking-and-personal-experience.html2023-08-10T12:56:30+00:00Alex Rock<div class="post-content e-content" itemprop="articleBody"><p>#EgoTime</p> <p>In 2016, Shawn Coss, illustrator artist, participated in the #Inktober event (where you have to draw ink drawings for a month, one per day, during October).<br /> He decides to focus his drawings on mental illnesses and disorders.</p> <p>Why am I sharing this with you?</p> <p>You read the first hashtag, so you guessed it: to talk about me (once will not hurt).</p> <p>One of these drawings has always been important to me when I saw it at that time, especially since I was in the middle of my autism diagnosis (which continues today with therapy and “reboot” of my mental situation after a lot of issues).</p> <p>In fact, this concept of having the impossibility of expressing oneself by voice, but having a brain that screams with a need for expression, may seem paradoxical, but it is one of the typical traits of autism.<br /> Depending on the severity of autistic traits (more often called “ASD” for “Autism Spectrum Disorders”), some autistic people are able to express themselves verbally, or not.</p> <p>And for those who succeed, it’s a really tough mission.<br /> It’s even worse for people who “accumulate” particularities (epilepsy, ADHD, high potential, depression, psychoses, schizophrenia, and so many other neuro-atypicals traits, pathological or not), for whom it’s sometimes an impossible mission.</p> <p>In general, for most human beings, there is a need for an important social and emotional connection (it’s biological: it’s a survival technique, humanity only survived because it lives in strongly bonded communities).<br /> However, for autistic people, this need for social bonds is altered, sometimes completely “cut off”, by neurological changes that prevent certain social interactions (source: Thomas Bourgeron - “Des gènes, des synapses, des autismes”).</p> <p>However, autistic people do not always need to be in total isolation. It can happen for some, but not all of them.</p> <p>There are what the media call “high-functioning autism” (a kind of popular summary of “high level of social and cognitive potential compared to more severe forms of autism”, I admit I don’t really like this definition, but it serves the subject in some cases) who are able to socially interact with less difficulty than other autistic people (and of which I am one, if you have ever met me in person).</p> <p>These “social” autistic persons are among those for whom the difficulty of experiencing autism is totally different, because it implies that they can communicate and exchange, and that autism, therefore, is less visible. And by this strong social need, these autistic people do what is called “masking”, in order to be able to maintain this link.</p> <p>“Masking” is (to sum it up) a method that autistic people use to compensate for their social difficulties by constantly modifying their behavior according to the people they talk to, sometimes even going as far as a form of mimicry (taking up postures, gestures, expressions, or even… their accent!), all in the hope of keeping in touch with the person.</p> <p>This “masking” involves a lot of constraints:</p> <ul> <li>You have to keep your eyes on the person(s), and for autistic people, keeping eye contact with someone is sometimes very difficult</li> <li>You must be in permanent vigilance of your own body, behavior, intonation, speech, etc.</li> <li>And it’s mandatory that you constantly check that you are not disturbing or making the person uncomfortable, so you have to double your efforts to analyze the attitude of the other, a very difficult thing because autistic people have a lot of shortcomings in this area, sometimes even a real incapacity</li> </ul> <p>The two main consequences are emotional exhaustion, and relational breakdown because precisely this fatigue alters our behavior.</p> <p>Since most autistic people have this “innate” trait of having a need for connection but a difficulty or inability (variable according to the people) to communicate in a “standard” way with those around them, imagine how much this “sewn mouth” (like in the drawing by Shawn Coss) prevents keeping a link, and how the bran scream can exhaust the autistic person who is barely able to keep a link that is essential for them.</p> <p>Now, add to all of these difficulties things like depression (been there, done that). This mental and emotional state inevitably involves an increase in the difficulty of expression, and it can come to a stage where one simply no longer communicates.</p> <p>On a personal note, for years, I’ve slowed down on conferences for example, I’ve stopped doing technical video streaming, I’ve even stopped giving tech trainings, because I have no more energy, I’ve spent too much, and above all, life in general is very difficult, especially if you add in the eco-anxiety that my generation is undergoing because of the climate crisis, and the various social, political and economic crises, and you have everything needed for a person.</p> <p>I find myself like in this image, like many other autistic people of my generation: an enormous need to express myself, but an inability to do so.</p> <p>I don’t know what the moral of this post may be, but wherever you are, whoever you meet, I suggest you take into account that most people are not mean to you, sometimes they are just overwhelmed by everything what’s around them, their brain is screaming, and they just can’t tell you, because they don’t have that ability anymore.</p> <p><img alt="Shawn Coss" src=" /img/shawn_coss_autism.jpg" /></p> </div>Autisme, “masking”, et expérience personnellehttp://www.orbitale.io/fr/2023/08/10/autisme-masking-et-experience-personnelle.html2023-08-10T12:56:30+00:00Alex Rock<div class="post-content e-content" itemprop="articleBody"><p>#EgoTime</p> <p>En 2016, Shawn Coss, artiste illustrateur, participe à l’évènement #Inktober (où l’on doit dessiner des dessins à l’encre pendant un mois, à raison d’un par jour, en Octobre).<br /> Il décide de centrer ses dessins sur les maladies et désordres mentaux.</p> <p>Pourquoi je vous partage ça ?</p> <p>Vous avez lu le premier hashtag, donc vous devinez : pour parler de moi (une fois n’est pas coutume).</p> <p>L’un de ces dessins m’a toujours marqué depuis que je l’ai vu à cette époque, d’autant que j’étais en plein dans mon diagnostique d’autisme (qui continue aujourd’hui avec thérapie et “reboot” de ma situation mentale après pas mal de déboires).</p> <p>En fait, ce concept d’avoir l’impossibilité de s’exprimer par la voix mais un cerveau qui hurle d’un besoin d’expression, ça peut paraître paradoxal, mais c’est l’un des traits typiques de l’autisme.<br /> Selon la sévérité des traits autistiques (plus souvent appelés “TSA” pour “Troubles dans le Spectre de l’Autisme”), certain(e)s autistes sont capables de s’exprimer verbalement, ou non.</p> <p>Et pour celles et ceux qui y arrivent, c’est un parcours du combattant.<br /> C’est encore pire pour les personnes qui “cumulent” des particularités (épilepsie, TDA/H, HPI, dépression, psychoses, schizophrénie, et tant d’autres neuro-atypies, pathologiques ou pas), pouur qui c’est parfois mission impossible.</p> <p>De manière générale, chez la plupart des êtres humains, il y a un besoin de lien social et émotionnel qui est important (c’est biologique : c’est une technique de survie, l’humanité n’a survécu que parce qu’elle vit en communautés fortement liées).<br /> Or, chez les personnes autistes, ce besoin de lien social est altéré, parfois complètement “coupé”, par des modifications neurologiques qui empêchent certaines interactions sociales (source: Thomas Bourgeron - “Des gènes, des synapses, des autismes”).</p> <p>Pourtant, les autistes n’ont pas tous et toutes besoin d’être en isolation totale. On en trouve parfois, mais pas partout.</p> <p>Il y a ce que les médias appellent les “autistes de haut niveau” (un genre de résumé vulgarisé de “à haut niveau de potentiel social et cognitif comparé aux formes plus sévères d’autismes”, j’avoue ne pas trop aimer cette définition, mais elle sert le propos dans certains cas) qui sont capables d’interactions sociales avec moins de difficultés que d’autres autistes (et dont je fais partie, du coup, si vous m’avez déjà rencontré).</p> <p>Ces autistes “sociaux” font partie de celles et ceux pour qui la difficulté de vécu de l’autisme est totalement différente, car elle implique que l’on peut communiquer et échanger, et que l’autisme, par conséquent, se voit moins. Et par ce besoin social fort, ces autistes font ce qu’on appelle du “masking”, pour pouvoir conserver ce lien.</p> <p>Le “masking” c’est (pour vulgariser) une méthode que les autistes emploient pour compenser leurs difficultés sociales en modifiant constamment leur comportement en fonction de leurs interlocuteurices, allant parfois même jusqu’à une forme de mimétisme (reprendre des postures, des gestes, des expressions, ou même… leur accent !), tout ça dans l’espoir de garder le contact avec la personne en face.</p> <p>Ce “masking” implique pas mal de contraintes :</p> <ul> <li>Il faut garder les yeux sur la (ou les) personne(s), et pour des autistes, garder le contact visuel avec quelqu’un est parfois très difficile</li> <li>Être dans une vigilance permanente de son propre corps, comportement, intonation, élocution, etc.</li> <li>Vérifier que l’on n’est pas en train de déranger ou mettre mal à l’aise la personne, donc il faut redoubler d’efforts pour analyser l’attitude de l’autre, chose très difficile car les autistes ont justement beaucoup de lacunes en la matière, voire parfois une vraie incapacité</li> </ul> <p>Les deux conséquences principales sont l’épuisement émotionnel, et la rupture relationnelle parce que justement cette fatigue altère notre comportement.</p> <p>Vu que la plupart des autistes ont ce trait “inné” d’avoir un besoin de lien mais une difficulté ou incapacité (variable selon les profils) à communiquer de façon “standard” avec leur entourage, imaginez donc à quel point cette “bouche cousue” (comme dans le dessin de Shawn Coss) empêche de garder un lien, et à quel point le hurlement cérébral peut épuiser l’autiste qui tente vaguement de garder un lien pourtant primordial à ses yeux.</p> <p>Maintenant, rajoutez à tout cela des difficultés comme la dépression (been there, done that). Cet état mental et émotionnel implique inévitablement un accroissement de la difficulté d’expression, et ça peut arriver à un stade où l’on ne communique tout simplement plus.</p> <p>À titre personnel, depuis des années, j’ai freiné sur les conférences par exemple, j’ai arrêté de faire du streaming vidéo technique, j’ai même arrêté de faire de la formation, parce que je n’ai plus d’énergie, j’ai trop dépensé, et surtout, la vie est en général très difficile, surtout si on rajoute encore l’éco-anxiété que ma génération subit à cause de la crise climatique, et des différentes crises sociales, politiques et économiques, et vous avez tout ce qu’il faut pour qu’une personne reste au sol et galère à se bouger pour quoi que ce soit d’autre que sa survie émotionnelle de base.</p> <p>Je me retrouve comme sur cette image, à l’image de beaucoup d’autres autistes de ma génération : un besoin énorme de s’exprimer, mais une incapacité à le faire.</p> <p>Je ne sais pas quelle peut être la morale de cet article, mais où que vous soyez, qui que vous rencontriez, je vous suggère de prendre en compte que la plupart des gens ne sont pas méchants avec vous, ils sont parfois simplement dépassés par tout ce qui les entoure, leur cerveau crie, et ils ne peuvent tout simplement pas vous le dire, car ils n’ont plus cette capacité.</p> <p><img alt="Shawn Coss" src=" /img/shawn_coss_autism.jpg" /></p> </div>“Earth has already been warm” and its biased viewshttp://www.orbitale.io/2023/07/14/earth-has-already-been-warm-and-its-biased-views.html2023-07-14T17:24:27+00:00Alex Rock<div class="post-content e-content" itemprop="articleBody"><p>Between the coldest moment of the last Ice Age (which humans lived through, as a reminder) and the “end” of that Ice Age, nearly 11,000 years passed, and the global change over the whole period was around +4°C.</p> <p>There was therefore a 4°C difference between the “ice age” and the “temperate era”.<br /> And that took 11,000 years, an average of 0.036°C every 100 years (note the number of zeros).</p> <p>The last “low” temperatures on Earth occurred around 400 years ago, lasted a century, and was around -0.05°C (note the number of zeros again), compared with its normal temperature.</p> <p>Since 1900, in 120 years we’ve already increased the Earth’s global average by almost +1.5°C, just with the impact created by Humans. 120 years. That’s an average of +1.25°C per 100 years, which is almost 35 times faster than the last real global warming (the last Ice Age).</p> <p>Humans have therefore warmed the Earth 35 times faster than the Earth would have warmed itself.</p> <p>And then people say “Yes, but it’s already happened”. I tell them “Yes, but not as violently”.</p> <p>(Source: https://xkcd.com/1732/, which is based on these studies: Shakun Et Al. 2012, Marcott et Al. 2013, Annan and Hargreaves (2013), HadCRUT4, and IPCC)</p> </div>“La terre a déjà été chaude” et son point de vue biaiséhttp://www.orbitale.io/fr/2023/07/14/la-terre-a-deja-ete-chaude-et-son-point-de-vue-biaise.html2023-07-14T17:24:27+00:00Alex Rock<div class="post-content e-content" itemprop="articleBody"><p>Entre le moment le plus froid de la dernière ère glaciaire (que l’humain a vécue, pour rappel) et la “fin” de cette ère glaciaire, il s’est écoulé près de 11000 ans, et le changement global sur toute la période était d’environ +4°C.</p> <p>Entre “ère glaciaire” et “ère tempérée” il y a donc eu 4°C de différence à cette époque.<br /> Et cela a pris donc 11000 ans, soit une moyenne de 0,036°C tous les 100 ans (notez le nombre de zéros).</p> <p>Le dernier “creux” de température sur Terre a eu lieu il y a environ 400 ans, il a duré a duré un siècle, et il était à environ -0.05°C (notez encore le nombre de zéros), par rapport à sa température normale.</p> <p>Depuis 1900, en 120 ans nous avons déjà augmenté de presque +1,5°C la moyenne globale de la Terre, juste avec l’impact créé par l’Humain. 120 ans. Ça fait donc une moyenne de +1,25°C pour 100 ans, ce qui fait donc une augmentation presque 35 fois plus rapide de la température que lors du dernier véritable réchauffement climatique (la dernière ère glaciaire, donc).</p> <p>L’humain a donc réchauffé la Terre 35 fois plus rapidement que la Terre ne se serait réchauffée elle-même.</p> <p>Et après des gens disent “Oui mais c’est déjà arrivé”.</p> <p>Je leur dis “Oui mais pas aussi violemment”.</p> <p>(Source : https://xkcd.com/1732/, basé sur ces études : Shakun Et Al. 2012, Marcott et Al. 2013, Annan and Hargreaves (2013), HadCRUT4, et le GIEC)</p> </div>« On ne peut plus rien dire », oui mais ?http://www.orbitale.io/fr/2022/08/02/on-ne-peut-plus-rien-dire-oui-mais.html2022-08-02T08:21:01+00:00Alex Rock<div class="post-content e-content" itemprop="articleBody"><p>Bon, à un moment donné, faut que ça soit dit.</p> <p>« On peut plus rien dire, gnagnagna »</p> <p>Bah ouais, c’est comme ça, on ne peut plus rien dire, c’est la vie.</p> <p>Pourquoi ?</p> <p>En fait, dans tout phénomène de révolution, petit ou grand, positif pour le peuple ou pas, il y a des changements notables dans le verbiage / vocabulaire employé par les différents partis.</p> <p>On va parler de tout un tas de gens qui disent « On ne peut plus rien dire », et pour faire court dans des tweets à la taille limitée, appelons-les les “Finkies”, ça sera plus rapide.</p> <p>D’abord on parlait du chômage, puis des chômeurs, puis des demandeurs d’emplois, puis des personnes en réinsertion, etc., c’est l’évolution du vocabulaire en fonction de comment on veut faire passer un message (voir les conférences de Frank Lepage sur le sujet)</p> <p>Depuis un moment, les luttes féministes mettent la part belle au vocabulaire du patriarcat afin de le dénoncer et de faire changer les mentalités et faire passer des messages militants. C’est une lutte révolutionnaire comme il y en a eu tant d’autres.</p> <p>Le truc c’est que la phrase « On ne peut plus rien dire » est le plus souvent emprunte d’une opinion qui peut venir, à mes yeux, de 2 choses seulement : • Une position partisane (misogynie, sexisme, etc.) • Une absence de remise en question par réactance (égo, par exemple)</p> <p>La position partisane est claire et nette : le finkie qui dit « On ne peut plus rien dire » le dit spécifiquement pour museler les militant(e)s, et tenter de les écraser.</p> <p>Ça se voit facilement dans les propos ou les combats annexes (soutien de Zemmour, manif pour tous, etc.)</p> <p>La réactance en revanche est différente. Elle n’est pas la marque immédiate d’une personnalité toxique anti-militante, et surtout, ça peut arriver à tout le monde, des deux côtés du combat.</p> <p>Petite anecdote récente :</p> <p>Une photographe fait un appel à modèles pour un projet photo, et pose ses critères de physique dedans, notamment “corpulence fine”.</p> <p>Un mec tag sa femme, celle-ci répond en rigolant « Elle a dit mince 😁 » (la femme en question est assez mince, mais pas très maigre non plus).</p> <p>Et là, une personne lui répond un message très dur : « ça va, ça te dérange pas de faire de la grossophobie crasse oklm ???!!! Et tu te dis féministe ?! Tu es puante » (sic)</p> <p>C’est de la réactance, du côté militant (toutes deux sont militantes féministes, pour info)</p> <p>En deux tweets on voit une situation anodine devenir un combat entre deux personnes qui ont probablement les mêmes valeurs, mais l’une des deux s’est sentie méchamment attaquée pour des raisons personnelles, et si c’était une discussion IRL, peut-être que ça irait mieux en vrai.</p> <p>Imaginez maintenant quand c’est un youtubeur dev un peu star qui commente le taff d’une dev junior de façon très critique et très maladroite. D’une part, il va offusquer/blesser la personne, d’autre part, il va y avoir réactance des deux côtés.</p> <p>Les militant(e)s vont défendre la personne critiquée (normal), et les Finkies vont attaquer les militant(e)s.</p> <p>C’est un combat stérile.</p> <p>La défense de la personne critiquée est très importante car elle se sent blessée, et elle est en position minoritaire.</p> <p>Par contre, la défense du dev star n’est pas nécessaire : il a un gros impact médiatique, et en une fraction de seconde peut amener des tonnes de Finkies qui vont harceler les militant(e)s, surtout la personne citée en premier (la “victime”, difficile de trouver un autre mot).</p> <p>Par contre, les personnes qui ne sont pas militant(e)s et pas Finkies pour autant vont pouvoir apercevoir la situation défiler sur leur feed et se faire un avis. Et leur avis va se faire en fonction d’un tas de critères et d’habitus, mais surtout, de façon exacerbée.</p> <p>Si la personne a un petit penchant militant, elle va être très convaincue par les propos militants, et peut-être militer un peu plus.</p> <p>Si elle a un petit penchant finkie, elle va probablement s’énerver un peu.</p> <p>Vous voyez bien le schéma, j’imagine.</p> <p>Donc en gros, QUOI QU’ON DISE, de militant ou de style « On ne peut plus rien dire », on ne peut <strong>vraiment</strong> plus rien dire sans créer un débat ou un conflit, et exacerber les valeurs individuelles de chaque personne impliquée.</p> <p>C’est normal, c’est purement grégaire, humain.</p> <p>L’être humain est un animal social grégaire, et il est très difficile de jauger les comportements qui ressortent de l’individu spécifique ou d’une attitude de foule. Le militantisme sur les réseaux sociaux, c’est un peu des deux, et c’est compliqué pour nos cerveaux pas adaptés.</p> <p>Il faut bien savoir qu’on est en ce moment à l’apogée, au paroxysme des technologies de communication, alors que notre cerveau biologique en est encore à des siècles (voire des millénaires) de ça, et est tout juste adapté à des plus petites communautés IRL.</p> <p>Donc la surabondance de communication réveille des instincts grégaires, souvent égoïstes/égocentrés, du type « On ne peut plus rien dire » face à un propos qui change notre vision du monde et/ou nous blesse.</p> <p>Et puis, si on extrapole un peu, on retombe dans ce truc de Karl Popper : « On ne peut plus rien dire », ok, mais est-ce qu’on doit avoir le droit pour autant de dire de la merde en toute liberté ?</p> <p>Je veux dire, les propos sexistes outranciers du style « C’est bon l’hystérique, t’as tes règles ou quoi ? Un coup d’bite et ça ira mieux. » (sic, enfin, sans les fautes d’orthographe), est-ce qu’on doit “vous” laisser les dire pour autant ?</p> <p>C’est une question rhétorique : non, on ne peut pas.</p> <p>« On ne peut plus rien dire », c’est vrai : on ne peut plus rien dire d’oppressif, ce qui comprend une grande partie de notre verbiage issu de la culture du patriarcat, mais aussi du capitalisme, la colonisation, racisme, etc.</p> <p>(Et ne me parlez pas du couvert « C’est de l’humouurrrrrrr lol », c’est juste une façon déguisée pour tenter de se déculpabiliser de dire de la merde, donc arrêtez ça)</p> <p>Dans ce cas particulier, les luttes en faveur de l’inclusion de personnes issues de minorités (ethniques, neuro-atypiques, de genre, etc.) sont des luttes qui nécessitent de changer la façon dont on s’exprime pour blesser moins de gens.</p> <p>Et donc de se remettre en question.</p> <p>Donc quand le youtubeur dev star ne fait rien pour s’excuser, et pire, se <strong>moque</strong> des personnes militantes, on est là dans la réactance par égo. En gros « C’est pas moi, c’est les féministes extrémistes blablabla ». Même s’il n’est pas verbalisé ou conscientisé, c’est comme ça.</p> <p>Et donc cette personne va être “flag” comme toxique (logique, vu qu’elle laisse le harcèlement se faire sans rien dire), et les Finkies vont flag les militant(e)s, parfois jusqu’à les harceler.</p> <p>Mon avis maintenant : je pense que quand on nous dit qu’on dit de la merde parce que ça peut blesser quelqu’un, on doit fermer sa gueule et s’excuser platement.</p> <p>Les gens qui militent ont des VRAIES RAISONS de le faire.</p> <p>Vraiment, hein, c’est pas juste pour faire chier les mecs.</p> <p>Les féministes de la tech, par exemple, vont très vite pointer du doigt les devs “stars” qui propagent des propos sexistes/misogynes, parce que c’est précisément ça qui pose problème dans l’inclusion des femmes dans la tech.</p> <p>Moi aussi on m’a déjà bien “gueulé dessus” sur des propos maladroits que j’ai pu avoir, sexistes, ou autre.</p> <p>Je ne suis pas parfait, et personne ne l’est.</p> <p>Par contre je crois en la capacité de changement de l’humain.</p> <p>Et je l’applique en premier lieu à moi-même.</p> <p>Donc si on me gueule que ce que je dis est sexiste ou autre, je me tais, je réfléchis à la raison qui peut pousser quelqu’un à penser ça, je m’excuse, et ensuite je discute, et j’apprends, et dans le meilleur des cas, tout va mieux.</p> <p>Dans le pire des cas, je me fais bloquer, et tant pis, cette personne n’a probablement pas envie de se prendre la tête à discuter, et a peut-être mieux à faire de son temps, et c’est normal.</p> <p>(d’ailleurs, je sais que je suis bloqué par des personnes féministes pour avoir eu des propos limite il y a très longtemps, j’ai rencontré ces personnes inopinément IRL et on a eu des super discussions, mais elles ne m’ont pas débloqué, et je m’en fous, mon égo passe en 2nd plan)</p> <p>Passer son égo au second plan, se taire, et limite baisser les yeux en s’excusant, ce sont les meilleures choses à faire.</p> <p>Ça prouve qu’on peut accepter ses erreurs, se remettre en question, apprendre des personnes qu’on a pu blesser, pour ensuite évoluer, grandir, et partager.</p> <p>L’idée, c’est de se taire, d’écouter, d’apprendre, de comprendre, et enfin de partager, pour espérer rendre le monde un peu meilleur.</p> </div>Histoire de pressionhttp://www.orbitale.io/fr/2021/03/22/histoire-de-pression.html2021-03-22T15:48:21+00:00Alex Rock<div class="post-content e-content" itemprop="articleBody"><p>Je lisais récemment un super article de <a href="https://twitter.com/jesuisundev">@jesuisundev</a> intitulé <a href="https://www.jesuisundev.com/la-faute-du-developpeur/">“C’est la faute du développeur”</a>.</p> <p>Super article, vous devriez le lire, c’est vraiment cool.</p> <p>Du coup, j’ai envie de raconter une petite anecdote corrélée.</p> <h2 id="le-contexte">Le contexte</h2> <p>Je n’ai jamais tenu les deadlines.</p> <p>J’ai toujours dit « Ok, mais je te le dis, ça ne sera pas prêt à temps », et tant pis pour le reste. C’est douloureux, on a souvent beaucoup de pression, la direction est impitoyable, bref, c’est pas de la tarte du tout.</p> <p>C’est aussi une bonne raison pour finir par démissionner.</p> <p>Quand ça m’est arrivé, j’étais là depuis 3 mois, en CDD, et je devais assister un jeune dev sorti de BTS un an plus tôt qui avait passé l’année à réécrire un vieux projet legacy. Du vieux PHP avec des templates smarty sur 10 niveaux de sous-dossiers, aucune organisation, zéro documentation bien sûr, bref, la routine pour des devs PHP chevronnés qui arrivent sur un projet.</p> <p>Évidemment, il a réécrit ce projet en partant de l’existant, parce qu’il connaissait à peine PHP. Moi je bossais sur la partie API qui devait être consommée par des apps partenaires, qui avaient le même genre d’activité commerciale.</p> <h2 id="la-réunion">La réunion</h2> <p>Au bout de de 3 mois après mon arrivée, le projet d’API était très avancé, mais la partie principale de l’appli (le backoffice et le frontend pour les clients) était incomplets. Des bugs partout, des instabilités en masse, bref, c’était pas fini, mais en plus c’était mal fait. C’est tellement dommage qu’un complet junior ait été en charge de l’intégralité de cette “réécriture”, et qu’il n’y ait aucun CTO, aucune équipe, bref, c’est un problème de mauvaise direction.</p> <p>Le boss est venu nous voir et on a commencé une (très) longue réunion.</p> <p>3 heures.</p> <p>On était vendredi. Il voulait mettre en prod le lundi.</p> <p>Mon confrère de l’époque s’écrasant devant ce sexagénaire millionnaire (et passionné par les expatriées russes qu’il prenait en secrétaires, au passage), je prends la tête de l’équipe dev. Ça n’a pas plu au boss, bien sûr…</p> <p>Pendant trois heures je n’ai pas lâché. Le projet n’était pas prêt, on ne mettrait pas en prod. Mon collègue n’en avait rien à faire, il disait “C’est son problème, nous on est payés quand même”. Moi pas. J’ai tout argumenté, en montrant les bugs en direct sur la pré-prod depuis mon ordi du bureau, expliquant tout point par point, il a tout écouté. Au bout de près de 3 heures de délibérations, et après être parti en vrille plusieurs fois contre le boss (oui, je suis sanguin), le boss n’en démord pas non plus.</p> <p>Bref, c’est clairement un gros conflit.</p> <p>Et du coup, l’heure de la fin de journée était passée depuis près d’une heure, tout le monde devait rentrer chez soi (et moi j’avais ma femme qui m’attendait impatiemment avec notre fils pour que je puisse prendre la relève), je tente de maîtriser ma colère et conclus cette réunion en lui disant ceci : « Ok. Lundi matin on arrive à 8h, on met en production. Vous serez là à 8h aussi pour constater les faits. Ça va péter, les clients ne pourront pas commander, vous êtes prévenu. »</p> <p>Devinez quoi ?</p> <p>Surprise.</p> <p>Ou pas.</p> <h2 id="déploiement">Déploiement</h2> <p>Lundi matin, on arrive à 8h (alors qu’on commence à 9h d’habitude), on a déjà tout préparé le vendredi pour la mise en prod, et il n’y a plus qu’un fichier de configuration à changer puis redémarrer le serveur.</p> <p>À 8h pile on est sur le pied de guerre.</p> <p>Le boss n’est pas là. On glande pendant ce temps, on papote, café & compagnie.</p> <p>8h30, le boss n’est toujours pas là.</p> <p>On décide de déployer quand même.</p> <p>On déploie donc à 8h45.</p> <p>Et de notre côté, on va monitorer le site depuis le backoffice et le serveur pour constater les changements. Évidemment, on constate une chute drastique des commandes sur le site assez rapidement. On a même des erreurs JavasScript qui nous sont remontées par notre rapporteur d’erreur côté frontend (on avait déjà prévu ça pour se faciliter le déploiement progressif, mais pas aussi tôt).</p> <p>9h30, un appel du boss sur mon téléphone perso.</p> <p>Je mets le haut-parleur pour que mon collègue entende (et participe, peut-être).</p> <p>« Je viens d’avoir un client habitué au tel, il arrive pas à commander sur le site, ça marche pas ! »</p> <p>Rien qu’à raconter cette phrase rapportée, j’en ai encore des nœuds dans la gorge tellement ça m’a mis en rogne, ça me met encore sérieusement en colère aujourd’hui.</p> <p>Je lui demande où il est, et il est dans un mas luxueux (qui lui appartient) à une vingtaine de kilomètres, il prend son petit déjeuner. Je lui rappelle qu’il devait être là pour le déploiement à 8h. Il me dit qu’il nous faisait confiance. Je lui dis qu’on l’attend au bureau, et qu’on en discutera là seulement. Après une énième engueulade, il a fini par venir au bureau, nous a demandé de remettre l’ancienne version. Ce rollback nous a pris cinq minutes en tout à déployer (on avait tout prévu, j’vous dis 😁). Et évidemment il n’était pas content. Mais on a tenu le coup : on avait raison.</p> <p>Et là, pendant les 2 mois qui ont suivi (ma fin de CDD), j’ai passé mes journées à trouver des solutions embarquées, des partenaires potentiels, bref, tout pour qu’il se débarrasse de son “équipe IT” (un dev junior, et un dev extra-ultra-junior qui connaissait à peine PHP). J’ai trouvé des solutions très intéressante en SaaS qui lui auraient fait économiser bien 50 000 € par an.</p> <p>Puis, ma fin de contrat est arrivée. J’ai continué ma route.</p> <h2 id="post-apo">Post-apo</h2> <p>Dix ans plus tard ses sites sont actifs, mais je n’ai aucune idée s’ils fonctionnent, si la boîte existe, si le boss est à la retraite… Ce genre de pression à la deadline, la performance, ou autre, y’en a partout.</p> <p>Hier encore, un ancien collègue d’une société très connue dans notre petit milieu me parlait du harcèlement qu’il a subi, disait qu’il allait probablement les poursuivre en justice.</p> <p>Je le soutiens totalement dans cette démarche, surtout compte tenu du fait que j’ai démissionné de l’entreprise en question en partie pour ces raisons (mais il y avait d’autres raisons, car je n’ai pas subi autant de harcèlement que ce collègue).</p> <p>Il y a de la responsabilité côté dev, comme le dit <code class="language-plaintext highlighter-rouge">@jesuisundev</code>, d’où l’importance de cet article.</p> <p>Néanmoins, je reste persuadé que la direction est le problème principal. Quand on est employé, il y a un biais cognitif connu face à un supérieur hiérarchique : le biais d’autorité Il ne faut <strong>jamais</strong> oublié que pour beaucoup d’entreprises, la direction commerciale, le management, etc., tout cela a une valeur ÉNORME, et à leurs yeux, les devs sont remplaçables, alors que leurs idées à eux, non.</p> <p>Ce qui fait de nous des “cols bleus”. (<a href="https://fr.wikipedia.org/wiki/Col_bleu_(classe_sociale)">Voir “Col bleu” sur Wikipedia</a>)</p> <p>J’ai dénoncé ça dans <strong>TOUTES</strong> les boîtes dans lesquelles j’ai bossé. Aucune direction n’a évidemment jamais été d’accord avec moi, ce freluquet arriviste qui bidouille son clavier et n’y connait rien au management (Je caricature les “insultes” que j’ai déjà reçues, mais on m’a déjà traité d’arriviste).</p> <h2 id="ne-soutenez-pas-les-gourous-vous-avez-le-choix">Ne soutenez pas les gourous : VOUS avez le choix</h2> <p>Et j’ai envie aussi de le crier haut et fort : si votre boss est une grande figure de la tech, genre créateur d’un super gros projet Open Source, d’un outil très cool, ou autre, sachez que ces personnes-là peuvent tout-à-fait faire la même chose.</p> <p>Un jour, j’étais en visio-conférence avec le boss, un gars ayant fait <a href="https://fr.wikipedia.org/wiki/%C3%89cole_des_hautes_%C3%A9tudes_commerciales_de_Paris">HEC</a> et dev très connu, pour parler des problèmes techniques du projet sur lequel je bossais. Tout bug mettait un temps interminable à être corrigé, par manque de qualité, de tests, et une instabilité totale du code.</p> <p>J’ai expliqué qu’on avait besoin de plusieurs choses :</p> <ul> <li>Au moins un dev en plus sur le projet, et à temps plein, pour consolider le code et corriger les bugs majeurs.</li> <li>Un <a href="https://fr.wikipedia.org/wiki/R%C3%A9usinage_de_code">refactoring</a> ou réécriture de pas mal de trucs.</li> </ul> <p>Il m’a répondu ceci, pratiquement mot pour mot :</p> <p>« Tu vas pas m’apprendre le métier que je fais depuis 20 ans. Tu le fais, c’est tout. »</p> <p>Attitude que j’ai vraiment prise pour de l’arrogance, surtout compte tenu du fait qu’aujourd’hui, des années plus tard, le projet est toujours aussi instable, il est visiblement “laissé pour compte” dans l’entreprise, et il est bidouillé de temps à autres par des devs qui le connaissent à peine, donc le projet change de main régulièrement (ce qui est mauvais pour la santé à long terme d’un projet en général).</p> <p>Ce qu’il connaît depuis 20 ans, sur ce projet, ne s’applique pas.</p> <p>Pourquoi ?</p> <p>Parce que seuls les devs qui bossent dessus, qui plus est lorsque c’est un vieux projet issu d’une <a href="https://fr.wikipedia.org/wiki/Preuve_de_concept">PoC</a> améliorée à l’arrache, savent quels sont les problèmes.</p> <p>Pas le boss qui n’a pas touché au code dudit projet.</p> <h2 id="conclusion">Conclusion</h2> <p>Pour conclure le plus rapidement possible, <em>fuck</em> celles et ceux qui pensent savoir quoi dire aux devs qui connaissent bien leurs projets.</p> <p>C’est vous, les devs, qui devez avoir le fin mot sur vos projets.</p> <p>Vous avez toute la technique, l’historique, vous connaissez l’architecture, les bugs, les instabilités, vous savez tout ça, et vous avez les connaissances et les compétences pour régler tous les problèmes des projets sur lesquels vous travaillez.</p> <p><strong>Vous</strong>.</p> </div>I don’t believe in Open Source anymorehttp://www.orbitale.io/2020/11/12/I-don-t-believe-in-open-source-anymore.html2020-11-12T13:45:07+00:00<div class="post-content e-content" itemprop="articleBody"> <p>I feel like I don’t believe in Open Source anymore.</p> <p>And you, how’s your day?</p> <p>Some reasons:</p> <ol> <li><a href="https://twitter.com/Pierstoval/status/1323258961974435840">https://twitter.com/Pierstoval/status/1323258961974435840</a></li> <li><a href="https://twitter.com/suckup_de/status/1326840923423170560">https://twitter.com/suckup_de/status/1326840923423170560</a></li> <li><a href="https://www.orbitale.io/2019/04/19/capitalism-in-the-open-source-world.html">https://www.orbitale.io/2019/04/19/capitalism-in-the-open-source-world.html</a></li> </ol> <p>Next: continue reading.</p> <p>I think GAFAM/FAANG/NATU/BHATX are just sucking all free knowledge in order to give more money to the richest.</p> <p>Even though some of them sort of “sponsor” open source initiatives, they would still die if there was no open source.</p> <p>Some maintainers literally struggle for a decent mental health, with daytime job and nighttime open source pressure.</p> <p>And yet these people don’t get any reward.</p> <p>Paying them to work full-time on their contributions is IMO the ultimate solution.</p> <p>Also, some people consider that open source is “contributing with code”.</p> <p>It’s not.</p> <p>It’s also helping people on different networks (stack overflow, twitter, slack, discord…), for free, during free time too (or during paid time if you’re lucky).</p> <p>Zero recognition here either.</p> <p>I’m literally tired that everything that pops in my news, mailing lists, social media, related to open source is mostly something like “We’re doing and we open source!” while it’s just a bunch of rich capitalist white guys in the bay area making more money. I know there are still good initiatives. In France for instance we have this (old but becoming popular again) concept of “cooperative companies”, some of them want to do open source in the “good way”. There are others in the world too, I know that.</p> <p>This is just not enough.</p> <p>But everything is still sucked in its essence by big corporations.</p> <p>( Just like everything else, by the way (health, security, democracy, nature…). )</p> <p>And nobody can do anything against that, and that’s what kinda depresses me.</p> <p>The reason why I think I don’t believe in Open Source anymore is because this happens for lower level tools (such as linux kernel, programming languages, libraries, frameworks…) by them being used for money in big companies, thanks to the MIT license.</p> <p>But this also in applications themselves, by them being either abandoned or kicked out of the market by lobbies.</p> <p>Think Gimp, Firefox, LibreOffice, NextCloud, Jitsi, whatever Open Source application that has a closed source alternative (photoshop, microsoft office, and so on).</p> <p>All of them are absolutely great, the concepts are awesome (federations like in Framasoft’s tools Mobilizon, Mastodon and PeerTube for instance).</p> <p>But the paid alternatives, “better in UX” sometimes, are still tracking you, using you, retaining you, and using open source tools</p> <p>Take Curl for instance. It’s the most used HTTP client tool in the world.</p> <p>I bet that <em>any</em> close source software that <em>ever</em> needs to fetch <em>any</em> data from the internet will use Curl.</p> <p>Just imagine if $0.01 was given to @bagder everytime a private software using Curl was sold.</p> <p>That’s what makes me think Open Source is no longer sustainable.</p> <p>Every question on StackOverflow at some point is support someone asks for free.</p> <p>You wouldn’t call your plumbing expert to ask them how to fix your leak. Either do it yourself, or pay them.</p> <p>Same with Open Source.</p> <p>New Open Source licenses must be developed, new funding methods must be legislated.</p> <p>This is the key point in making a fairer digital future, more humanist and just.</p> <p>Open Source must become more political.</p> <p>My Open Source contributions have been more into helping and teaching than coding in the past 7 years.</p> <p>From now on, I’m going to be stricter on help I’ll give.</p> <p>I’m going to slow down code contributions, and focus on my personal health.</p> <p>Unless being paid for it.</p> <p>I’m sorry.</p> </div>Being a PHP developer on Windows: 10 cool snippetshttp://www.orbitale.io/2020/06/25/being-a-php-developer-on-windows-10-cool-snippets.html2020-06-25T09:58:22+00:00<div class="post-content e-content" itemprop="articleBody"> <p>I am coding on Windows, and sometimes, I need aliases, scripts and handy tools.</p> <p>Trust me, if you start learning about windows batch, you will definitely be able to get closer from a unix-like setup, thanks to your tons of scripts :)</p> <p>I have created a <a href="https://github.com/Pierstoval/dotfiles">dotfiles</a> repository a long time ago, like many other developers do, to centralize all the tools that I reuse across my computer setups. I actually have only 2 computers and I did not change my machine for years, so I do not need it often, but I still keep it up-to-date “just in case”, or for showcase.<br /> That is what this post is about.</p> <p>I am particularly proud of some really handy scripts, so here it is:</p> <h1 id="my-top-10-snippets-to-make-life-better-for-php-devs-on-windows">My top 10 snippets to make life better for PHP devs on Windows</h1> <p>Let’s start!</p> <p><strong>🚀</strong></p> <h2 id="1-mysql-in-a-blink-of-an-eye">1. MySQL in a blink of an eye</h2> <p><strong>Snippet</strong>: <a href="https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/mysqldocker.bat">https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/mysqldocker.bat</a></p> <p>Start MySQL using docker in 1 second so you can reuse it anytime, while even keeping its data persistent:</p> <p>This script will start a global Docker container named <code class="language-plaintext highlighter-rouge">mysql</code> with port <code class="language-plaintext highlighter-rouge">3316</code> (to avoid conflicting with other servers).</p> <p>Now you can connect to it using the <code class="language-plaintext highlighter-rouge">root</code> / <code class="language-plaintext highlighter-rouge">root</code> username/password couple, and the <code class="language-plaintext highlighter-rouge">127.0.0.1</code> hostname!</p> <p>To run a shell on it, run <code class="language-plaintext highlighter-rouge">docker exec -i mysql mysql -uroot -proot</code>.</p> <p><strong>Pro tip</strong>: Create an alias for the above snippet and run it whenever you want to launch a <code class="language-plaintext highlighter-rouge">mysql</code> shell on your container 😉.</p> <h2 id="2-traefik-in-a-blink-of-an-eye">2. Traefik in a blink of an eye</h2> <p><strong>Snippet</strong>: <a href="https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/traefikd.bat">https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/traefikd.bat</a></p> <p>This one launches an instance of Traefik using Docker.</p> <p>⚠️ Note that this instance will <strong>listen to ports 80, 8080 and 443</strong>, so be careful with your other projects or tools that might also listen to these ports!</p> <p>When running globally like this, Traefik can be used as a proxy to organize your projects and their architecture.</p> <h2 id="3-symfony-binary-the-http-server">3. Symfony binary, the HTTP server</h2> <p><strong>Snippet</strong>: <a href="https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/sfserve.bat">https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/sfserve.bat</a></p> <p>The Symfony CLI binary is sometimes really problematic because it will crash from time to time on Windows, and you <strong>do not even get a notice</strong> (nor a reason why it crashed either). I noted that sometimes it happens during a <code class="language-plaintext highlighter-rouge">composer install</code> or <code class="language-plaintext highlighter-rouge">composer update</code>, but I do not know what it has to do with. Possibly cache, or something.</p> <p>Anyway, I sometimes prefer to run it in an infinite loop so that any server crash will restart it afterwards.</p> <p>That is what this snippet does, basically.</p> <p><strong>Note</strong>: this will be running in front in a terminal window, so I suggest you run it in a separate terminal instance or tab.</p> <h2 id="4-symfony-binary-the-php-server">4. Symfony binary, the PHP server</h2> <p><strong>Snippet</strong>: <a href="https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/stopphp.bat">https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/stopphp.bat</a></p> <p>Symfony CLI on Windows will try to use <code class="language-plaintext highlighter-rouge">php-cgi.exe</code> when starting a server, and there are some inconsistencies when stopping <code class="language-plaintext highlighter-rouge">php-cgi</code>. When doing <code class="language-plaintext highlighter-rouge">symfony server:stop</code>, sometimes, it is… not really stopped.</p> <p>So I execute this <code class="language-plaintext highlighter-rouge">stopphp</code> snippet and I am 100% certain that no other server will be running.</p> <h2 id="5-merge-pdfs-on-windows-using-ghostscript">5. Merge PDFs on Windows using GhostScript</h2> <p><strong>Snippet</strong>: <a href="https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/merge-pdfs.bat">https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/merge-pdfs.bat</a></p> <p>If like me you sometimes have to merge PDFs together, install <a href="https://www.ghostscript.com/download/gsdnld.html">Ghostscript for Windows</a>, make <code class="language-plaintext highlighter-rouge">gs.exe</code> available in the <code class="language-plaintext highlighter-rouge">PATH</code>.</p> <p>You can then do <code class="language-plaintext highlighter-rouge">merge-pdfs pdf1.pdf pdf2.pdf ...</code> and it will create an <code class="language-plaintext highlighter-rouge">output.pdf</code> file in the current dir!</p> <h2 id="6-get-current-timestamp-with-windows-cmd">6. Get current timestamp with Windows cmd</h2> <p><strong>Snippet</strong>: <a href="https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/localdate.bat">https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/localdate.bat</a></p> <p>Seriously, getting “time” values in Windows <code class="language-plaintext highlighter-rouge">cmd</code> is cumbersome.</p> <p>So, I created this <code class="language-plaintext highlighter-rouge">localdate</code> script.</p> <p>It outputs the date formated like this: <code class="language-plaintext highlighter-rouge">2020-06-25 11:49:25.161</code>.</p> <h2 id="7-stop-all-running-containers-with-docker-for-windows">7. Stop all running containers with Docker For Windows</h2> <p><strong>Snippet</strong>: <a href="https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/dockerstopall.bat">https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/dockerstopall.bat</a></p> <p>Stop all running docker containers by running this <code class="language-plaintext highlighter-rouge">dockerstopall</code> script!</p> <p>You should be able to backport this script to other platforms, by the way.</p> <h2 id="8-git-aliases">8. Git aliases</h2> <p><strong>Snippets</strong>:</p> <ul> <li><a href="https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/gst.bat">https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/gst.bat</a></li> <li><a href="https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/gd.bat">https://github.com/Pierstoval/dotfiles/blob/main/windows_bin/gd.bat</a></li> </ul> <p>Here comes the legendary <code class="language-plaintext highlighter-rouge">gst</code> alias that just executes <code class="language-plaintext highlighter-rouge">git status</code>, or <code class="language-plaintext highlighter-rouge">gd</code> that executes <code class="language-plaintext highlighter-rouge">git diff</code>.</p> <h2 id="9-create-daemons-on-windows">9. Create daemons on Windows</h2> <p>Windows does not really have this concept of a “daemon”, but instead it has a similar concept: “services”.</p> <p>To create a service, it is theoretically easy to do with the built-in <code class="language-plaintext highlighter-rouge">sc</code> command on Windows.</p> <p>However, this program is not really intuitive, and <code class="language-plaintext highlighter-rouge">sc create</code> is not easy as it looks at first glance.</p> <p>That is why I am using <a href="https://nssm.cc/download">NSSM</a>, and I added it to my dotfiles so I don’t have to re-download it from its main site each time I setup a new machine.</p> <p>I already talked about <a href="https://www.orbitale.io/2017/11/11/apache-and-php-fpm-in-windows.html">NSSM in a previous post about Apache and PHP-FPM on Windows</a>, check it out.</p> <p>You now can create daemons by running <code class="language-plaintext highlighter-rouge">nssm install </code>, and you can then <strong>customize everything</strong>: binary, arguments, working directory, environment variables, i/o, timeouts, rotate log files…<br /> <strong>Everything</strong>.</p> <h2 id="10-unix-alias-equivalent-for-windows">10. Unix <code class="language-plaintext highlighter-rouge">alias</code> equivalent for Windows.</h2> <p>Since Windows does not have a shell similar to <code class="language-plaintext highlighter-rouge">sh</code> or <code class="language-plaintext highlighter-rouge">bash</code>, you cannot have a one-single file to store your aliases, and cannot do something like <code class="language-plaintext highlighter-rouge">alias something="my other command"</code>.</p> <p>Therefore, what you need is to write <code class="language-plaintext highlighter-rouge">.bat</code> or <code class="language-plaintext highlighter-rouge">.cmd</code> files with your script alias, and make sure this file is accessible in the <code class="language-plaintext highlighter-rouge">PATH</code> environment variable.</p> <p>I then got tons of other shortcuts like that, such as “dcp” for “docker-compose” or “sf” for “php bin/console”. Check the</p> <p>I have shared in point n°8 my aliases for Git, but you can actually create tons of other aliases!</p> <p>What I like the most is that since Windows does not support hashbangs/shebang lines (the <code class="language-plaintext highlighter-rouge">#!/bin/bash</code> line you see on top of many unix-compliant executables), you can somehow “bypass” this by creating an alias to any non-Windows executable.</p> <p>Here is an example for <code class="language-plaintext highlighter-rouge">php-cs-fixer</code>:</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>@echo OFF :: <span class="k">in case</span> DelayedExpansion is on and a path contains <span class="s2">"!"</span> setlocal DISABLEDELAYEDEXPANSION php <span class="s2">"%~dp0php-cs-fixer.phar"</span> %<span class="k">*</span> </code></pre></div></div> <p>Let me explain all of this, since there is a lot of code for a few behavior:</p> <ul> <li><code class="language-plaintext highlighter-rouge">@echo off</code> is here to avoid Windows to output <strong>every line</strong> of the cmd script when you execute it.</li> <li><code class="language-plaintext highlighter-rouge">::</code> is a line-comment (well, it is actually not, it in fact is a goto/call label, but as it is always invalid since <code class="language-plaintext highlighter-rouge">:</code> is an invalid label, it then works just like a comment). You could also have used <code class="language-plaintext highlighter-rouge">REM</code> instead (which stands for “remark”).</li> <li><code class="language-plaintext highlighter-rouge">setlocal DISABLEDELAYEDEXPANSION</code>, is a safety mark to avoid having issues with the <code class="language-plaintext highlighter-rouge">!</code> character. There is a really nice explanation on <a href="https://stackoverflow.com/questions/22278456/enable-and-disable-delayed-expansion-what-does-it-do">this StackOverflow issue</a> if you are keen to learn more about this statement.</li> <li>We start the instruction with the <code class="language-plaintext highlighter-rouge">php</code> binary, that should be accessible from the <code class="language-plaintext highlighter-rouge">PATH</code>.</li> <li>The <code class="language-plaintext highlighter-rouge">%~dp0</code> instruction contains more information than it looks: <ul> <li><code class="language-plaintext highlighter-rouge">%0</code> is equivalent to <code class="language-plaintext highlighter-rouge">$0</code> in a Unix-like script, which contains the file being executed (your <code class="language-plaintext highlighter-rouge">.bat/.cmd</code> file).</li> <li><code class="language-plaintext highlighter-rouge">~</code> is a modifier that operates on the <code class="language-plaintext highlighter-rouge">0</code> var being processed, and will trim <code class="language-plaintext highlighter-rouge">"</code> characters around the filename.</li> <li><code class="language-plaintext highlighter-rouge">d</code> is a modifier that forces to expand to a drive letter, if it was not present.</li> <li><code class="language-plaintext highlighter-rouge">p</code> makes sure that the variable is expanded to full path, to have the “real path”.</li> </ul> <p>There also is a nice <a href="https://stackoverflow.com/questions/5034076/what-does-dp0-mean-and-how-does-it-work">StackOverflow issue</a> explaining the other modifiers you can use to expand variables to paths in Window batch scripts.</p> </li> <li>Then, we glue the “full directory path” with the <code class="language-plaintext highlighter-rouge">php-cs-fixer.phar</code> PHAR file (which you could replace with anything else you wanted to execute, hence the reasons why I have many cmd scripts looking similar).</li> <li>Finally, the <code class="language-plaintext highlighter-rouge">%*</code> instruction is similar to <code class="language-plaintext highlighter-rouge">$@</code> in unix scripts: it expands to all the other arguments you passed to the current scripts.<br /> With something like this: <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>php-cs-fixer.bat fix --config=.php_cs </code></pre></div> </div> <p>It will expand to this:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>php c:\path\to\php-cs-fixer.phar fix --config=.php_cs </code></pre></div> </div> <p>In this case, <code class="language-plaintext highlighter-rouge">%*</code> equals <code class="language-plaintext highlighter-rouge">fix --config=.php_cs</code>.</p> </li> </ul> <p>Wow, all these explanations on how to create aliases!</p> <p>In the end, what you mostly have to do is copy/paste any existing alias-file, and thoroughly check it to make sure it works properly.</p> <p>Create everything you need in the same way to have a much better windows cmd experience!</p> <p>Hope you liked this post 😄.</p> </div>An attempt to use SvelteJS with Denohttp://www.orbitale.io/2020/06/04/an-attempt-to-use-sveltejs-with-deno.html2020-06-04T16:20:56+00:00<div class="post-content e-content" itemprop="articleBody"> <blockquote> <p>First, sorry that this post is so disorganized, I did not find enough energy to make a better post architecture.</p> </blockquote> <p>I definitely would like <a href="https://svelte.dev/">Svelte</a> to be usable with <a href="https://deno.land/">Deno</a>, so I tried several methods in order for it to work in the past weeks. I’m close to it, but for now it’s not perfect. If you know an easier method, please tell me!</p> <p>I first tried <a href="https://github.com/Pierstoval/svelte/commits/deno">on this branch</a> to raw-include node.js dependencies and allow building the entire Svelte stack with Deno.</p> <p>I made a lot of tests and I think these tests were a lot of time lost for nothing.<br /> It took me a while before I realized that this method was impossible: Svelte is tightly coupled to its dependencies (<code class="language-plaintext highlighter-rouge">estree</code>, <code class="language-plaintext highlighter-rouge">acorn</code>, and many others), so moving the entire ecosystem to Deno is not even thinkable, at least not today.</p> <p>After a while, I tried compiling Svelte’s compiler as an <abbr title="ECMAScript Module">ESM</abbr>, and it was actually quite easy.</p> <blockquote> <p>If you wonder about <abbr title="ECMAScript Module">ESM</abbr>, <abbr title="CommonJS">CJS</abbr>, <abbr title="Asynchronous Module Definition">AMD</abbr>, <abbr title="Universal Module Definition">UMD</abbr> and all these strange acronyms, I suggest you check out <a href="https://irian.to/blogs/what-are-cjs-amd-umd-and-esm-in-javascript/">this blog post</a> which explains it very well. To sum it up quickly here, we want ESM, because it’s the best standard, but Node.js is based on CJS.</p> </blockquote> <p>Svelte is built with <a href="https://rollupjs.org">Rollup</a>, one of the JS bundlers that exist in the Node.js world (alongside with Webpack, the most known one). It already has a nice and clear building configuration, even for people like me that have never heard about Rollup before looking at Svelte’s source code.</p> <p>I find Rollup to be very interesting, maybe even easier to try than Webpack, but experts might give me some arguments to contradict me, I don’t know, I’m no expert on this side of the dark JS world.</p> <p>As Svelte already builds its <code class="language-plaintext highlighter-rouge">runtime</code> to <abbr title="ECMAScript Module">ESM</abbr> as well as <abbr title="Common JS">CJS</cabbr>, we just need to build the <code class="language-plaintext highlighter-rouge">compiler</code> to <abbr title="ECMAScript Module">ESM</abbr> in order to use it.</abbr></p> <p>That’s why I created a small PR to add this: https://github.com/sveltejs/svelte/pull/4972</p> <p>I also created a small <a href="https://github.com/Pierstoval/svelte_esm">proof of concept Project</a> to try out my ideas.</p> <p>This actually worked very well!</p> <p>Until… I ran the server.</p> <p>The code generated with Svelte’s compiler is not fully working.</p> <p>The issue?</p> <p>Well… <a href="https://github.com/sveltejs/svelte/issues/4806">I’m not the only one</a>. The <code class="language-plaintext highlighter-rouge">svelte/internal</code> component is necessary, and the compiler considers that it’s available to the generated code. Which is not the case.</p> <p>If you want to use it, you must include <code class="language-plaintext highlighter-rouge">svelte/internal</code> somewhere and make it available.</p> <p>For the <abbr title="Server-side rendering">SSR</abbr> version of the generated code, it’s working because I added a <a href="https://github.com/Pierstoval/svelte_esm/blob/master/compile.ts#L36-L39">dirty fix</a>:</p> <div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/* /!\ Dirty fix */</span> <span class="kd">const</span> <span class="nx">JS_SSR</span> <span class="o">=</span> <span class="nx">compiledSsr</span><span class="p">.</span><span class="nx">js</span><span class="p">.</span><span class="nx">code</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span> <span class="dl">'</span><span class="s1">"../svelte/internal"</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">"../svelte/internal/index.mjs"</span><span class="dl">'</span> <span class="p">);</span> </code></pre></div></div> <p>This fix takes the <code class="language-plaintext highlighter-rouge">svelte/internal</code> import statement and replaces it with <code class="language-plaintext highlighter-rouge">svelte/internal/index.mjs</code>.</p> <p>With this change, it works!</p> <p>At least, the server.</p> <p>For frontend-side rendering, I still need to find the issue with the compilation process, but maybe I’ll find something at some point.</p> </div>Free and conscious helphttp://www.orbitale.io/2020/05/16/free-and-conscious-help.html2020-05-16T22:00:59+00:00<div class="post-content e-content" itemprop="articleBody"> <p><img src="https://www.orbitale.io/img/wall-e-ring-box.jpg" alt="Wall-e ring box" /></p> <p>I recently stumbled upon a reddit thread talking about how “bad” it is supposed to be that <a href="https://pestphp.com/">Pest PHP</a>, an upcoming testing framework based on <a href="https://phpunit.de/">PHPUnit</a>, is funded by people but claimed to be open-source.</p> <p>The goal of this funding seems to be that Nuno makes his package available only to people that fund him, but when funding reaches a top goal, it will be open-source for everyone. Correct me if I am wrong (please).</p> <p>I sincerely do not really know what to say about this (well, I actually do, hence this post). After all, if <a href="https://nunomaduro.com/">Nuno Maduro</a> (which I met once and he’s a really nice person), the author of Pest PHP, wants to fund his project so it can pay his bills and at the same time allow a new project to become open-source one day, let’s do it, I will not mind nor rant about this.</p> <p>However, maybe you have read the title of this post before actually reading it (else, tell me, I definitely like weirdos like me), it makes me think about something that I try my best to have in my life but which is really hard to achieve.</p> <p>But first, some context.</p> <p><small>(sorry, that will be <em>a lot</em> of context…)</small></p> <h2 id="my-journey-through-pricing">My journey through “pricing”</h2> <p>You might have noticed with my tweets and posts that I am not really far from being politically left, if not <a href="https://en.wikipedia.org/wiki/Social_justice_warrior">SJW</a>. Judge by yourself.</p> <p>This is a way of life that I have been on for years now, if not decades (time flies…).</p> <p>A couple of years back, during my search for better ways of living our lives, I met some really neat people that were artists living in communities in the countryside. Meeting them has changed my life a lot.</p> <p>They live in yurts, tiny houses, or very modern small houses, really close to nature, with permaculture, lots of humanism, home-schooled kids crawling around and risen by every available people in the community and not only their parents, etc.</p> <p>This is very similar to the <a href="https://en.wikipedia.org/wiki/Twin_Oaks_Community,_Virginia">Twin Oaks</a> community in the USA, but less than two hours from my home in France.</p> <p>There, they helped me learn more about group communication (and as a person with autism, I definitely need some training on this subject), but also flat hierarchy (no chief, only common decisions), share, and economical “ungrowth”.</p> <p>But let us get back on rails: they also helped me learn about a new concept.</p> <p>The concept of “free and conscious price”.</p> <p>Keep reading, we will come back to tech after a while.</p> <h2 id="price">Price</h2> <p>Price.</p> <p>What an interesting word, isn’t it?</p> <p>Have you ever wondered what “price” you can put on things?</p> <p>I mean, in France, the price of a baguette bread 🥖 is less than 1 euro at the time I write this post.</p> <p>Do you really think this is worth it?</p> <p>A car also has a price.</p> <p>Taking a train ticket has a price.</p> <p>Everything.</p> <p>(well, sort of)</p> <p>I always thought that the concept of price was really important to “give things value”. Bread has a value because it’s food, and food is necessary.</p> <p>But I started to find this concept of “price” absurd at some time.</p> <h2 id="the-price-is-absurd">The price is absurd</h2> <p>The best example I have about this absurdity is in 2008.</p> <p>I was working at a call-center, not yet in computer programming, and to get to the office, I had to take a bike, ride a few miles, take a train for 30 minutes, then ride again a few more miles. At this time, I had a car, but it was way cheaper to ride my bike because a monthly subscription for the train was way cheaper than putting gas in the car.</p> <p>Then, in late 2008, the top of the petrol crisis came to France, and there were complaints and stuff, but mostly, strikes because of the high price of gas.<br /> Trains were unscheduled, so I couldn’t take a train to go to work.<br /> Fine, I would take my small car, it would take more time than train, I would be stuck in traffic because everyone had to take the car because of the strikes, etc.<br /> At some point, I had to fill my tank with gas.</p> <p>But it was not possible. Shortage. Because everyone was so crazy and paranoid that they took way more gas than usual (people were filling multiple petrol cans to bring home, even thought it was forbidden during the shortage), they caused the shortage.</p> <p>So, I could not go to work anymore, I was fired because of that, and I saw the rise of the prices in gas stations.</p> <p>I was horrified.</p> <p>During the year, the prices rose so high that it caused a global crisis.</p> <p>Do you remember why the price of petrol grew so high?</p> <p>Because “people” (and industries) needed more of it.</p> <p>The concept of price here is determined by <strong>how much people want of it</strong>. The more people want, the higher the price.</p> <p>Economists call this common supply and demand.</p> <p>I personally call this absurdity.</p> <p>Supply and demand is absurd to me because the way you build your product can be the exact same, it is just that you will ask more money for it because more people want it, but most of the time, in our world, it does not cost more to make, it is just an opportunity to be certain to sell and make more money (and more dividends for shareholders).</p> <p>The thing about all this is that the concept of “price” is <strong>always subjective</strong>.</p> <p>Some tribes will find it totally useless to have a diamond ring.<br /> Jet set rich people will find it really important to spend millions in a collection of sports cars.</p> <p><strong>Remember this:</strong></p> <p><strong>The price of something depends only on how much the society you live in evaluates it.</strong></p> <p>This representation is the precise reason why we laugh at Wall-E when he throws away the wedding ring and keeps the ring box.<br /> Because we think that Wall-E is stupid to throw something that has “so much value” and keep an “undervalued” item.<br /> Think about it.</p> <p>If we fixed the value of things, the entire society you live in would totally change, including the price of a house, the salary you earn each month, or even the price of my beloved baguette.</p> <p>Free and conscious price is a real counter argument to this capitalist view of the concept of “price”.</p> <p>Let’s explain a bit.</p> <h2 id="why-change-societys-representation-of-pricing">Why change society’s representation of pricing?</h2> <p>Well, there are many reasons to do so.</p> <p>I will take an example to illustrate this change.</p> <p>Furniture.</p> <p>Ikea is probably the most known company to sell furnitures.</p> <p>But do you even remember how we did buy furnitures before the 20th century?</p> <p>I’ll tell you: we had to hire artisans.</p> <p>Before industries came out, artisans were the <strong>only way</strong> to buy furnitures.</p> <p>If you could not afford to <strong>buy</strong>, you had to <strong>build</strong>.</p> <p>Today, the famous “Lack” squared table from Ikea costs approximately 10 €.</p> <p>Hiring an artisan to build a similar table, whatever the material, will definitely cost at least 10 times more.</p> <p>One single reason for this difference:</p> <p>Ikea automatized the process of creating the table through industry, therefore making a lot of profit because one person can build hundreds of tables pieces by using really performant machines.</p> <p>Seems obvious, isn’t it?</p> <p>But now, see the impact: nowadays, we <strong>set the value</strong> of a small low squared table to 10 €, whereas it was valued more than ten times this price in the past.</p> <p>What capitalism taught us too is that since it is “cheaper”, it is “less valued”, therefore breaking it or losing it is “not so bad”, compared to breaking a table that is “worth” ten times the price.</p> <p>Before massive industries were the norm, we had to value our goods, we had to value items because they had a high price and the artisan put time and energy (and maybe passion) into it, so we accredited a lot of value on it.<br /> Now, we give less, if not “no”, value to the same kind of item, because industry came here.</p> <p>Enough about furniture.</p> <p>I hope you got the point here.</p> <p>If everyone kept their goods and gave them as much “value” as what we gave before massive industry, we would not need to buy a new “Lack” table every once in a while, because we would take more care of it, we would repair it once broken, we would give it to our kids when they get their first student’s appartment, and they would also take care of it, etc., I bet you understood.</p> <p>I would like us to <strong>see the value of things differently</strong>.</p> <p>The community that I met earlier taught me that <strong>if you change the perception of the “value” of something, you change its price</strong>.</p> <h2 id="now-what-about-pricing-in-tech">Now, what about pricing in tech?</h2> <p>In tech, there’s a big dichotomy when we talk about open-source and tech billing.</p> <p>Open-source is supposed to be free (most of the time), but we have a job and this job needs a salary.</p> <p>Luckily, we IT engineers have really nice salaries, so we have high expectations when looking for new contracts or new employers.</p> <p>But on the other side, we provide open-source tools <strong>for free</strong>.</p> <p>I would like to talk more about the rant that happened on Reddit against Pest PHP.<br /> On a particular comment:</p> <blockquote> <p><em>You want me to give you $14 each month to receive access to a few libraries you made?</em></p> </blockquote> <p>This person seem to think that funding a free and open-source tool for $14 per month is not worth it.</p> <p>Okay, let’s talk about numbers now.</p> <p>I do not know how much Nuno is paid by his current employer right now, but I guess a nice amount, considering his skills and the type of company.<br /> I will take an arbitrary value, just to imagine.</p> <p>If he was paid $3000 per month, this would result into $18 per hour (approximately, of course).</p> <p>So, the person who rants here is saying that he (yes, I consider “he” because his nickname is “_codeguy”) would not consider that Nuno is worth $14 <strong>per month</strong>, even though he <strong>is</strong> worth $18 per hour?</p> <p>This is the best example of an <strong>economical representation bias</strong>.</p> <p>“_codeguy” thinks that even though Nuno works for a private company and develops private tools at a “high value”, the work he does to make it free for everyone has “low value”, but when I say “low”, I say “very very low”, because Nuno spends tons of hours for his project, he invests a lot of time, and the only thing he asks for is that people “thank” him somehow by allowing him to pay his bills while working for the community, if not “the world”.</p> <p>Even though I disagree with the plan (I still think everything should be free and open-source, not “paid to be open-source”), I totally understand and support Nuno on his project, because I know he invests passion in it and his goal is to help our community.</p> <p>Making stuff for people is the essence of this concept of “free and conscious price”.</p> <p>Nuno’s proposal starts at $5 but you can give whatever you want “starting this point”.</p> <p>This is what I learnt in the community I talked about earlier.</p> <p>If I want something, I know there will be a “fixed base price”, usually very very low, but I can give whatever amount I want above this.</p> <p>With this concept, these permaculture fans I befriended with organized a small festival and I was really happy to pay a lot for plain orange juice for me and my kids, even though I know it would have cost me way less if it was in a restaurant or a bar, because I knew these folks were great, they built awesome things, they were nice, and their festival was really good and secured for kids, and lots of other stuff.<br /> Even though this orange juice I could have paid nothing, because they were offering it to the community with a “free and conscious price”.</p> <p><strong>We had to determine the value of things by ourselves depending on our experience with what we paid for, instead of relying on a higher class (society, the economy…) to determine the value for us.</strong></p> <p>And that’s great.</p> <h2 id="conclusion">Conclusion</h2> <blockquote> <p><small>(Please, this post is too long, please conclude!)</small></p> </blockquote> <p>On reddit, “_codeguy” says that he thinks “open-source is going to die” in some way because people ask for funding for their free and open-source project.</p> <p>I think not.</p> <p>On the contrary, I think this is just the beginning, because maintainers are telling people that the free work they’ve been giving to the world for the past fifty years is worth a value, and that this value has to be fair.</p> <p>“Free and conscious price” is the way to go, because it will allow people to determine the value of some project by themselves, based on their real experience of it, instead of relying on some “supply and demand” absurd thing.</p> <p>In tech, supply and demand cannot happen (and should not happen) because we deliver digital products that can be replicated at will. The only limit is hardware, and developers usually do not sell hardware, <strong>they sell their brain time</strong>.</p> <p>This brain time currently has a lot of value, but when it is open-sourced, companies find it very low valued (else, they would inject millions in funding open-source projects, but they do not).</p> <p>The ideal dream of open-source maintainers is to be paid to work on open-source projects.</p> <p>I am pretty sure that they would even accept to be paid less than what they are paid today if it was to work only on open-source projects with as much freedom as what they already have today on their project.</p> <p>Open-source maintainers <strong>help us devs daily</strong>. Without them, our industry would collapse.</p> <p><strong>So let’s pay them with free and conscious prices, for the free and conscious help they give to us.</strong></p> <p>We should value open-source for its worth.</p> <p>We should value the artisans that build our furniture.</p> </div>