Non, PHP n’est pas « OK boomer »

Il y a quelques jours je suis tombée sur cet article, réponse à un tout autre billet de blog que j’avais plutôt trouvé pertinent.

J’ai été à la fois dev et lead dev. J’ai pu me confronter à des problématiques de gestion d’équipe dans une structure où il y avait quelques soucis qui ne dépendaient pas de moi, et ça retraçait assez fidèlement ce qu’une boite doit faire pour garder une bonne équipe. Ce n’est pas uniquement une affaire de garder un dev, mais garder une vraie équipe soudée et productive dans la satisfaction. A mes yeux, une boite qui comprend ces points a un gage de qualité. Mais passons, ce n’est pas le sujet. Le sujet a été une seule phrase, tellement absurde que je n’ai pu m’empêcher de la twitter : « Twitter a démarré avec Ruby; Facebook avec PHP ; deux technologies bien pourries et so OK Boomer aujourd’hui. » (sic).

Déjà, ça manque d’argument, pourquoi « pourries », et puis ce « ok boomer » tellement dénué de sens …

Je n’ai pas d’affinité particulière avec Ruby, j’ai déjà bidouillé avec Ruby On Rails, que j’ai trouvé pas mal … mais sans plus.

Pour moi PHP représente tout la dynamique du web, et pour preuve, c’est le rare qui tienne encore debout et qui ait autant de popularité depuis 25 ans. Je ne parlerai pas de Go, qui a sa côte de popularité, mais tout frais, ou de Javascript qui a engendré NodeJS qui pour moi est plus une mode. Javascript n’a son intérêt qu’en front-end, à mes yeux.

Au commencement … il y avait … juste du script pour page HTML en fait …

Je me suis mise en premier à PHP car c’était à mes yeux celui qui allait pérenniser, j’ai eu comme une intuition qui me disait de foncer dedans. Car ce n’était pas gagné, au début des années 2000, les entreprises préféraient embaucher des développeurs ASP ou J2EE pour leur back-end et applications web. Fraîchement sortie des bancs de fac, je ne pouvais pas payer et investir pour apprendre ASP sur un serveur dédié, alors que PHP est disponible gratuitement.
Je passe cette discussion avec le « petit Gregory du Japon » (il se reconnaîtra) qui m’avait balancé en 2000 : « si tu fais un jour du PHP je me ferai nonne. Oui, tu as bien lu : NONNE ». Challenge accepted. J’attends toujours que tu mettes le voile, Greg.
Donc j’ai continué à me pencher sur le vilain petit canard, ce PHP qui pouvait « additionner des salades avec des macaronis ». Et il suffit de regarder du code legacy pour se rendre compte de ses faiblesses … le PHP 4 objet avec ses constructeurs spéciaux (car le langage n’avait pas au départ été conçu pour le modèle objet), il fallait parfois réinventer la roue pour faire des itérateurs, ses noms de fonctions natives à la one-again (on a str_​getcsv et puis après strchr, un coup underscore, un coup pas, logique les gars ?) et surtout son faible typage (toujours d’actualité mais en voie de progrès. Mais n’est-ce pas un bon point, aussi ?). Mais PHP était un langage facile à apprendre, et il l’est toujours : pour ceux qui veulent se faire la main en programmation, c’est un bon début.

Le souci de qualité

Pourtant 25 ans après, PHP est on ne peut plus présent, ASP ne fait plus parler de lui et J2EE se raréfie. Il est même devenu plus costaud qu’avant … son modèle objet se peaufine, le typage se fait de plus en plus strict, et puis les librairies évoluent de plus en plus notamment avec l’apparition de SPL, mais également des librairies. Vanilla PHP n’est plus trop d’actualité, on a vu apparaître PECL, PEAR, et aujourd’hui la star c’est Composer, qui permet d’installer à la volée bon nombre de bibliothèques, et d’analyseurs syntaxiques. Car le développeur PHP d’aujourd’hui est soucieux de la qualité de son code : il fait appel à des analyseurs (notamment PHP-Stan) et produit des tests unitaires et des tests fonctionnels (Behat …).

La puissance des frameworks et des design patterns

La force de PHP, après avoir proposé moult CMS tels que SPIP, Joomla … dans les années 2000, a résidé dans l’apparition des frameworks, qui ont solidifié les bases du langage pour permettre non seulement aux devs de coder plus proprement, mais également de pouvoir définir des architectures évoluées en fonction des design patterns (ce qui fait de plus en plus penser à une structure type JAVA) : Zend Framework, Symfony et Laravel en tête de liste. Des architectures qui évoluent et peuvent solliciter efficacement des API REST pour permettre une mobilité des données, segmenter le code en multi-repositories pour permettre une meilleure maintenabilité du code. Et par ce biais, a permis aux CMS d’évoluer, on pense à Drupal ou Prestashop qui ont intégré Symfony dans leur code.

PHP a également gagné en performance et scalabilité grâce à FPM, qui permet de pouvoir lancer plusieurs versions du serveur. Et by the way, Facebook utilise toujours PHP … en sous-marin mais toujours …

Toujours en évolution !

A ce jour, PHP 8 est en prévision, avec plein d’améliorations, notamment le Just In Time. Et j’avoue avoir bien reçu PHP 7.4, car je l’avais attendue longtemps depuis des années, cette feature : PHP 7.4 intègre les déclarations de type d’argument. Enfin on peut typer les propriétés d’une classe !!! Yes we can ! Yalla !

Aujourd’hui PHP est devenu plus qu’un simple outil de scriptage pour sites web :
– il permet de réaliser des scripts en ligne de commandes et tâches automatisées, et on peut même créer des exécutables !
– il permet de programmer de vraies applications web
– il permet efficacement de se connecter avec une base de données, de manière de plus en plus sécurisée via les requêtes préparées

Il est PARTOUT, et même Microsoft, qui avait lancé ASP, le soutient dans les séminaires. Les débutants peuvent facilement l’appréhender en manipulant progressivement leurs pages HTML, et en guise de cerise sur le gâteau, la communauté des développeurs PHP est LARGE, depuis toujours. Vous séchez ? Vous avez obligatoirement des forums, des sites, la doc officielle régulièrement mise à jour, des Slacks pour vous aiguiller. Et il reste open-source et gratuit !

Alors sérieusement, PHP, un langage pourri et OK Boomer ?

Devs : on a tous débuté …

Rappelez-vous : dans mon article « Fuck you Masterboy », je mentionnais ce fameux site où j’avais crée mes premières lignes en PHP. C’était vers 2002-2003. Et comme je le mentionne dans « Comment archiver sans trop pleurer », je suis en train de gratter dans mes sources pour déterrer mes vieux projets.

Et ça tombe bien, j’ai trouvé les sources de ce site, que je mets à dispo sur Github : amelaye/MasterboyForEver . Alors pourquoi je fais ceci car en fait, c’est assez difficile de le faire marcher, peut-être même impossible pour certains.

