C’est pas le langage qui est laid, c’est ton code

C’est pas le langage qui est laid, c’est ton code.

Combien de fois ai-je pu balancer cette sentence sur les différents forums et sur les réseaux sociaux (du temps où j’y allais encore). A la longue, c’est lassant je vous assure. Alors pour me répéter une nouvelle fois autant le faire dans les grandes largeurs en espérant sans trop y croire que l’idée pourrait s’ancrer une fois pour toute dans le cerveau de certains réfractaires.

Je suis PHPiste et à défaut d’en être fier, je ne m’en plains pas et je m’efforce de ne pas trop verser dans l’évangélisme béa de mon langage de prédilection.

Le PHP à une mauvaise réputation auprès de nombreux développeurs. Pour certains bas du front qui tapent sur un clavier avec une massue préhistorique : le PHP est un langage bas de gamme qui est réservé aux bidouilleurs du dimanche. Avec tout le respect que je leur doit : qu’ils se mettent au tricot et qu’ils nous foutent la paix.

Tout les langages (ou presque, on ne va pas se lancer dans une digression sur les langages exotiques) ont leur horreurs et incohérences. En gros, il est possible d’écrire du code élégant dans un langage et du code à faire saigner les yeux dans un autre et vice versa.
J’explique pour ceux du fond qui n’ont pas suivi. Donnez moi le langage de votre choix et je pourrais vous écrire le code le plus obscur et puant qui soit.

Éloignez les enfants et les personnes sensibles de l’écran, la suite va être choquante. Par exemple, combien de langages permettent de faire ce genre de truc

if (true) { ... }

On est d’accord, c’est aussi inutile que laid. Y a pas à tortiller, franchement même à trois grammes : on n’écrit pas une horreur pareille. Tout le monde est d’accord ? Poursuivons.
On peut écrire ce genre de monstruosité aussi bien en Java qu’en PHP ou en Ruby. Est-ce pour autant que l’on s’autoriserait à dire que le Java est un langage pourri ? Non, bien sur. Et pourtant il suffit de voir ce bout de code en PHP pour cracher sur le langage à l’éléphant bleu.

Choisir un langage, tel qu’il soit, n’est pas la garantie d’un code élégant et propre : ça c’est le travail du dev derrière son clavier de ne pas pondre des lignes de bouses à la chaîne.
Pour la petite histoire, les concours d’ugly code se font principalement en C/C++. Voilà, je pense que ces deux langages ont suffisamment fait leurs preuves avec le temps pour qu’on ne viennent pas cracher sur leurs bottes.

Ne tapez plus sur le langage mais sur le dev qui commet l’horreur, surtout s’il hante votre openspace.

Juste pour rire, en PHP un hello world s’écrit :

<!--?=${[${[${[${[${[${[${[${[${${![]}.=[]}.=${![]}{!![]}]}.=${!![${[${[

${[${[${[${[${[]}++]}++]}++]}++]}++]}++]}++]}{![]+![]+![]}]}.=${[${[$
{[${[${[]}++]}++]}++]}++]}{![]}]}.=${[${[${[${[${[${[${[${[]}++]}++]}
++]}++]}++]}++]}++]}{![]+![]}.${[]}{![]+![]}]}.=${![]}^${!![${[${[${[
]}++]}++]}++]}{![]+![]+![]}]}.=${[]}{!![]}]}.=${[${[${[${[${[${[${[${
[${[${[${[${[${[${[${[${[]}++]}++]}++]}++]}++]}++]}++]}++]}++]}++]}++
]}++]}++]}++]}++]}{![]+![]+![]+![]}.${[]}{![]+![]+![]+![]}]}.=${[${[$
{[${[]}++]}++]}++]}{![]+![]}.${![]}{![]+![]+![]}]}.=${[${![]}=${![]}{
!![]}]}{!![${!![${!![${![]}++]}++]}++]}^${!![${[${[${[]}++]}++]}++]};

Enjoy !


Image : cats and keyboards – Lucas Falcão – CC – BY – NC – SA

Les dix commandements