J’y suis à peu près arrivée avec de la patience …

Parce qu’il y a eu beaucoup de mes élèves, lors des cours que j’ai menés, qui ont pas mal culpabilisé. Entre autres une jeune femme remplie de détermination et de bonne volonté, mais également dotée d’une faible confiance en elle, que j’avais mentorée pour Openclassrooms. J’avais énormément apprécié cette mission, car elle avançait vite et elle voulait réussir son année, des qualités qu’on prof/mentor ne peut qu’admirer. Elle (ainsi que d’autres) tenait hélas parfois une petite moue, et un œil triste « mais non je fais de la m…, la preuve je peux pas être autonome, je pompe des scripts par ci par là, je comprends pas pourquoi ci pas pourquoi ça, toi tu sais le faire, je voudrais coder comme toi. » … Et là, en position de lotus dans ma toge blanche, je lui répondais systématiquement « de temps et de patience tu necessiteras … ». Car ses doutes étaient normaux, je les avais traversés. Du coup j’ai eu envie de raconter l’histoire de ce site et de son affreux code qui marchait quand même.

Pour contextualiser le projet, en fin 2002 j’étais en licence pro internet, sortant d’un BTS qui n’avait rien à voir, et n’ayant à mon actif que des sites full HTML et bidouillages JS. La programmation, je n’en avais aucune notion, et la pire des surprises que cette licence m’avait faite a été de commencer par l’apprentissage de …

… JAVA …
Oui. Ils ont fait ça.

Bon bref, inutile de dire que j’avais complètement décroché cette partie-là, et que ce qui avait sauvé mon année a été le HTML, les bases de données et la communication. Dans le lot il y avait du PHP, le langage que je voulais absolument apprendre, bien que découragée par les cours. Dans ce cas, il n’y a pas de secret, il me fallait trouver un projet qui puisse à la fois me motiver et me permettre d’utiliser et comprendre PHP. A l’époque je tenais un site sur Masterboy, qui marchait plutôt bien, car il était le seul site francophone qui parlait à ce point du groupe, du coup c’est ainsi j’ai voulu sortir de ma zone de confort.

J’ai commencé par prendre un script existant pour faire une « fan-zone » dans laquelle on pouvait s’inscrire et partager dans cet espace. Puis quand j’ai fait mon stage, j’ai voulu mettre un peu plus les mains dans le cambouis, mais tout en piochant par-ci par là des bouts de code que je trouvais sur le web (sérieusement il n’y a pas mieux pour comprendre). C’est vraiment du taf de débutant, on y remarque entre autres :

  1. Les shorts tags. Bon à l’époque ça se faisait pas mal d’utiliser les shorts tags, je me souviens qu’en licence on ne nous avait pas déconseillé de les utiliser.
  2. Les multiples appels aux scripts de connexion. Au cas où le premier ne marchait pas, les autres peuvent mieux marcher, pensais-je.
  3. Douce époque où les requêtes n’étaient pas préparées. A cette époque je pensais aussi qu’il fallait faire des mysql_num_rows() après chaque requête même si on n’en avait pas besoin. On ne sait jamais qui peut le plus peut le moins, nesspa. D’ailleurs sur admin/liste.php la requête y est deux fois … on ne sait jamais, je vous dis.
  4. Ne me parlez pas de la programmation objet, je n’ai rien compris à ça.
  5. C’était bien de récupérer les variables en get du genre « num= » en $num, register_globals c’était la belle vie … puis PHP5 est arrivé et ça a changé.
  6. Gros embrouillamini sur mboy.php mais comme ça marchait, je ne me suis pas soucié de ça (j’ai hélas été longtemps adepte du « tant que ça marche casse pas les noix de coco. » à mes dépens …).
  7. Le camelCase ? Nan connais pas …
  8. L’indentation ? Mais ça marche, donc casse pas les noix de coco.
  9. Ha les die() avec des erreurs bien explicites … et puis la profusion de @ devant les fonctions au cas où il y aurait un bug mais chut …

ET SURTOUT : Je bidouillais parfois direct « en prod », surtout les bases de données. Et donc un jour, en voulant exécuter le script qui effaçait un post, bien ça m’a … TOUT effacé 🙂 j’étais sans filet, je n’avais aucun utilitaire pour sauvegarder mes bases (en même temps je ne maîtrisais à l’époque pas du tout Linux donc j’étais en mutualisé), et je n’avais même pas pensé à l’utilité d’un dump avant toute manipulation #lalose … ce qui explique le joli message en rouge sur la page d’accueil 😀 … voilà voilà …

Donc voilà ce que j’avais pondu à l’époque. Mais je m’auto-pardonne, parce que je sais que je devais commencer et on fait tous des choses moches quand on commence. Du coup comment puis-je flageller mes élèves qui sont de bonne volonté mais culpabilisent de leur rendu ?

Rendez-vous dans 10 ans pour que je voie votre super-code, les amis 😉

Comment monter un serveur d’archives PHP sans pleurer …

Mine de rien, concernant mon métier j’ai fait mes premiers pas en commençant mes études, ce qui commence à faire … un petit paquet d’années. Du coup en fait j’ai gardé (presque) toutes mes archives … ce qui n’est pas problématique quand on est en « full HTML » mais quand on passe en PHP, là c’est plus touchy. Parce que mes premiers sites sont en PHP4, en sachant qu’on se dirige vers la version 8, il y a eu pas mal de chemin depuis : renforcement de la rigueur, changements dans la conception objet, méthodes deprecated et j’en passe.

Essayez de faire marcher un site crée en 2003 sur un PHP 7 … ça m’étonnerait que vous puissiez faire quelque chose de concret. Du coup, pour faire comme moi, trouver des trucs de geek à faire en étant confiné (même si j’ai la chance de pouvoir continuer à travailler, il faut s’occuper le soir 😉 ) et faire tourner un serveur d’archives sur une Ubuntu récente, que faire ?

PHP 5.6 avec FPM

Il y a une solution pour les sites les plus récents : PHP-FPM, qui permet de faire tourner PHP en service indépendamment d’Apache (oui désolée je suis Apache-addict, question d’habitude), ce qui vous permet de pouvoir faire tourner un PHP5.6. C’est assez simple …

En premier lieu, on prépare le terrain, on se base déjà sur le fait que vous avec déjà Apache installé dans votre système.

Quelques librairies de base

Puis il vous faut ajouter le fameux repository d’Ondřej Surý, qui a fait un travail remarquable à ce sujet :

Et hop, magie !

N’oubliez pas d’ajouter les librairies MySQL au besoin. Une fois les installations bien terminées, faites un petit service status, histoire de bien vérifier que les services tournent :

Donc si vous avez un message de ce style, c’est que tout va bien 🙂

Donc là, vous pouvez faire tourner non seulement des sites tout neufs, mais également des sites que vous avez conçu il y a au moins trois-quatre ans. Il suffit après de configurer votre vhost comme suit pour switcher de version :

Vérifiez bien que les services suivants soient activés :
actions proxy_fcgi alias
Et les librairies suivantes installées pour PHP 5.6 au risque de voir une belle page blanche qui ne logge rien de pertinent :
php5.6-xml php5.6-gd php5.6-mcrypt php5.6-mysql php5.6-pdo

Et pour les versions antérieures à PHP 5.6 ?

Après, les choses se compliquent. Ne cherchez pas à installer ne serait-ce que PHP 5.2 à la mano, rien n’est compatible avec les versions actuelles d’OpenSSL et vous risquez de casser pas mal de trucs comme ça m’est arrivé. Et ainsi d’avoir à vous repalucher les installs d’Apache et OpenSSL, les joies de l’admin sys et de l’expérimentation, en somme 🙂 … – note : ce serveur n’est pas celui que j’utilise pour mes sites importants mais pour mon « bac à sable » 😉 …

Du coup j’ai opté pour un bel outil bien tendance qui a le vent en poupe chez les devOps, et qui est vraiment pratique, j’ai nommé : Docker ! J’ai finallement consenti à créer donc un conteneur qui ne servira qu’à mes plus anciens sites, et la bonne nouvelle, c’est qu’il n’y a pas tant de différences entre les dernières versions de PHP 4 et PHP 5.2 (au niveau du fait de pouvoir faire fonctionner un site en PHP 4 sur un serveur PHP 5.2, l’inverse ne sera pas forcément possible – et même fortement impossible), ce qui signifie que mes plus vieux sites tournent avec sans souci, et que je n’ai donc pas à créer de conteneurs supplémentaires (du moins, pour ma part ! ) !

Comme je suis une nana sympa, j’ai mis sur GitHub l’image que j’utilise, que vous pouvez déployer avec docker-compose, vous pouvez même définir un répertoire mysqldump pour alimenter la base directement en ligne de commande. Il y a également un PhpMyAdmin pour se simplifier la vie. Il faut juste modifier les vhosts pour que ça pointe sur vos sites à vous, qui seront accessible par défaut sur le port 8052 (80 port par défaut d’Apache et 52 comme PHP 5.2 😉 )

N’oubliez pas de préciser au besoin comme dans mon exemple, si vos extensions sont .php3, je sais ça fait super bizarre de retrouver ce genre d’extension …

Pour le plaisir, je vous montre une petite capture d’écran de ma page de garde, où je peux naviguer de site en site … c’est amusant de replonger dans le passé, comme ça :

Après, c’est un projet qui donne plein d’idées : par exemple vous voyez les petits screenshots ? Ils sont en réalité bien moches quand on passe en responsive, car dimensionnés assez petits (je pensais qu’à l’époque, ça suffisait). Bien là j’ai mis en place un process sous Puppeteer qui permet de faire des captures d’écran automatiquement ! Je pense que je vais pas mal trouver d’idées inspirantes que je vous partagerai par la suite 😉

Minetest (ou comment sortir en cette période de confinement)

Il y a dix ans à peu près, j’avais publié ce ticket :

Moi, dix ans plus tard : « Viens dans mon serveur Minetest home-made, il y a des cookies tout chauds et en plus j’ai fait une station de métro, et une maison et c’est trop cool !!! »

Cœur avec les doigts <3

Puis c’est romantique de dire à son prochain rencart : « viens me rencontrer dans le champ je t’ai cueilli des tulipes 🙂 ».

Bon, il y a dix ans, je n’avais pas acheté de Bitcoins non plus …

Fuck you, Masterboy ! (ou pourquoi je me suis à moitié désinscrite de Facebook)

Ça faisait déjà pas mal de temps que je dégraissais mon compte Facebook. J’avais déjà temporairement désactivé mon compte il fut un temps, mais il y a eu ce je ne sais quoi d’addictif qui fait qu’on replonge.

Parce que Facebook est un gouffre, un gouffre à temps, un gouffre à relations, comme tous les réseaux sociaux et que finalement, penser que des données aussi personnelles que j’ai pu envoyer nonobstant mon humeur, c’est dangereux. Donc j’ai écrémé au fur et à mesure, supprimant commentaires, likes, partages, au fil des années, même chez mes « amis ». Il fut aussi un temps où j’ajoutais des amis, comme ça, pour me rendre intéressante auprès d’inconnus qui connaissait telle ou telle personne, copain d’urbex potentiel, car oui j’ai voulu me faire un peu de pub via ce biais. Et j’ai déjà « fait le ménage » dans ma liste d’amis. Faire le ménage, sans se soucier que ceux qu’on « supprime », derrière il y a un être humain.

Je ne vous le cache pas : à chaque suppression de ma fiche dans vos profils, je voyais mon compteur décrémenter et ça me pinçait le coeur. Et ça me faisait d’autant plus mal si j’avais connu la personne. Qu’avais-je fait de mal ? dit de travers ? Mais pourquoi, et autant de questions qui me taraudaient. Car pour moi, un ajout d’une personne que je connaissais c’est une marque d’attention, retrouver avec joie mes anciens camarades de classe, ancienne phobique sociale, pour moi c’était suivre le quotidien, prendre des nouvelles et donner des miennes. Si je supprimais quelqu’un que je connaissais, c’est qu’il m’avait contrariée.

Pour tout vous dire, mon adolescence a été difficile, sur le plan relationnel. Ne sachant pas vraiment communiquer, je me suis trouvée des refuges et l’un d’eux a été la musique dance des années 90, et dans le lot, il y avait un groupe qui me faisait briller les yeux : Masterboy. J’aimais leur musique, même si c’est de la musique en boite de qualité moyenne, et je leur trouvais des têtes de gentils, je me disais qu’ils devaient être super sympas en potes ! Je collectionnais tout ce que je pouvais trouver sur eux : c’étaient comme des amis. Bien sûr il y a un équilibre fragile dans les refuges où on idéalise les gens, c’est une forme d’amour. Qui comme on dit, rend aveugle.
J’ai REMUE CIEL ET TERRE, écumé toutes les FNAC de France pour dénicher leur premier album « The Masterboy Family », introuvable, pour avoir tous leurs CD. Ma mère s’en souvient encore. Jusqu’à la création d’Amazon, qui l’avait en stock. J’ai mis 5 ans à chercher. 5 ans.
J’ai même une fois crée une carte de vœux à la main pour souhaiter l’anniversaire de Tommy.
De 2001 à 2005 j’ai tenu le site masterboy.fr.st que j’avais fait de A à Z, sauf les photos. Je crois même que c’est mes premières lignes en PHP. Mes premières lignes EN PHP les gars, c’est pour Masterboy que je les ai faites !!!!


— MES. PREMIERES. LIGNES. EN. PHP. —