Je suis tombé aujourd’hui sur un article de Coding Horror particulièrement intéressant. D’une manière générale, il y a beaucoup de bon sur ce site, si j’étais un poil honnête je vous conseillerais d’arrêter de perdre votre temps sur mon blog et d’aller zoner là bas.
Et si vous ne maîtrisez pas la langue de Churchill, et bien tant pis pour vous, vous passez à coté de quelque chose de grandiose.

Je suis bon prince, je vous laisse l’adresse du post en question : https://blog.codinghorror.com/the-ten-commandments-of-egoless-programming/
On copie colle dans son navigateur préféré, c’est pas un vrai lien. Je vais pas tout vous mâcher le travail quand même.

L’idée date de 1971, moi non plus j’étais pas né à l’époque. Pour une fois que l’effet Denver tombe ailleurs que sur mes pompes : ça s’arrose.
En revanche, je m’étonne encore que ce genre de bonnes pratiques ne soient toujours pas enseignées dans les formations professionnelles. Après tout on pourrait, à juste titre, considérer que ne pas se comporter comme le dernier des connards est une compétence professionnelle indispensable.
En tout cas, c’est mon opinion. Et aussi dur que cela puisse sembler, je m’efforce de me comporter correctement dans le cadre de mon travail.

Le bouquin en question (The psychology of computer programming) dont est tiré la substantielle moelle de l’article n’est toujours pas rangé dans les étagères de ma bibliothèque ni jeté sur ma table de chevet.
Si une bonne âme à une édition française à me conseiller, laissez moi donc ça en commentaire.

PS: le film de Cecil B. DeMille de 1956, ça reste quand même un chef d’œuvre.
PSS: Ça n’a aucun rapport mais c’est pas grave.

Encore une nouvelle année

Une nouvelle année chassant la précédent, voici venir 2020.

Je ne vais pas vous souhaiter une bonne année ou quoi que ce soit d’autre. Ce n’est ni utile ni dans mes habitudes. Et puis de toute façon je pourrais souhaiter le pire comme le meilleur; cela ne servira à rien et rien de significatif ne changera pour l’année en cours. Sauf bien sur, votre regard sur ma petite personne en fonction de ce que je vous souhaiterais.

Si je vous souhaite une bonne année pleine de bonheur et de bonne surprises, vous serez sans doute ravis. Même si je n’en pense pas un traître mot mais c’est une autre histoire. En revanche si je vous souhaite une bonne MST et un contrôle fiscal bien raide; vous n’allez pas m’avoir à la bonne. Mais ça je m’en contrefous complètement. Tournez vous plutôt vers vos proches si vous en avez et si vous êtes en manque d’encouragements pour les douze mois à venir.

Quoi de neuf à venir pour le blog ?

Et bien pour commencer, je vais me remettre à écrire et essayer de pondre de nouveaux articles un peu plus fréquemment. Ça ne va pas être dur, car on part de bien bas. Attention c’est pas pour autant qu’un nouvel article va tomber toutes les semaines. Faut pas pousser quand même. On en reparlera le jour où j’aurais dépassé la borne des 20 abonnés. Passé le mur de la trentaine, j’ouvre un teepee et une boutique pour vendre les goodies du site. Je veux bien me faire tatouer la tronche du centième abonné sur la fesse gauche (nan je déconne, à choisir je me ferais encrer le doigt de Cohen de Paul Kidby dans le dos).

Concernant le contenu des posts, il ne risquera pas d’y avoir beaucoup de changements. Au menu, ma petite vie de dev, mes coups de gueules, et mes inepties habituelles.
Si on m’en fait la demande, gentiment bien sur, je pourrais même faire un article sur un sujet particulier ou répondre à une question. Je pourrais, c’est pas pour dit que je le ferais mais cela vous coûtera pas grand chose d’essayer.

Laissez des commentaires, ça me poussera à continuer.

[H.S] La carte et le roi

Une fois annonce peut-être le début d’un coutume mais cette fois ci je m’en vais vous parler d’un sujet qui n’est pas lié ni à mon métier ni à l’informatique en général. Cette fois ci je m’en vais vous causer d’un sujet qui me tient beaucoup à coeur en tant que simple citoyen.