C’est peut-être un détail pour vous, mais pour moi ça veut dire beaucoup …
Je n’ai jamais pu les voir en concert, mais j’avais fait des pieds et des mains en 2005 avec mon premier amour pour aller voir Klubbingman (Tommy) setter au Kinky Palace. Il y avait Enrico avec lui, je n’ai pas pu résister au fait de le prendre en photo sans lui demander, j’avais osé parler à Tommy pour lui dire bonjour et demander une photo dédicacée, mais je ne m’attendais pas à ce qu’il y ait Enrico, c’était trop d’émotions. Il s’en est rendu compte et j’ai vu à sa tête qu’il n’était pas content. ça m’a trotté dans la tête pendant des années. Je suis désolée, Enrico …

Puis il y a eu les réseaux sociaux et j’ai eu le courage de les demander en amis, tous les trois : Tommy, Trixxi et Enrico. J’étais contente car je pouvais les suivre. L’ado intérieure était ravie d’autant plus qu’il ont sorti dernièrement un nouvel album.

Puis un jour est venu le drame.
J’ai vu un ami en moins dans ma liste. C’était Trixxi.
Quelques jours après avoir reçu un mail de Tommy où il ne dit même pas bonjour en réponse à ma demande : pour les 30 ans du groupe, il prévoyaient une tournée mondiale de concerts. Sauf en France où il n’y a que Strasbourg dans le cadre d’un « event années 90 ». Si tu es du Sud, paie tes kilomètres. En plus, je déteste cette ville.

En fait j’ai trouvé ça moche. Car oui je n’osais à peine liker ou mettre des commentaires, mais c’est juste que … je n’osais pas. Ces gens-là, fut-il un temps où j’aurais pu donner ma vie pour aller les voir. J’avais même prévu d’aller à Strasbourg (reminder : je hais cette ville) en mai, avec possibilité de Backstage, mais étant donné les circonstances ce n’est plus la peine. Je ne sais pas pourquoi elle a fait ça. Quais-je dit de travers ? L’avais-je mérité après tout ce dévouement ? J’étais une fan number one ! C’est hyper dur de subir ça, ça m’a juste crevé le cœur. On ne fait pas le ménage dans son Facebook quand on est artiste !!! J’avais ouvert la boite de Pandore, les idoles portent bien leur nom.

– ach, tu fffais koi après le Konzert ?
– che vais chouer à gui dépenzera le pluz zzzzon pognon !
– ach zer gut, che peux chouer ?
– jaaaaaa gerrne, toll !
– on est touzzz drès gondeeeents $$$

Je n’ai pas supprimé mon compte, pour la bonne raison que j’en ai besoin pour mon projet AD Urbex, et pour suivre ceux qui m’intéressent en les « followant ». Alors pour ne plus subir ce pincement, j’ai supprimé tout le monde en mettant un message sur mon mur.

Mais ça ne m’étonne pas. En 1997, je me suis inscrite au Fan-Club mais je n’ai jamais rien reçu de leur part : ni carte, ni rien. Je n’ai jamais su ce qu’il s’était passé. Mais déjà, ils me décevaient. J’espère que vous avez bien profité de l’argent de mes parents pour vos Rolex ou vos Porsche !!!

Je ne suis pas en colère, je suis déçue. Et un peu à la limite du dégoût. Je pensais que ces gens avaient de la considération pour leurs fans, je me rends compte que ce n’est pas le cas. Alors je vous rends la pareille : fuck you, Masterboy.

Et ne me parlez plus de ce groupe …

Mon projet de refacto BioPHP – Partie 2 (du design pattern)

Le souci de la librairie d’origine de BioPHP, c’est son absence de design pattern. Le code d’origine prévoyait d’inclure deux systèmes de bases de données (Genbank et Swissprot en l’occurence) voire d’autres, car j’ai vu une dizaine d’autres formats.

Or le but du jeu c’est d’avoir une structure assez carrée pour pouvoir ensuite manipuler les données.

Tout se joue dans le fichier d’origine seqdb.php, je vous laisse regarder la tambouille. Dans ce cas-là, il faut surtout comprendre la logique, la garder et tout casser en même temps. A coups de massue.

La première des choses que j’ai faite, c’est compartimenter une classe par fichier, et un fichier par classe : donc on a trois fichiers, SeqDB, et des fonctions parse_swissprot et parse_id que je ramène dans une classe chacune, et que je renomme au passage car sinon on n’y comprend pas grand-chose. Je passe l’étape de « nettoyage », remplacement des fonctionnalités obsolètes, découpage du code en méthodes privées, simple, basique.

Deuxièmement, c’est d’utiliser un Iterator pour le flux des fichiers car le script réinvente la roue avec les next() et les prev().

Ensuite j’ai refactorisé en gardant l’ancienne structure de seq.php, pour arriver à comprendre petit à petit la logique, à quoi correspond chaque champ du fichier qui est envoyé. Avant le grand coup d’envoi, puisque les structures qui correspondent aux séquences vont être factorisées à leur tour, pour cela je me suis inspirée du modèle de données qui avait été proposé par l’équipe, en y mettant deux trois ajustements :

Rien de bien sorcier, c’est du MVC et du Doctrine de base.

Une fois que c’est établi, que ça marche et parse, il faut intégrer ce système au parsing des fichiers tout en permettant à l’utilisateur de lui simplifier un maximum le travail.

Il fera appel à une interface. Une seule. Et la librairie se chargera du reste. Voici comment (le travail n’est pas terminé ce qui explique pourquoi ParseSwissProt est vide mais c’est en cours) :

Diagramme réalisé avec le superbe outil PlantUML

Utiliser l’interface DatabaseInterface fera appel via l’injection de dépendances à DatabaseManager qui se charge de vérifier si le fichier existe en base, ou d’aller chercher de la donnée. Suivant le cas de figure, ce sont des factory qui seront appelées et qui joueront les aiguilleurs en appelant les services correspondants. Ces services « final class » ont une notion d’héritage sur un autre service, abstrait, ParseDbAbstractManager, qui contient l’architecture de la donnée qui sera renvoyée dans le controller de l’utilisateur.

Ce qui permet dans tous les cas de renvoyer une donnée, qui, quel que soit le schéma de départ, sera uniforme. Et ce grâce à deux design pattern : Factory et Abstract.

Du coup, si on veut ajouter une autre structure de fichier, il suffira de modifier les factory et d’ajouter un service qui sera chargé uniquement de parser la donnée. Ceci dit, je pense qu’il est même possible de passer outre la modification des factory, je dois réfléchir sur ce point.

Je crois que cette partie est la plus complexe de mon projet, car je ne suis pas familiarisée avec les bases de données textuelles propres à la bioinformatique, et le script de départ contenait pas mal de bugs. Du coup si des biologistes chevronnés constatent des bugs à l’utilisation, ils peuvent me contacter, ce sera volontiers que je procèderai aux ajustements.

Mon projet de refacto BioPHP – Partie 1

J’aime bien la biologie, depuis ma tendre enfance. Je pensais même pouvoir un jour pouvoir faire de la bioinformatique mais j’ai vite été lassée des études en fac, donc j’ai dû faire un peu une croix sur ce projet.

Then, I left to Marseille, tout ça …

Mais dernièrement, j’ai eu pas mal de remous professionnels, quitté la dernière entreprise où j’étais en CDI (plutôt rageusement). J’ai donc passé quelques mois à construire des relations avec des clients, privilégiant l’approche freelance, et j’ai également trouvé un projet perso qui puisse m’occuper et approfondir mes connaissances en Symfony. Parce que depuis Spark, j’ai horreur d’être inoccupée. Et puis quand mon chat est mort, il a fallu un échappatoire pour penser à autre chose. Et puis j’avais une revanche perso à relever (n’est-ce pas, Guillaume ?).

J’ai trouvé donc le projet BioPHP (qui est sans URL Fixe, y’a un site ici aussi), cherchant une librairie de bioinformatique en PHP, par curiosité après avoir vu que des librairies du genre existaient en GO. Et … comment dire ? Voir des 2003, dernières mises à jour en 2009 peut-être, des fonctionnalités en PHP4, du HTML, du PHP, des data mélangées dans le code. Aucun design pattern, du code spaghetti, des fonctionnalités qui se retrouvent un peu partout. Ouch. Pourtant les fonctionnalités sont intéressantes et offrent du potentiel, les algorithmes sont hyper poussés. Cette librairie a été développée par d’excellents biologistes qui ne sont pas familiarisés avec le dev. D’ailleurs en poussant la recherche, le projet est critiqué et mal noté.

L’idée de départ des gars était super sympa : intégrer une librairie pour créer des applis de bioinformatique (plutôt orientées génétique) en PHP, comme il en existe en PERL, Go, Python … Mais il est vrai qu’à l’époque, à moins de télécharger bêtement et utiliser les fonctions require, on ne pouvait pas faire grand-chose d’autre. A part peut-être les intégrer dans PEAR ou PECL, chose que je n’ai jamais faite, donc je ne connais pas le process. PHP était vraiment à l’époque le vilain petit canard du monde des langages, et c’est à ce niveau qu’on voit son évolution fulgurante. Car aujourd’hui les outils ont évolué, nous avons les frameworks, Composer, Packager, Github, les tests unitaires et fonctionnels … en un coup de « composer install », on peut intégrer une librairie.

Comment procéder quand on est face à ce genre de challenges ? A vrai dire je n’ai pas vraiment établi de plan d’action dès le départ, peut-être une mauvaise idée, mais je me suis dit que c’était un projet pour lequel j’avais tout mon temps, et le droit à l’erreur. Car ce projet pris sur mon temps perso a été commencé en février dernier. En gros voici comment je suis en train de procéder :