La rentré ce rapproche et je dois inscrire mon fiston dans une école pour septembre. Manque de chance, je vis dans un coin perdu au beau milieu de la cambrousse. Je n’ai rien contre l’école communale en général mais je vais faire une exception pour celle de mon patelin. Ce bahut est à l’éducation nationale ce qu’une enclume est à l’aviation de chasse. Il est hors de question que mon rejeton aille user ses fonds de culotte sur ces bancs là. D’ailleurs si tout les parents ou presque désertent l’école ce n’est sans doute pas sans raison. Je dis ça, je dis rien.

Pour faire les choses dans les règles : je suis aller demander à la Maire de bien vouloir me faire une dérogation pour que je puisse envoyer mon fiston dans une école plus loin. En argumentant que d’une part, il pourrait retrouver des cousines et ne serait pas complètement perdu mais en plus le projet scolaire semble plus en adéquation avec mon spécimen.
Et bien non.
Je me suis pris un four complet avec pyrolise et l’appli IPhone qui va bien en prime.

Vous comprenez, on a la chance d’avoir une école dans la commune. Si on veut la garder, on ne peut pas octroyer de dérogation.

Comprendre mon cul : OUI ! Et bien oui, j’aimerais bien comprendre tant que j’y suis. Pourquoi on accorde une dérogation à untel plutôt qu’a un autre. Si ce n’est pas du délis de faciès alors pourquoi les décisions ne sont pas motivées comme tout tribunal qui se respecte ?
Tout simplement car la France n’a pas su faire table rase de son passé monarchique. La nostalgie n’a pas que du bon.

Comme tout les élus qui se respecte, les maires gardent jalousement leurs petits privilèges.L’un d’eux n’est ni plus ni moins que le pouvoir de distribuer des dérogations comme bon leur semble. Un peu comme dans le temps, le roi distribuait ses grâces.

En deux milles et quelques bananes : je trouve ce genre d’anachronisme tout à fait insupportable.

Bastard Coder From Hell

Je me suis souvent demandé si le fameux Bastard Operator From Hell (BOFH pour les intimes) avait son pendant chez les pisseurs de code. Si on s’appuie sur le principe d’universalisme de la conarditude : c’est quasiment certain. Pour autant la littérature scientifique est quasiment muette sur le sujet. A croire que le sujet n’intéresse pas les hommes de science. Et pourtant, il y aurait tant à dire.

Le BCFH existe, et si je l’affirme avec autant d’assurance c’est que, voyez-vous, je l’ai moi même rencontré. Bien sur je ne pourrais pas trop rentrer dans les détails, plus par peur des représailles que pour protéger son anonymat.

Le BCFH passe inaperçu pour l’écrasante majorité des gens. Au premier abord on pourrait le confondre avec un développeur affable et un peu renfermé sur lui-même. Sauf qu’il n’est pas affable pour deux sous, c’est juste une façade pour qu’on lui foute la paix. Il n’est pas non plus renfermé, c’est un asocial de premier ordre et il ne peut voir personne et encore moins en peinture.

Le BCFH n’aime qu’une chose son code. Rien n’importe plus à ses yeux que le plaisir de travailler tranquillement sur ses petits algorithmes chéris. Cependant ne faîte pas l’erreur de confondre le code avec son code. Le code c’est la corvée qui lui est infligée chaque jour ouvré par sa direction. C’est simplement alimentaire et encore. Certains jours il préférait se laisser mourir de faim plutôt que de s’abaisser à œuvrer sur de telles basses besognes.
Lui ne s’épanouit que dans les espaces éthérés de l’abstraction logicielle et pas dans le CSS branlant.

Le problème c’est que ses pervers de supérieurs n’y entendent rien aux charmes de la beauté algorithmique. Plutôt que de s’extasier quasi religieusement devant l’élégance hors norme de la solution, ils se contentent de ronchonner sur le bouton qui n’est pas de la bonne couleur. Donnez leur la Chapelle Sixtine et ils oseront râler devant le trop plein de marche pour y accéder et de l’absence de rampe pour les handicapés.

La vie du BCFH est un véritable enfer peuplé de béotiens aveugles et braillards. Pas étonnant qu’en retour il soit aigri tout au long de ses journées et qu’il ne puissent s’empêcher de faire partager sa mauvaise humeur avec ses bourreaux.

N’oublions jamais que nous sommes toujours le con de quelqu’un et il y a fort à parier que nous soyons le sien.

L’abus de pastèque est mauvais pour l’égo

À la Une

Passé un certain stade de mégalo-céphalée on ne peut plus parler de melon. L’échelle de taille n’est plus respecté, faute d’un fruit suffisamment gros : je propose de se rabattre sur le Citrullus lanatus. L’expression plus appropriée serait plutôt : pastèque et dans sa version longue : avoir la pastèque.

Certains de mes coreligionnaires s’illustrent tout particulièrement par la taille de leur tour de tête. L’ego gonfle plus rapidement que les compétences c’est un fait, et les différents curriculum vitae que laissent ces odieux individus derrière eux ne fait que renforcer une mauvaise image de la profession.

Je m’étendrais un jour plus en détails sur le syndrome du « dégage sale développeur« , mais revenons à nos Montgolfier si vous voulez bien.

Il n’y a aucun mal à se revendiquer développeur, si quelqu’un veut absolument perdre quelques dents à coups de pelle : il n’a qu’a essayer de venir me prétendre le contraire. Cet avis n’est pas encore largement partagé, soit mais il y a pourtant des limites à ce que la mégalo peux faire. La pastèque est aussi appelée melon d’eau, alors quand on commence à entendre des bruits de flotte quand on secoue la tête faut sérieusement penser à faire quelque chose.
Je suis  un peu sur les nerfs car je viens de tomber sur quelques exemples particulièrement frappants en fouillant sur LinkedIn. Déjà que je ne porte pas bien haut dans mon estime les criminels en question, ce n’est pas avec des CV aussi bidonnés qu’ils vont réussir à se racheter un début de conscience professionnelle. Pour la conscience tout court, on repassera.

Architecte logiciel
Mais t’es sérieux mec ? Même chanvré jusqu’à la moelle j’aurais jamais osé un truc pareil. Comment tu peux te prétendre architecte de quoi que ce soit, toi qui ne sait même pas utiliser une interface et qui ne connaît que les designs patterns par un lointain bruit de couloir.
Quand ton quotidien consiste à faire du CRUD à la chaîne sur un framework du marché : tu es au mieux tâcheron, voir pisseur de code mais certainement pas architecte. Elles sont où tes contribs sur le framework ? Inutile de chercher, il n’y en a aucune et tout simplement car tu n’as jamais pris le temps de lire le source.
Mon mécano à la décence de ne pas se présenter comme ingénieur en mécanique appliquée. Non, son titre lui convient parfaitement, tout autant que ses mains tachées de cambouis car il connaît son boulot et n’a plus besoin de faire ses preuves.

Moteur d’innovation
Là j’en reste comme un rond de flan. Au niveau de l’auto-paluchage intellectuel (on n’est jamais mieux servi que par soit-même) on frôle les sommets. Le titre claque comme la baffe d’un râteau un samedi soir dans les chiottes du Macumba Club. Niveau terminologie, il n’y a rien à dire c’est de la pignole de haut vol.
Mais juste pour étoffer mon peu de culture : ça consiste en quoi au juste ?

S’il passait seulement la moitié de l’énergie qu’il met à se faire reluire la nouille à bosser réellement et à chercher à monter en compétences : cela fait longtemps qu’il aurait quitté son placard de poste pour une vrai boîte.

Pour information, je n’ai pas inventé les deux expressions : je pense que j’en aurais été bien incapable. Elles sont présentes dans le CV en ligne du spécimen en question.

« Fresh Fruit & Herbs Cocktail combination #3 » by Miriam Figueras Cuadra is licensed under CC BY-NC-ND 4.0

Dealing with pioupioux