Fonctionnement global de la librairie est des éléments-satellites après la refacto
  1. Installation de Symfony, création de 3 bundles : AppBundle (core de l’appli, MinitoolsBundle (qui intègre des outils qui pouvaient utiliser la librairie), et DatabaseBundle, qui m’a servi de « bundle temporaire » pour créer mes classes entités, raccordées avec Doctrine (parce que franchement, la classe seq.php … non, non, et non).
  2. Premier coup de machette dans le code. Nettoyage des fonctionnalités, renommage des variables suivant leur type, restructuration des classes originales. Séparation des classes-entités de ce qui sera intégré dans des services.
  3. Mise de côté des data. D’abord j’avais pensé à les inclure en YAML dans des paramètres, très mauvaise idée. Base de données ? Je voudrais plus la réserver à l’appli, pour moi la BDD ne doit servir qu’au stockage des séquences. Reste une idée sympa, les intégrer dans une API, ce que je voulais construire depuis longtemps pour utiliser API-Platform, un outil performant qui permet de pouvoir créer facilement ses propres API Rest. Le plus : on peut créer une couche interface qui permettra de créer un adapter, et donc de changer d’API, au cas où, tout en implémentant le modèle requis. Même si le CRUD n’est pas à 100% respecté. Les données de l’API ne sont pas destinées à être modifiées, dans l’immédiat.
  4. Refacto des « Minitools » pour bien m’imprégner de la logique de ces outils, création de l’interface web en TWIG, des services correspondants : je repère les duplicatas, crée de nouveaux services qui pourront être utiles dans le core. Car à la base, ces tools devaient intégrer les fonctionnalités de BioPHP. De mon côté ils me permettent aussi de me replonger dans les fondamentaux de la biologie : qu’est-ce qu’une protéine ? un acide aminé ? un enzyme etc …
  5. Refacto en test manuel : depuis le temps, les fonctionnalités sont en friche, donc je les fais remarcher, petit à petit, en continuant le labeur de nettoyage et de refacto. Je repère ainsi les fonctionnalités qui seront intégrées dans les « Minitools ». Cette partie sera désolidarisée (renommée en BioTools, pour caler au nommage général) du package à terme, pour des raisons logiques : le multi-repo c’est le bien, je vous dis.
  6. Tests unitaires du core : maintenant que je sais que ça marche, je repasse en mode « semi-TDD » et intègre les tests unitaires. Car un gros travail de refacto m’attend : la définition des différents design patterns de AppBundle. -> je suis ici \o/ .
  7. Découpage du projet pour en créer un projet Packagist. Et certainement montée en version de Symfony, redéfinition des dépendances d’injection etc …
  8. Création des tests unitaires et fonctionnels (avec Behat) de BioTools, refacto et envoi à Packagist.

Au prochain épisode, je rentrerai plus en détails sur la refacto d’AppBundle et des design patterns choisis.

Ha oui, et sinon, toutes les infos du projet sont là … Amelaye’s BioPHP.

La clope, la vape et moi …

Personnellement j’ai une expérience compliquée avec le tabac. J’ai le souvenir enfant et adolescente d’avoir été une fervente défenseure de l’air sain, évitant le préau du lycée les jours de pluie, ça n’empêchait pas ma mère de me poser des questions. Elle savait que je ne fumais pas, mais l’odeur de mes vêtements de fumeuse passive empestaient si fort que le doute pouvait s’installer. Mon premier souvenir de cigarette ? 14 ans en voyage scolaire aux Pays-Bas, une taffe, peut-être deux et j’ai craché mes poumons aussitôt. Suite à cette expérience, mon cerveau avait assimilé cigarette = pas bon, pouha = poumons crachés, et loin de moi l’envie de réitérer.

Quand on me demandait une « clope », je répondais « non je ne fume pas, ça donne le cancer. » en bonne donneuse de leçons. Je me réjouissais de mes bonnes habitudes et refusais de subir la fumée des autres. J’ai en tête ce souvenir d’un trajet pénible en train pour rentrer chez mes parents un vendredi soir, ne trouvant de place que dans le wagon « fumeurs ». Je me sens vieille du coup en écrivant cette phrase. Oui j’ai connu l’époque des wagons fumeurs et des gens qui avaient leur cigarette au bec au bureau.

Puis est venue une période un peu difficile, j’avais 20 ans, j’avais rencontré un garçon que je croyais gentil, mais il a décidé de rompre d’une façon un peu moche au bout de deux mois (zapper l’anniversaire de sa copine, c’est pas très classe, tu vois …). Et dans ma tourmente, je l’ai fait … peut-être que l’inhalation passive y était pour quelque chose, et je trouvais quelque chose de relaxant au final à humer la fumée des autres … je ne me cherche pas d’excuses, mais j’ai fini par acheter un paquet de cigarettes, le paquet rouge de « Gauloises » légères. Et ça ne m’a pas déplu cette fois, j’ai voulu dire à mon corps « non, je VEUX que tu fumes alors tu fumes », j’ai réitéré.

Au final, je n’ai jamais vraiment réussi, et tant mieux pour moi, à être dépendante de cette m…, peut-être parce que je me contentais juste de « crapoter », ou peut-être parce que j’avais la chance d’avoir des parents non-fumeurs … ce qui m’a finalement rendue « fumeuse occasionnelle ». Je ne fumais que lorsque j’avais mes poussées d’angoisses, ou alors j’étais celle qui « taxait la clope » à un pote en soirée. Le paquet me durait quatre jours dans le pire des cas, mais ça ne m’empêchait pas de sentir les effets pas glamours : haleine de chacal au réveil, cendres sur le bureau, et vêtements qui sentent le tabac froid. A une époque, j’ai opté pour le cigarillo, le petit « Café-Crème » que j’ai consommé à la même fréquence. Et ça a duré des années comme ça, alternant des cycles.

Puis un jour j’en ai eu marre, et je me suis dit quitte à me détendre, qu’un livre de poche coûtait le même prix qu’un paquet, puis au moins la couverture ne comprenait pas de photos ignobles d’escarres, cancers et autres difformités. A cela, on peut dire que les réformes sur les paquets ont leur petit effet. Je suis restée longtemps 100% non-fumeuse, un peu plus de deux ans, puis un jour j’ai racheté un paquet « pour voir » … et je n’avais rien perdu. Beurk.

Et un jour, mon chat est mort, ce chat qui regardait d’un air intrigué mes volutes de fumée, quand je me posais sur le canapé … avec le chagrin difficile à gérer, je suis retombée dans la spirale des cycles. Moi qui portais l’exigence de chercher une compagne non-fumeuse, j’étais mal placée. Et cet été, alors que j’étais en mode « zero clope … pour le moment » j’ai rencontré quelqu’un, du genre « je ne fume pas, je n’ai jamais fumé, et si tu fumes c’est sur le balcon ». Chouette, parce qu’il n’y a rien de plus immonde que de sentir la fumée quand j’ai le nez dans mes tartines le matin. Mais les aléas de la vie aidant, mon stress grimpant, j’avais à nouveau une montée … bon si je ne fume pas devant elle, je prends quand même le risque d’avoir un cendrier qui traine sur le bureau, les vêtements qui sentent, la non-garantie d’avoir une haleine fraiche-colgate tous les jours, et puis je n’ai pas envie d’acheter une image moche qui va avec, etc etc … et puis … et puis j’ai pensé à ces odeurs intrigantes qui sortaient des cigarettes électroniques de mes collègues de bureau. Au début je me suis méfiée … est-ce sain d’inhaler un produit chimique qui CHAUFFE ? Il y a du plastique là-dedans ? Sérieusement, où est le piège ???

J’étais dans la rue. A gauche, le bureau de tabac. A droite, la boutique spécialisée de vape. La pilule bleue ou la rouge ?

Et voilà comment j’ai un jour franchi la porte de ces vendeurs spécialisés, gouté aux e-liquides, la plupart en 0% de nicotine, parce que finalement, ma dépendance était surtout dans ma gestuelle, plus que dans les substances. Parfois je rajoute quelques gouttes de boost de nicotine, mais sans plus. et des pièges, il n’y en a pas. Du moins il n’y a pas assez de recul à ce sujet, mais entre le Propylène Glycol, la Glycérine Végétale, et des arômes qui rentrent dans la composition des compléments alimentaires, je me suis sentie rassurée (avez-vous lu la liste des composants d’une cigarette ? Qu’on ne me dise pas qu’il vaut mieux fumer que vapoter). Et il n’y a pas de plastiques dans les atomiseurs.

C’est ainsi que j’ai découvert l’univers de la vape et sa philosophie : monter des set-ups, comprendre les lois d’ohm, faire ses propres liquides etc … il y a là dedans une part de créativité geek qui m’amuse bien, je dois dire. La cigarette électronique, ce sont des milliers de personnes qui sont délivrés de l’enfer du tabac. Sans compter les fumeurs passifs autour d’eux. Car non, il n’y a pas de « vapotage passif ». J’ai également découvert les vertus apaisantes du CBD, ce qui fera peut-être l’objet d’un billet. Bon il y a eu un souci, la miss n’aimait pas l’odeur de la vapeur … mais mince, je ne vais quand même pas aller sur le balcon pour vapoter comme une fumeuse, non ?

Est-ce que tes fringues vont sentir ?
Est-ce que ce sera le SMOG dans ton salon ?
Est-ce que tes jolis dessins vont jaunir ?
Bah … non, quoi.

Je ne pense pas fumer à nouveau du tabac un jour (et en plus, ça jaunit les livres). Après, peut-être trouvera-t-on une maladie déclenchée par le vapotage. A ce moment là, je pense que j’arrêterai. Là où le bât blesse, c’est que j’ai déjà reçu des remarques désobligeantes sur ma nouvelle habitude, chose qui ne se produisait pas avec la « tueuse ». A ces gens-là, j’ai envie de leur dire : « Informez-vous, éteignez TF1, et au fait … j’ai 37 ans, donc … je suis grande et je sais ce que je fais, merci. »

Le web a 30 ans

Avant-hier, le WEB a fêté en grandes pompes son anniversaire, et pas des moindres. Parce que 30 ans, c’est pas mal … trente ans, ce sont les premiers cheveux blancs, les premières rides, les premières émulsions de sagesse, aussi.

Puis je me suis rendue compte que ça faisait longtemps que je n’avais pas parlé de mon métier sur ce blog, un brin délaissé. Tous les blogs sont aujourd’hui plus ou moins délaissés, merci les GAFA.

Il y a dix ans, j’aimais bien me poser une heure ici pour discuter sociologie du web, comment il pouvait évoluer : j’avais vu éclore le web 2.0, celui qui dans son entière utopie, permettait le partage, le commentaire, la diffusion plus facile, voire automatisée. C’est une époque où les spécialistes du web essayaient d’imaginer le web 3.0 … pariant sur un web sémantique.

Cf : Analyse de la bulle Web 2.0

Aujourd’hui force est de constater que ce web libre, d’échange de partage et de contribution n’est pas si présent qu’on l’eut cru. Certes il est présent sur les plates-formes de réseaux sociaux, Facebook en tête, cf. Pourquoi Facebook va dominer le www …. et puis ça aussi : Avancée vers le micro-blogging

Le web : ce métier qui avance tel un TGV

En dix ans, nous avons vu bien entendu croitre le taux d’utilisateurs d’internet, qui ont changé d’habitudes d’utilisation : si avant l’ordinateur était indispensable, aujourd’hui c’est 50% de surfeurs qui utilisent leur smartphone ou leur tablette, obligeant ainsi les développeurs à innover … c’est ainsi que se sont démocratisés Twitter Bootstrap, la notion de Responsive Design, mais également des frameworks, rendant un code plus clair et maintenable, créant ainsi la notion de dette technique : fini le site « codé à la va-vite, mais qui marche ». Les langages se sont adaptés, comme PHP, qui est devenu un langage plus précis, optimisé. Les avancées sont telles que ces outils ne sont plus forcément utilisés pour des sites web, mais carrément pour des applications web. Ce qui nous permet à nous, développeurs web, d’étendre nos champs de compétences, et ce qui a divisé le métier : aujourd’hui nous pouvons parler de « développeur full-stack » (il gère les outils de gestion de contenus et leur affichage), « développeur back-end » (qui ne gère que les outils de gestion de contenu), « développeur front-end (qui ne gère que l’affichage) », et puis le touche-à-tout « devOps » (qui fait du développement mais aussi de la gestion de serveur, de l’intégration continue etc …). L’intégration continue est arrivée avec cette explosion d’utilisateurs : car il est question de nos jours de parler de forte charge, de tests unitaires et tests fonctionnels pour débarrasser tout bug qui puisse décourager un visiteur. Il faut maximiser les efforts, rendant le métier de plus en plus exigeant. Mais pour quelle finalité ?

Si les développeurs s’amusent en essayant un nouveau Framework en train de sortir, débattent pour savoir si PHP c’est mieux que GO, si NodeJS n’a pas été qu’un truc à la mode, derrière il y a des gens et des comportements.

Un web pas si décentralisé …

Le web2.0 était-il une utopie ? car si nous excluons ces fameux GAFA, que reste-il finalement à part des sites corporate ? Quid des blogs qui nous permettaient la création de cette ideosphère d’informations, ce regroupement de communautés, si cher dans nos esprits en 2007 ?Car le nouveau web repose sur ces géants, Google, Apple, Facebook, Amazon. Nous avons vu éclore lé métier de « Youtubeur » qui partage sa vie et ses opinions via rétribution de l’entreprise. Nous n’échappons pas au slogan « mets un petit pouce bleu ! ». Et derrière il y a tout un merchandizing : car quiconque est aspiré par une page Facebook, se promène sur le compte Youtube (ou inversement) pour atterrir sur une page Web qui contiendra un plug-in pour acheter des goodies sur … Amazon. Le web repose entièrement sur ces 4 firmes et laisse peu de chances à la concurrence. IL FAUT SE FAIRE CONNAITRE SUR FACEBOOK, YOUTUBE. Et les gens vont donner leur avis sur Facebook et Youtube, et un peu sur Twitter et Instagram (groupe Facebook, rappelons-le), et toute l’e-réputation vient de là. Car remarquez-bien : la plupart des sites web d’information ont supprimé le post de commentaires, l’information est redevenue bilatérale.

Sans compter le plus grave : ces organismes ont le malheur d’accéder à ces contenus, mais il se permettent aussi de juger et censurer !!! Cependant, le partage d’informations via ces plate-formes et beaucoup plus facile que toute une procédure de création de site … donc les gens y restent présents, et tout est fait pour simplifier le « travail » des gens qui publient : panneaux avec phrases toutes faites, boutons, like etc …

Si en 2010, le commentaire pertinent sur les blogs, en réponse à des billets argumentés, joutes oratoires entre blogueurs, était ce qu’il faisait la force potentielle de ce web 2.0 en 2007, on remarque hélas qu’en contrepartie, en 2017 il n’y avait plus beaucoup de sites d’informations qui proposaient cette fonctionnalité, alors que Google se sert des liens contenus dans nos propres sites pour propulser le référencements des sites mentionnés dans ces commentaires, et permettait justement une promotion de cette décentralisation.

L’envers du décor

Du coup, quid des partages de l’individu lambda ? Va-t-il soulever des gros soucis de société ? Partager son œuvre ? En fait l’individu lamba parle de lui. Il publie les photos de ses enfants (oubliant le DANGER qu’il y a derrière. Et puis son gosse, sera-t-il heureux de ses exploits sur le pot de chambre archivés, 20 ans après ?), de ses voyages. Mais c’est LUI en premier plan, transformant le concept de l’autoportrait (à la base artistique) en selfie … l’individu parle de lui, il est égoïste, il est selfish. Pour l’exemple la semaine dernière en me promenant dans l’Alcazar, j’ai pris l’ascenseur avec deux jeunes filles qui devaient avoir 13-14 ans, et qui passaient leur temps à se tirer le portrait. Mais au final quelle est l’utilité de savoir qu’Emma et Gwendoline étaient à l’Alcazar ce mercredi ? à la limite elles auraient pu faire leur selfie sur une table d’étude entre deux bouquins. Car c’est ça, faire parler de soi, quelque soit l’enjeu, même en sortant des cabinets avec une moue en cul-de-poule : il faut se monter, être beau et souriant, il faut des likes, comme dans cet épisode tellement vrai de « Black Mirror » où les gens sont jugés via leur note ! Et leur photo sera postée sur Instagram à tous les coups. Mais au final, est-ce le meilleur moyen de juger d’autres humains ? Ou est-ce plus simplement des cris d’alarmes de nos égos en souffrance ?

Le like : la nouvelle monnaie du futur ?

Le plus choquant est le concept d’ « ami ». Car l’ami Facebook est devenu une entité qui est soumise à validation, et peut du jour au lendemain être supprimé : un être humain est devenu un KLEENEX jetable, pour le moindre prétexte : rupture, dispute, absence de signe de vie, etc … On se supprime, on se bloque, on s’efface, des rituels devenus aujourd’hui quotidiens alors qu’ils n’existaient même pas il y a 20 ans de ça. Quand on était fâché, on ne se parlait plus, on ne se voyait plus. On se « jetait », mais l’acte n’était pas réellement pratiqué.

Et puis il y a le relayage des infos plates, mais ce sujet a déjà été abordé ici : phrases toutes faites, vidéos d’émissions de télé, photos mal cadrées de lieux mille fois vus : une info pauvre, pas toujours vraie. Les statuts Facebook sont constitués d’une phrase à minima, ou d’une image de phrase toute faite, et on en vient à crouler sous ce flot.

Les commentaires sont difficiles à suivre également, car on retrouve beaucoup de récits (trop) personnels ou des disputes de comptoir : car le Facebooker de base est virulent et il ne faut pas le contrarier. Ce n’est plus de l’échange simple d’avis, c’est du « moi j’ai raison, va te faire foutre », car rappelons-le, il est selfish. Regardez le nombre de matchs de boxe qu’on peut trouver, sur n’importe quelle page anodine comme par exemple celle de … « Plus belle la vie« . Juste parce qu’un épisode n’a pas plus, une COMMUNAUTÉ qui partage le même goût pour une même série s’étripe !!

Quand j’ai fait mes études d’InfoCom en 2003, on parlait déjà de pléthore d’informations … du coup là, quel serait le mot adapté ? Pourtant la bonne info existe, il suffit juste de la chercher.

Diaboliser le web ? Non !

Pourtant le web demeure, derrière ces propos sociétalement négatifs, une merveilleuse invention.

Le E-learning n’existant pas il y a 20 ans de cela. Pourtant il permet à beaucoup de gens, soucieux d’attiser leur faim de connaissances, de s’instruire. J’ai personnellement acquis mon niveau en allemand rien qu’avec des cours trouvés sur Internet ! N’oublions pas ces organismes de formation en ligne qui nous permettent également de pouvoir suivre un cursus tout en continuant d’exercer son métier. L’interactivité permet de multiplier les supports : vidéos qui vous mettent en situation, supports et exercices à télécharger et imprimer, possibilité de poser des questions et créer des communautés. Nous sommes sauvés !

J’achève ici ce constat de 10 ans de web 2.0. Au prochain épisode, je vous propose ma vision du web 3.0. qui commencé déjà à éclore. Je vous laisse sur ces mots de Tim Berners-Lee, qui évoque entre autres la charte du web. Je me rends compte également que j’ai beaucoup à dire sur ce sujet, que je viens d’en écrire beaucoup et que ceci fait office d’introduction à un projet éventuel …

C’était plus qu’un chat …

Il y a sept ans de ça, j’adoptais un chat … à l’époque je sortais d’une grosse déception amoureuse, peut-être la plus forte de toute ma vie (façon mange ça bien comme il faut, tu l’as cherché), et qui m’avait conduite à découvrir les joies du running (je sais, ça rappelle fortement « Forrest Gump », mais c’est vrai que ça soulage), mais ça ne suffisait pas.

Alors j’ai fait une chanson composition musicale :

Mais il fallait autre chose, une présence, un compagnon, une boule de poils qui m’apporte cette affection que j’avais besoin.

C’était alors un nouveau coup de foudre qui m’attendait, cette petite boule de poils toute noire avec de graaaaands yeux jaunes tout mignon, tout gentil. Et on a appris à se connaitre.
La première des choses qu’il fallait faire, c’était lui trouver un nom et je n’étais pas inspirée : les chats trouvés en fourrière n’ont pas de noms choisis à la SPA, et j’ai mis le temps avant de trouver. Mais le minou bien que tout doux et gentil, se révélait vite assez caractériel et aimait bien exiger pour se faire servir. C’est ainsi qu’est venu « Pacha », puis « Pasha » car l’orthographe avec le s est aussi possible et je trouvais ça plus sympa sur lui … et puis phonétiquement ça ne change rien.

Pasha s’est montré au début craintif, anxieux, parfois sur la défensive : il est resté caché le premier soir et a exploré mon appartement petit à petit. Il est resté muet durant deux trois mois, posant de multiples interrogations … mon chat ne miaulait pas, ce n’était pas un causeur. Et puis un soir, il s’est mis à s’exprimer.
Un peu.
Beaucoup.
Et parfois c’était devenu beaucoup trop.
Pasha était en fin de compte un vrai petit orateur, ce qui occasionnait parfois de vraies conversations, chacun dans son langage, et même des disputes, comme un vrai petit couple.

Ha, au niveau couple. Mes amantes devaient se tenir à carreaux avec lui et surtout ne pas s’aviser de parler mal à son sujet. Je suis même allée jusqu’à rompre car une d’entre elles avait eu (sans le vouloir, je pense) un geste un peu brusque à son égard alors qu’il voulait lui dire bonjour. Mon lit était SON lit et il avait sa place, même quand je dormais avec ma moitié. Il a partagé mes crèves, veillant sur le lit à côté de la malade que j’étais, nous avions fini par compter l’un sur l’autre, à notre façon.

En Pasha bien nommé, il aimait le foie gras et le saumon fumé, et a failli par atteindre un bon poids de 6 kilos au stade adulte. Il se prenait pour le petit roi, déambulant dans les pièces comme une petite panthère : je suis Bagheera, le maitre de ces lieux. Il était jaloux, parfois possessif : il n’aimait pas le téléphone, et me tournait autour en pestant dès que je commençais à parler au combiné. (alors que 5 minutes avant, il dormait et se fichait bien de savoir que je m’intéressais à lui). Si ça n’allait pas comme il le voulait, gare, il pouvait se glisser dans mon panier de linge sale pour y laisser une remarque, à sa façon.

Il adorait les femmes, et craignait les hommes.

Et puis un jour ça vous tombe dessus, sans prévenir. Je l’ai amené chez le vétérinaire car il avait des crises de vomissements. Le verdict est tombé. Insuffisance rénale aigüe. Il s’est est sorti une première fois. Pas la deuxième.

Il est parti. Il n’avait pas encore 8 ans.

Des gens m’ont dit « ce n’est qu’un chat ». Non ce n’était pas qu’un chat. C’est un compagnon qui a suivi mes aventures pendant 7 ans. M’a vue rire, m’a vue pleurer. M’a rappelé à son bon souvenir un jour où ça n’allait vraiment pas. Me faisait obligatoirement un câlin au réveil, ronronnant à mon oreille. C’était mon ami. Et je suis aujourd’hui inconsolable. Même si je m’accroche, continue le sport, ce programme de bioinformatique, ces révisions pour ma certif Symfony.

Je cherche des exutoires, j’ai découvert l’œuvre inspirante de Sophie Calle, qui a collaboré entre autres avec Pierre Lapointe, que j’aime beaucoup. Ce travail tourne autour de son chat mort, et du vide que crée sa perte.

Inspirée par ce kaléidoscope créatif, j’ai alors pensé à lui créer une chanson, un air jazzy à la guitare sur lequel je vais travailler avec mon professeur.

Je lui ai dédié cette mini-série urbex « Ravage et Désolation » pour exprimer par l’image mon état intérieur.

J’ai pris rendez-vous avec mon tatoueur, lui exposant mon idée, car une page se tourne.

Il n’est plus là. Et je n’aurais jamais pensé, il y a 7 ans, que perdre un animal pouvait faire aussi mal.

C’était plus qu’un chat.