Quand il se fend d’un titre en anglais, c’est que ça sent la fatigue à plein blaire. Il a la cervelle aux fraises, les neurones dans les radis, et le voilà qui se lance dans la prose. Si ça n’augure pas le pire, je veux bien changer de nom.

Guylôme le grand

Voilà quelques temps que je ne me suis pas rattelé à l’écriture d’un nouvel article, la faute en revient de droit aux cadences infernales qui m’empêchent de m’asseoir derrière le clavier de ma bécane pour écrire en simili paix. Contrairement à la génération émergente, je ne suis pas capable de rédiger plus qu’une demi ligne sur un téléphone portable. Pour faire les choses correctement, il me faut un minima de calme et accessoirement un petit verre de rhum.

Nouvelle mission et nouveau décors. Un journée dans une SSII c’est un peu comme une journée à la ferme, on ne sait jamais ce qui nous attend mais on piaffe déjà d’impatience à l’idée de se mettre au boulot. Cette fois ci on m’a chargé de veiller paternellement sur deux juniors. Comme si le fait d’avoir un rejeton m’avait doté de la fibre paternelle. Et bien non, c’est pas exactement comme cela que sa fonctionne, j’ai pas voulu m’engager comme sage femme après la naissance de mon fiston.
D’ailleurs pourquoi moi. C’est pas les développeurs qui manquent dans la boite et pourtant il a fallu que ça me tombe sur le râble.

Parce que je suis un développeur senior, voilà la belle excuse qu’on m’a gentiment servi sur un joli plateau d’argent.
Le prochain qui me rabat une nouvelle fois les oreilles avec mon grand age : il se prend une rouste de la part du grabataire qui va l’envoyer direct causer avec ses ancêtres. On change d’angle d’attaque et on m’explique penaudement que l’on s’est mal exprimé et qu’on voulait, bien entendu, parler de mon expérience plus que de mon age. Passons, ça doit être les piles de mon sonotone qui commencent à faiblir.
Bref, on me propose très pressement de mettre ma longue expérience au service de la formation de deux petits jeunes et accessoirement ma mauvaise humeur au placard. Inutile de donner ma réponse, on sait par avance que j’accepterais cette proposition.

La propension qu’on certains gradés à anticiper avec autant d’assurance mes réponses me laisse toujours pantois.
Me voilà donc catapulté comme grand maître es code dans une nouvelle mission, sur un nouveau projet dans une nouvelle boite.

Allez courage et en avant pour une nouvelle aventure.

Si ça marche on touche pas

S’il existait une liturgie des choses qui me tapent sur le système : il est certain que cette phrase y figurerait en bonne place. Dès qu’un inconscient se risque à sortir cette monumentale ineptie, je dresse de suite une oreille et je me dirige en direction du fautif avec mon sourire de squale préféré.

Avant de rentrer dans les détails et sans doute dans le lard, revenons à la racine de la problématique.
Si ça marche on touche pas.

Grammaticalement parlant, il me semble qu’il manque une négation. Venant de ma part cela peut faire sourire. Le plus important c’est surtout : qu’est ce que je dois en conclure.

Soit que le code est tellement beau que personne ne pourra faire mieux et que ce n’est qu’une perte de temps d’essayer.
A ce niveau d’ego je pense qu’une ablation chirurgicale aux forceps s’impose. Sérieusement, on peut l’encadrer et le mettre sous verre pour l’accrocher sur le mur des toilettes ? Les éditions La Pléiade sont en négociation pour publier ce chef d’oeuvre dans leur collection ?
Non ?
Bon alors on peu quand même y toucher. Si c’est bien fait (et je le souhaite) on aura du mal à faire mieux mais ce n’est pas interdit pour autant d’essayer.

Soit que le code est tellement incompréhensible que personne n’ose mettre ses pattes dans ce sac de nœuds.
Cela me semble beaucoup probable. Pour autant : il faut absolument y toucher. Je dirais même plus il faut sacrément nettoyer tout ça et en urgence ! Mon regard se pointe tout naturellement vers l’auteur de la phrase malheureuse qui vient sans le savoir de se porter volontaire pour la mission. J’apprécie ton courage soldat, la nation peut-être fière de ton sacrifice.

Un code incompréhensible qu’on laisse traîner comme ça sans chercher à s’en inquiéter c’est une bombe à retardement lâchée dans le système. Il viendra toujours un moment où une feature se heurtera à ces fameuses lignes. Et comment fait-on dans ce cas ? Et bien, on fait pas tout simplement. J’aimerai pas être à la place du lead dev qui devrait annoncer ça à son n+1. Du temps des romains on crucifiait pour moins que ça.

D’une manière plus générale : ce genre de chose ne devrait pas se produire. J’y reviendrais sans doute un peu plus tard.

Image d’illustration : Knotted by Sam Rayner CC – BY-NC-SA

From HTML with love

… to fucking buggy PDF !

Je ne vais pas traduire le titre mais je pense que même sans être un diplômé de la langue de Cromwell on s’y retrouvera sans trop de peine.

Et puisqu’on parle de peine, commençons donc par là où sa pique le plus. J’ai fait très récemment l’état de l’art sur la façon de transposer du HTML vers du PDF en PHP. Ça fait beaucoup d’acronyme d’un coup mais je vous rappelle qu’on est toujours dans le domaine de l’informatique alors il faudra s’y faire.
Donc disais-je, je suis allé faire un tour sur mon moteur de recherche préféré pour voir ce que la grande toile pouvait me recracher comme résultats. Et c’est pas vraiment glorieux.

Un petit message à tout les rageux qui vont troller sur le PHP avec des messages du genre.

De toute façon avec un langage de tiers-mondiste comme PHP, fallait pas t’attendre à autre chose.

Pour commencer laissez moi vous offrir mon doigt du milieu le plus respectueux. Mettez le là où bon vous semble et passons à la suite si vous le voulez bien.

Coté PHP, j’ai essayé sans trop de conviction DomPdf. Cette classe sort effectivement un PDF d’un template HTML mais … il ne faut pas trop lui en demander. La mise en page à complètement atterri aux prunes : le bouzin n’a jamais entendu parler du CSS. Les développeurs conseillent d’utiliser des tableaux pour la mise en page.

[flames]SÉRIEUSEMENT ! DES TABLEAUX POUR METTRE EN PAGE DU HTML EN 2019 ?[/flames]

On laisse tomber et on élargi la recherche à tous les scripts disponibles sur le marché. Pas question de passer par un service en ligne pour faire mes conversions, je n’ai même cherché de ce coté.

Le mieux que j’ai trouvé c’est wkhtmltopdf. Ca fonctionne sous nux et c’est en pure ligne de commande. Même pas obligé de s’encombrer d’un gtk bancal pour l’utiliser. Et cerise sur le cake : c’est du libre. Que du bonheur ou presque.
Car forcément il y a un os dans le boudin : cette librairie ne reconnait pas les css grid. Résultat ma mise en page est encore aux fraises.

Il semblerait que ce bug cette fonctionnalité manquante sera implémentée dans la prochaine version. Je ne vais pas cracher dans le potage, les devs ont fait un bon boulot avec cette librairie, il n’y a aucune raison de croire qu’ils vont tourner bride et ne pas tenir leur engagement.

Sauf que, on est toujours en 2019 et je commence à douter qu’il existe un moyen propre de faire une bête conversion HTML -> PDF. Peut-être que je suis passé à coté de quelque chose mais dans ce cas, est ce quelqu’un pourrait sauver ma pomme et éclairer ma lanterne.

 

My HDD is dead

Dans la série de ma petite vie sans trop d’intérêt, je vous présente fièrement le tout nouvel épisode.
Le disque dur de mon PC portable vient de me lâcher comme une vieille bouse. La bonne nouvelle c’est que la machine est toujours sous garantie mais je ne me vois pas attendre trois semaines pour que l’on retire quelques vis pour changer une pauvre pièce. Ils bossent à la DDE les techs du SAV ?

Bon et bien pour faire une pierre deux coups, je vais en profiter pour passer au SSD et m’essayer à Archlinux.

Voilà, ceci expliquant aussi mes futurs retards pour la parution des articles.