22 Feb 2019

feedPlanet Grep

Lionel Dricot: La visibilité n’est pas un paiement

Lettre ouverte aux organisateurs de conférences

Chèr-e organisateur-trice ,

Félicitations pour avoir mis en place ton événement, d'avoir trouvé le lieu, les sponsors, les budgets. C'est un fameux travail, j'en suis conscient.

Le point d'orgue de ton événement est une conférence ou une table ronde à laquelle tu me proposes de participer. Je suis flatté de ton intérêt.

Cependant, tu espères qu'on n'abordera pas la question de la rétribution, tu laisses cette question en suspens comme s'il tombait sous le sens que ma participation devrait être bénévole.

Lorsque je pose la question et que tu n'as pas de budget pour me payer ou même me défrayer, tu argueras que cela me fait « une belle visibilité ».

Mais tu dois être conscient que la visibilité ne se mange pas, que la visibilité ne sert à rien si ce n'est à obtenir des propositions pour d'autres conférences gratuites.

Pire : lors de ton événement, je toucherai peut-être une centaine de personnes. Bref, l'équivalent d'un tweet. Non seulement la visibilité n'est pas rentable, mais celle que tu me proposes est ridicule.

Tu sous-entends également que j'ai besoin de visibilité. Or, si tu m'as trouvé, c'est que j'ai déjà la visibilité dont j'ai besoin. Et peut-être que certains d'entre nous ne cherchent pas de la visibilité à tout prix.

Bref, lorsque tu y réfléchis, ton argument est à la limite de l'injure. Sans compter que tout le reste de ton événement est largement payant : présence de sponsors, location de la salle, impression des affiches et, le plus souvent, prestataires techniques. Au final, seul le "clou du spectacle" est gratuit. Et peut-être toi-même si tu as le plus souvent un salaire. N'est-ce pas un peu paradoxal ? N'est-ce pas un peu injuste que je doive, en plus de mon travail, payer mon moyen de transport pour venir parler entre deux panneaux faisant la promotion d'une grande banque ?

Et si la préparation occupe ton esprit en permanence depuis des semaines voire des mois, n'oublie pas que ce n'est pas mon cas. Si j'accepte de participer bénévolement, je n'ai pas pour autant accepté des réunions de préparation, des dizaines d'échange par email, plusieurs coups de téléphone et une inscription sur ta newsletter ou ta plateforme de communication interne. Ce n'est pas non plus à moi de devoir quémander toutes les informations sur le lieu, la date, le format, ce qui est attendu de moi tout en devant m'adapter aux changements de dernière minute.

Je ne souhaite pas te décourager. Je trouve très bien qu'il y'ait des événements gratuits et, personnellement, j'accepte très régulièrement d'intervenir gratuitement avec plaisir. Les motivations me sont propres et varient d'une proposition à l'autre : le projet me plait, j'avais envie de visiter l'endroit, je souhaite rencontrer l'un des autres conférenciers ou, tout simplement, j'ai l'impression que cela correspond à ma mission de vie. La gratuité n'est donc pas synonyme d'exclusion et le fait de me payer n'est pas une garantie d'acceptation (sauf à partir d'une certaine somme, je suppose). L'argent n'est qu'un élément de la balance, mais il est non négligeable.

Je souhaiterais juste que tu sois un peu plus honnête et explicite dès la prise de contact. Que tu poses directement les conditions et les modalités pratiques. M'offrir de la "visibilité", je le prends comme une insulte, cela me donne envie de refuser directement. Prétendre ne pas avoir de budget lorsqu'on affiche partout le sponsor d'une grande banque ou qu'on est une énorme organisation publique qui consomme des milliards d'argent public chaque année, je trouve ça à la limite de la malhonnêteté intellectuelle.

Merci pour ton attention et bonne chance pour ton événement.

Photo by ål nik on Unsplash

Je suis @ploum, conférencier et écrivain électronique déconnecté rémunérés en prix libre sur Tipeee, Patreon, Paypal, Liberapay ou en millibitcoins 34pp7LupBF7rkz797ovgBTbqcLevuze7LF. Vos soutiens, même symboliques, font une réelle différence pour moi. Merci !

Ce texte est publié sous la licence CC-By BE.

22 Feb 2019 3:29pm GMT

21 Feb 2019

feedPlanet Grep

Xavier Mertens: [SANS ISC] Simple Powershell Keyloggers are Back

I published the following diary on isc.sans.edu: "Simple Powershell Keyloggers are Back":

Powershell is a very nice language in Windows environments. With only a few lines of code, we can implement nice features… for the good or the bad!

While hunting, I found a bunch of malicious Powershell scripts that implement a basic (but efficient) keylogger. The base script is always the same but contains connection details modified by script kiddies. The current script is based on an old one from 2015. This time, it has been modified to add the following features… [Read more]

[The post [SANS ISC] Simple Powershell Keyloggers are Back has been first published on /dev/random]

21 Feb 2019 12:25pm GMT

Lionel Dricot: Formulaire d’admission pour l’enfer

J'étais un peu étourdi, ne sachant pas trop ce qui m'était arrivé.

- À quel type d'enfer croyez-vous ?

- Pardon ?

Le gros type qui m'avait adressé la parole se tenait derrière un bureau, entre un vieil ordinateur à écran cathodique et une pile de classeurs. La préhistoire quoi ! Passant ma vie entre deux startups et autres espaces de coworking décorés par des Suédois sous LSD, j'avais oublié l'existence de cette classe de personnage.

- Je vous demande à quel type d'enfer vous croyez, articula-t-il d'une bouche pâteuse.

- Ben je ne crois pas à l'enfer, parvins-je à répondre en me massant la mâchoire.

Il se caressa le menton avant de lever ses lunettes sur son crâne gras et chauve, comme pour mieux lire la fiche qu'il tenait entre les doigts.

- hm… C'est embêtant, très embêtant.

- Écoutez, je ne sais pas ce que je fais ici, mais on n'est certainement pas là pour discuter philosophie.

- Vous êtes sûr de ne pas croire en un enfer ? Même un petit ? Pas nécessairement les diables, les flammes et tout le tralala. Ça peut être une obscurité éternelle, l'immobilité, une prison…

- Mais puisque je vous dis que je ne crois pas en tout ça ! Je suis athée.

- Et ils n'ont pas d'enfer les athées ?

- Pas à ma connaissance, non.

- hm… Très embêtant.

- Écoutez mon vieux, on ne va pas y passer la nuit !

- Oh rassurez-vous, ça n'est pas le problème. C'est juste que j'ai d'autres dossiers à traiter et que vous n'êtes pas le seul.

- Le plus vite je serai sorti d'ici, le mieux ce sera, fis-je, commençant sentir monter en moi l'énervement annonciateur de mes trop fréquentes colères.

Le gros chauve me regardait calmement derrière ses lunettes qu'il avait rabaissées sur son nez en marmonnant.

- C'est que le règlement est très clair, vous savez. Regardez vous-même, article 12.

Il ouvrit un classeur qu'il me tendit. Les lettres dansaient devant mes yeux et formaient une écriture incompréhensible.

- Je n'arrive pas à lire.

- Ah oui, pardon. J'oubliais. Je vous traduis : « Tout défunt sortira du bureau d'orientation vers l'enfer correspondant à sa croyance ».

- Défunt ?

Machinalement, je me mis à chercher la caméra cachée.

- Notez qu'on pourrait peut-être trouver une solution approximative. Est-ce que ne pas croire en l'enfer est similaire à craindre l'oubli éternel et le néant ? Nous avons un enfer parfait pour cela. Cela vous conviendrait-il ?

- Mais pas du tout ! Je vous dis que je ne crois pas en l'enfer, pas même au néant éternel !

- Écoutez, j'essaie de vous trouver un enfer, vous pourriez faire un effort. Avouez que le néant, c'est assez similaire, non ?

- Attendez un instant. Vous avez dit "défunt" ?

- Oui, bien entendu pourquoi ?

- J'essaie juste de comprendre. C'est une blague, c'est ça ?

- Pas du tout. Le règlement est très clair. « Tout défunt sortira… »

- Oui, j'ai compris. Mais qu'est-ce que ça a à voir avec moi ?

Ce fut à son tour d'avoir l'air surpris.

- Vous voulez dire que… que vous n'êtes pas au courant ?

- Au courant de quoi ?

- Que vous êtes mort ?

Je le regardai avec un grand sourire.

- Pas mal. Mais à moi on ne la fait pas. C'est un peu gros.

- Écoutez, mon boulot c'est de vous trouver un enfer. Pas de vous convaincre. Alors on va faire une petite entorse au règlement. Je vous fais un mot pour ma collègue du bureau 14A, au dix-septième. Vous irez la voir, elle va certainement trouver une solution. Si ça ne va pas, vous revenez ici. On fait comme ça ?

Je n'avais pas vraiment le choix et, en toute sincérité, je pensais que toute occasion était bonne pour sortir de ce bureau. Je pris donc le papier griffonné qu'il me tendait et parti sans demander mon reste. Des gens s'agglutinaient sur de vieilles chaises alignées le long des murs des couloirs, entrecoupées de temps à autre par des tables basses croulantes sous des magazines édités avant ma naissance. Je ne me souvenais pas être entré dans ce bâtiment et je ne comptais pas y rester plus de temps que nécessaire.

Suivant les panneaux, je m'élançai dans ce couloir qui bifurqua plusieurs fois. Après plusieurs centaines de mètres, je constatai avec effroi que j'étais de retour devant le bureau que je venais de quitter. Sans ménagement, je demandai à un petit vieux écroulé sur sa chaise le chemin des ascenseurs. Il m'indiqua d'un doigt tremblant la direction d'où je venais. Une petite vieille à peine moins grabataire lui tapa sur le doigt en le grondant et en me désignant la direction opposée. Heureusement, un troisième larron vint à ma rescousse.

- Le couloir tourne autour de la cage d'ascenseur. Quand vous verrez des plantes vertes, prenez la double porte en bois.

En appelant l'ascenseur, je me fis la réflexion que, sans cet anonyme bienfaiteur, j'aurais pu tourner longtemps, les plantes masquant un recoin de mur où se découpait la porte menant aux ascenseurs. Je pénétrai dans la cabine tout en maudissant l'architecte. Sans hésiter, je me rendis au rez-de-chaussée.

Mes pas résonnaient dans le grand hall de marbre à mesure que je me dirigeais vers les grandes portes translucides dans leur châssis doré. Au moment où j'allais les franchir, une main puissante se posa sur mon épaule.

- Éh là, où allez-vous comme ça ?

Je pris un air surpris.

- Je rentre chez moi !

Le garde se tourna vers un de ses collègues et s'esclaffa :

- Il rentre chez lui ! C'est la meilleure de l'année.

- Ici c'est l'entrée ! On ne sort pas ! Imaginez un peu si on sortait par l'entrée ? poursuivit son collègue.

- Et bien, aurez-vous l'obligeance de m'indiquer la sortie alors ?

- Ça, c'est au bureau d'orientation de vous la trouver. Le règlement est très clair : « Tout défunt sortira… ».

- Oui, merci, je la connais. Mais moi, je fais quoi ?

- Et bien vous allez au bureau d'orientation !

- Mais j'en sors justement !

Ce fut au tour des gardes d'avoir l'air étonnés.

- Comment ? Comme ça ? Mais… Ce n'est pas conforme au règlement !

Je me mis à broder.

- Il m'a dit qu'il faisait une petite entorse pour moi, car il fallait que j'aille chercher quelque chose que j'avais oublié.

Les gardes me regardaient, bouche-bée. Pour les impressionner, je tendis le papier que m'avait donné le gros chauve, l'agitant pour ne pas leur donner l'opportunité de lire les détails.

- Ah, mais attendez ! Vous devez aller au dix-septième.

- Bureau 14A, renchérit son alter ego dans la bêtise.

Ils se regardèrent.

- C'est pas très réglementaire tout ça.

- En même temps, nous, c'est pas nos affaires.

- Juste. Et bien monsieur, on va donc vous accompagner jusqu'à l'ascenseur.

Tentant de cacher mon exaspération, j'appuyai sur le premier bouton qui se présenta. Le hall des ascenseurs était couvert d'une imitation de marbre gris-rougeâtre. Quatre cabines de chaque côté, je rentrai dans la première qui s'ouvrit et enfonçai le bouton dix-sept tout en faisant un petit geste de la main à mes cerbères.

Arrivé à l'étage indiqué, je me dis que je n'avais rien à perdre et me mis en quête du bureau quatorze. Je toquai à la porte, une dame boudinée en train de manger des nouilles chinoises dans un carton me reçut, le menton dégoulinant de sauce.

- Qu'est-ce que c'est ?

Je tendis le papier.

- Mais vous devez aller au bureau 14A !

- Ben oui, c'est pas ici ?

- Non, ici c'est le 14B ! Le 14A, c'est dans l'autre tour.

- Pardon ?

- L'autre tour ! Vous devez redescendre jusqu'au rez-de-chaussée et prendre les ascenseurs d'en face, pour l'autre tour. C'est quand même pas compliqué !

- Excusez-moi, mais c'est la première fois que je viens…

- Normal, on vient rarement une seconde fois.

- Surtout que je ne suis pas venu de mon plein gré !

- Peu de monde vient ici de son plein gré.

Je poussai un profond soupir.

- Bref, je suis bon pour tout redescendre.

- Il y'a une passerelle entre les tours au sixième. Ça peut vous faire gagner du temps.

Je sortis et pris la direction du sixième étage. Après quelques tours de l'étage, je finis par dégoter un couloir avec des panneaux indiquant "Tour A". Je me félicitai de cette petite victoire. Je m'attendais à un panneau de type "En réfection, merci de passer par le rez-de-chaussée", mais, contre toute attente, il ne vint pas. En quelques minutes, je fus au dix-septième étage.

L'étage semblait formé d'un couloir circulaire traversé par deux couloirs parallèles. Des portes rigoureusement identiques constellaient les cloisons d'un vert déteint. Je suivis la série des bureaux un, deux, trois… jusqu'à onze. Après le onze s'ouvrait le bureau vingt-trois. Puis le dix-sept. Le trente. Il n'y avait absolument aucune logique. Il me fallut parcourir trois fois chaque couloir avant de découvrir le quatorze, qui était entre le trois et le cinq, mais que, machinalement, je prenais à chaque fois pour le quatre.

Je tentai de maitriser mes nerfs pour ne pas défoncer la porte et étrangler son occupant. Une petite lumière s'alluma sur le chambranle : "Occupé".

Le désespoir commença à me gagner et je m'assis à même la moquette en soupirant. Pour la première fois depuis ce qui m'avait semblé une éternité, je me mis à réfléchir. Où étais-je réellement ? La blague n'allait-elle pas un peu loin ? Étais-je devenu fou ? Où était la réalité ?

Je ne réagis même pas lorsque la lumière s'éteignit et qu'un individu que je n'avais pas remarqué se leva en pestant contre la minuterie automatique. Il devait répéter le même manège une demi-douzaine de fois, me fixant à chaque fois, espérant probablement engager la discussion sur cet épineux problème. Il en fut pour ses frais, car je restai plongé dans mes pensées.

Réflexions qui furent interrompues par un toussotement. Une dame d'un âge certain au port rigide et au chignon serré se tenait dans l'encadrement de la porte.

- Vous avez sonné ?

Je me relevai sans hâte et lui tendit le papier. La lumière s'éteignit et mon voisin d'attente se leva une fois de plus pour allumer, n'osant pester ouvertement cette fois.

- Oui. Votre collègue m'a envoyé ici. Je ne comprends rien à rien, je ne sais même pas pourquoi je suis ici.

Elle me fit entrer, me tendit un siège et, s'adressant à moi comme à un enfant, commença à m'expliquer la situation.

- Vous n'êtes pas sans savoir que les humains ont de nombreuses croyances concernant la vie après la mort.

- En effet, mais je ne vois pas bien…

- Et bien toutes ces croyances sont vraies. À sa mort, chaque être humain vit dans l'enfer qu'il s'est imaginé, au plus profond de son inconscient.

- Mais cela n'a aucun sens, l'âme n'existe pas !

- Qui vous a parlé d'âme ? Il n'y a en effet pas d'âme. L'enfer est, en quelque sorte, généré par le cerveau alors que celui-ci a perdu la capacité de percevoir l'écoulement du temps. La conscience est donc piégée dans une fraction de seconde éternelle.

- Mais pourquoi l'enfer ?

- C'est une manière de parler. La peur est l'émotion primaire la plus forte et la dernière à subsister. C'est donc ce qui effraie la conscience qui va s'imprimer dans le cerveau une fois que celui-ci a compris qu'il disparaissait. Quand on y pense, c'est assez ironique. Les personnes les plus pieuses qui ont fait le bien toute leur vie, car elles craignaient les flammes de l'enfer s'y sont condamnées. Les cyniques ont généralement une mort plus douce.

Elle arrondit ses lèvres sèches en une ébauche de sourire.

- Votre explication ne tient pas debout. Ce bâtiment, vous-même. Vous êtes réels !

Elle joignit ses doigts anguleux, les coudes sur son bureau, et toucha le léger duvet qui couvrait son menton.

- Ah, je vois que vous êtes un dur à cuire. C'est certainement la raison pour laquelle vous avez été envoyé chez moi. Vous ne croyez en rien, vous ne voulez croire en rien. Du coup, difficile de vous trouver une place.

- Vous éludez la question !

- Laissez-moi une seconde. La conscience a un impact physique sur l'univers. Chaque conscience laisse une marque, un peu comme un caillou jeté dans une mare laisse des remous. La plupart du temps, notre conscience est trop sollicitée par les sens du corps pour percevoir quoi que ce soit, mais cela reste un fait : les consciences s'influencent les unes les autres. À la mort, la conscience se déconnecte des stimuli externes et se met à percevoir les autres consciences, le plus souvent celles qui sont mortes en même temps et dans un espace géographique proche. Les toutes premières consciences se sont, de manière assez contre-intuitive, développées principalement après la mort du corps. Limitées par le corps lors de leur vivant, elles ont réussi à communiquer à travers la mort. Petit à petit, elles en sont arrivées à créer une véritable organisation dont je fais partie. Je suis en quelque sorte un démon, ainsi que tous mes collègues.

J'éclatai de rire.

- C'est absolument excellent. Vraiment très bon. Mais vous êtes quand même une humaine dans un bâtiment humain.

Elle tendit la main vers le mur derrière elle. Celui-ci sembla s'évaporer et je vis de gigantesques flammes au milieu desquelles hurlaient des corps calcinés. Je n'eus pas le temps de m'habituer à la vision qu'elle déplaça son index vers un autre pan de mur, lequel devint une mer gelée dans laquelle évoluait un drakkar en piteux état. Des mains de squelettes jaillissaient de la glace et tentait d'aggriper la coque. Mon hôte claqua dans ses doigts et le bureau redevint normal.

- Nous sommes vraiment des démons, mon cher. Simplement, devant la surpopulation, nous avons dû nous organiser. En cette période de doute, la plupart des humains ne sont plus certains de croire en l'enfer. Leur conscience est bloquée et interfère avec les autres consciences. Notre organisation se contente de les débloquer. Généralement, un simple passage dans le bureau d'un démon comme mon collègue que vous avez rencontré suffit à leur rappeler leur crainte la plus profonde. Toute cette organisation existe, bien entendu, grâce aux connaissances de tous les humains qui passent par nous. Au fil du temps, nous évoluons au rythme de l'humanité ! Nous nous modernisons, nous avons même un réseau informatique.

Fièrement, elle me montra son gigantesque écran à tube cathodique.

- Mais c'est préhistorique ! ne pus-je m'empêcher de m'écrier.

- Ah, vous trouvez ? C'est peut-être parce que la plupart des décédés ont un certain âge, cela expliquerait notre léger retard technologique.

- C'est bien joli, mais je fais quoi dans tout ça ?

- J'espère avoir convaincu votre scepticisme. Il est dans votre intérêt de collaborer afin de vous débloquer, de trouver l'enfer qui vous convient le mieux.

Je réfléchis une seconde.

- Ce que j'ai toujours craint c'est de me retrouver sur une plage magnifique avec une mer turquoise, entouré de personnes charmantes.

- Je vais voir ce que nous…

Elle s'interrompit et me darda d'un regard sévère.

- Vous essayez de vous jouer de nous. Ce n'est pas une crainte…

- Si si, je vous assure, bégayai-je, j'ai horreur de la mer et du soleil. Je…

- Vous êtes mort, monsieur. Votre enfer doit correspondre à votre peur la plus profonde. Sans cela, vous ne serez pas débloqué. Nous ne sommes pas une agence de voyages avec différentes formules à la carte !

- Si c'était le cas, je ne recommanderais pas vos services.

Je tentai un petit rire que je voulais ironique, mais qui ne fût qu'une rauque raclure de gorge jaunâtre.

- Dans votre situation, continua-t-elle sur un ton égal comme si je n'avais rien dit, il serait peut-être avisé de consulter un de nos théologiens. Ils pourraient certainement vous aider, après tout c'est à ça que servent les religions.

- Ah non ! m'exclamai-je, j'ai horreur de la vacuité religieuse. Les conseillers religieux me donnent des boutons.

Elle me lança un regard étonné par-dessus ses lunettes.

- Ils ne servent à rien, ils brassent du vide et ils utilisent les maigres ressources de leur cerveau décati pour gloser sur l'interprétation à donner à un livre vieux de plusieurs siècles, nonobstant les multiples traductions et adaptations. Non, vraiment, la théologie, c'est la parodie de l'intelligence, le culte du cargo de la science. Tout, mais pas un théologien.

Intéressée, elle se pencha vers moi.

- Dîtes, l'idée de passer l'éternité avec des théologiens très croyants vous effraie-t-elle ?

J'éclatai de rire.

- Je vous vois venir. Non, cela ne m'effraie pas, cela me rend juste violent. C'est plutôt eux qui devraient être effrayés. Mais ce n'est certes pas ma définition de l'enfer.

- Dommage, j'avais justement un interminable concile du Vatican sous la main. Un enfer assez couru.

- Assez couru ?

- Oui et tout particulièrement par des prêtres et des religieux. À croire que l'expérience est assez traumatisante.

- Et si vous me laissiez tout simplement sortir ?

- Sortir ?

- Pourquoi pas ?

- Sortir pour aller où ?

- La porte d'entrée, en bas.

- Je vous rappelle que vous êtes mort. Ce bâtiment n'est qu'une construction psychique commune. Il n'y a pas d'extérieur.

- Admettons que je ne vous croie pas. Vous avez fait de jolis tours de passe-passe, mais je me sens bel et bien vivant. L'idée que je sois mort est absurde.

- Plusieurs de vos philosophes sont arrivés à la même conclusion de leur vivant, mais, effectivement, il est nécessaire que vous soyez convaincu.

Elle saisit le cornet d'un antique téléphone en Bakélite sur son bureau et composa un numéro.

- Le centre médical ? Oui, j'ai un cas pour vous. Refus d'acceptation. Est-ce que vous pouvez le prendre en priorité ? C'est assez urgent, il n'a pas d'enfer assigné. Comment ? Oui. Non. Oui.

Elle raccrocha avec un grand sourire.

- Voilà, vous devez vous rendre au sous-sol, service médical avec les formulaires suivants.

Une imprimante matricielle se mit à crachoter dans un coin. Elle arracha les pages et me les tendit.

- Surtout, ne perdez pas les étiquettes ! Et… ah oui, merci de signer ici !

J'avais beau me concentrer, les lettres dansaient devant mes yeux en une sarabande de hiéroglyphes mouvants, impénétrables, indéchiffrables.

- Euh, excusez-vous, mais je signe quoi là au juste ?

- Une décharge reconnaissant que je vous ai transféré au médical. C'est juste de la paperasserie interne pour garantir que vous n'êtes plus sous ma responsabilité.

Elle regarda sa montre tandis que je signai machinalement.

- Est-ce que ça vous dérangerait d'attendre encore sept minutes dans mon bureau ?

- Euh, fis-je étonné. Non, mais je ne comprends pas bien…

- Je dois rendre un rapport de mon travail heure par heure. Nous appelons ça des timesheets. C'est très important, mais un peu fastidieux. Si vous restez encore sept minutes, je pourrai vous inscrire dans ma prochaine tranche horaire, ce sera plus facile, car, certaines heures, je ne sais pas trop quoi mettre.

- Je ne vois pas très bien l'utilité de ce processus, mais si vous voulez que j'attende, je n'y vois pas d'objections.

- C'est très utile. Cela permet au service de supervision de vérifier que chacun fait bien son travail. Les budgets sont réduits et il y'a tellement de tire-au-flanc ! Plus les budgets sont restreints, plus il faut être sévère et engager des vérificateurs de timesheets. C'est logique, non ?

Je la regardai, un peu paniqué, n'osant pas ouvrir la bouche. Je n'eus même pas la force de faire semblant d'acquiescer. Mais cela ne perturba pas mon interlocutrice qui fixait obstinément sa montre. Après une éternité silencieuse que je supposai être sept minutes, elle me fit un petit signe de la main.

Je me levai et repris l'ascenseur en direction du sous-sol. Preuve de ma résignation, l'idée de trouver une sortie ne m'effleura même plus. J'aime croire que c'était par curiosité intellectuelle, mais l'honnêteté me pousse à admettre qu'il s'agissait d'une reddition mentale. J'avais toujours été fasciné par ces condamnés à mort qui se laissaient fusiller bravement, debout, sans tenter le tout pour le tout, sans se lancer dans un dernier baroud d'honneur. Je pensais être différent. J'étais convaincu d'être un lutteur, un combatif. Placé devant la première épreuve un peu effrayante de ma vie, ou de ce qui semblait être encore ma vie, je me révélais pleutre et soumis en à peine quelques minutes de discussions. Quelle déception !

Comme je m'y attendais, le sous-sol se révéla un véritable dédale orné de numéros et de couleurs. Naïvement, je demandai le service médical. On me répondit que l'entièreté du sous-sol était le service médical, que je m'y trouvais, qu'il fallait que je sache dans quel service je devais aller. Je n'en avais évidemment pas la moindre idée. À force de demander mon chemin en agitant ma liasse de papier, on finit par m'indiquer des directions qui se révélèrent relativement cohérentes. J'aboutis devant un petit guichet où je tendis mes formulaires. Derrière le guichet, deux jeunes personnes de sexes opposés buvaient un café et ma présence semblait les importuner. Ils firent mine de m'ignorer malgré de nombreux raclements de gorges et de « Pardon ? Excusez-moi ! ». Comme ils continuaient à roucouler, je me contentai de les regarder fixement avec un large sourire. Un truc que j'avais sans doute appris dans un film ou une nouvelle. L'effet ne tarda pas. L'homme se mit à rougir et la femme s'approcha de moi :

- Qu'est-ce qu'il veut l'impatient ?

Je tendis mes papiers désormais chiffonnés comme une liasse de billets. La femme s'en empara et, pendant quelques minutes, je ne vis plus d'elle qu'une masse de cheveux roux bouclés qui grommelait.

- Je ne trouve pas la copie certifiée conforme de votre dossier médical, fit-elle en relevant la tête.

- La quoi ?

- La copie certifiée conforme de votre dossier médical. C'est indispensable de l'avoir.

- Et comment suis-je censé l'avoir ?

- Elle a dû vous être remise à votre arrivée.

- C'est que…

Je sentais que de ma réponse allait dépendre la suite de mon épreuve. J'étais un peu comme dans ces livres de ma jeunesse dont vous êtes le héros. Si je répondais bien, j'allais à la page 185 et je passais l'épreuve. Si je ne répondais pas bien, j'étais envoyé page 217 dans un nouveau cycle infernal.

Le compagnon de mon interlocutrice nous fixait sans rien dire, ses yeux globuleux incrusté dans son grand corps maigre et immobile. Je suis sûr qu'il savait. Qu'il attendait de voir si je partais pour la page 185 ou la page 217.

- Le démon qui vous a accueilli vous a-t-il donné une copie certifiée conforme de votre dossier médical ? C'est une farde en carton rouge.

- Non, je m'en souviendrais si c'était le cas, répondis-je machinalement en me mordant la langue. Cela commençait à sentir la page 217.

- Alors il faudrait aller la chercher chez lui.

La perspective de repartir chez mon petit chauve ne m'enchantait guère.

- Et si la copie qu'il vous donne n'est pas certifiée, il faudra passer par le service de conformité, poursuivit la rousse.

Mon cerveau tournait à toute vitesse. Pour éviter la page 217, je décidai de tenter le tout pour le tout.

- S'il s'avérait que la copie certifiée conforme de mon dossier médical était égarée, articulai-je lentement, le cœur battant à tout rompre. Quelle serait la procédure ?

- Et bien on devrait vous imprimer une copie de la copie certifiée conforme.

- Qui pourrait imprimer cette copie ?

La rousse se retourna vers son muet soupirant.

- Tu peux faire ça, non ?

- Oui. N'importe quel ordinateur de l'étage relié au réseau le peu, les dossiers sont stockés dans le répertoire partagé du service.

J'hésitai entre la jubilation de la page 185 et les agonir d'injures. Ils n'auraient pas pu le dire tout de suite ? Les systèmes administratifs ont tendance à être peuplés de troglodytes mous du bulbe. La corrélation est observable par tout un chacun, mais je n'ai pas encore réussi à démontrer la causation. Sont-ils recrutés comme étant particulièrement lents et incapables de toute autonomie de pensée ? Sont-ils formés pour le devenir ? Ou bien est-ce une forme de sélection naturelle : toute personne capable d'un minimum de sens analytique, de logique et d'initiative finit par rendre sa démission en hurlant et en s'arrachant les vêtements, généralement au bout de sept à huit jours.

Une autre théorie que j'entretenais jusque là était celle de la création d'emplois. À partir du moment où le but premier d'une société était de créer des emplois, il fallait créer des structures capables d'employer tous les types de profils. Et pour chaque type d'individus, il fallait un emploi qui ne soit pas seulement à sa portée, mais également où il soit le meilleur. Où il excelle et écrase la concurrence. Mécaniquement, les administrations se sont donc épanouies pour employer les gens pointilleux, mesquins, sans imagination et, n'ayons pas peur de le dire, foncièrement bêtes et méchants.

La force de l'administration ce n'est pas qu'elle propose des emplois qui ne nécessitent pas d'être intelligent, il en existe bien d'autres. Non, sa première qualité est qu'elle propose des emplois où faire preuve d'intelligence est un défaut grave. La bêtise et la stupidité deviennent des compétences encouragées et transmises grâce aux prestigieuses « Écoles d'administration ». Au même titre qu'un cul de jatte est incapable de devenir éboueur, un humain intelligent, raisonnable et capable de prendre du recul ne peut en aucun cas prétendre à travailler pour l'administration.

La généralité n'est malheureusement pas tout à fait vraie. L'administration pouvant, parfois, offrir de confortables salaires ou certains avantages afférents, une nouvelle race d'humains s'est créée : des gens capables d'éteindre leur intelligence au moment où leur badge touche la pointeuse. Le soir et le week-end, ils discourent avec élégance, ils lisent, partagent, offrent une vision personnelle fouillée. Mais, une fois la cravate nouée autour du cou afin de couper toute irrigation du cerveau, ils se transforment en œsophage sur patte, engloutissant des litres de mauvais café tout en répétant, le regard vide, d'abscons aphorismes numérotés.

Le but premier d'un employé administratif, c'est d'être là pour toucher un salaire sur ses heures de présence. Durant ces heures, il doit faire le moins possible. Pour justifier qu'il reste encore beaucoup de travail à faire. Moins il fait, plus est grande la probabilité qu'on engage un nouvel agent administratif pour lui tenir compagnie, augmentant de ce fait son importance et son prestige. Car si le travail n'avance pas, c'est bien que le premier employé n'est pas suffisant tout seul. À deux, nos compères pourront passer à la vitesse supérieure et générer du travail à faire. Si la masse de travail ne diminuait pas avec le premier, elle ne fait qu'augmenter avec le second. La boucle est lancée et tout cela est un merveilleux mécanisme pour générer de l'emploi qui est, on l'a dit, le but premier de notre société. Le corolaire est que tout employé qui fera du zèle en faisant diminuer la charge de travail se verra immédiatement tancer, blâmer voire pousser à la démission.

De quelle race étaient mes amoureux ? Étaient-ils bêtes de nature ou bien arrivaient-ils à ranger leur cerveau durant les heures de bureau ? Cela ne changeait rien. J'étais dans les heures de travail. Les bêtes étaient toujours aussi bêtes, les autres savaient bien qu'il était hors de question de rallumer leur encéphale, quel qu'en soit le prétexte. Ne pas voir la débilité profonde qu'ils contribuaient à créer était leur seule stratégie de survie envisageable. Ils connaissaient certainement des cas qui ne l'avaient pas suivie aveuglément, qui avaient sombré en dépression, en burn-out, en bore-out, en brown-out avant de se retrouver bénévoles fauchés dans une association quelconque qui les envoyait distribuer des préservatifs mentholés au Gabon. Afin de « donner du sens à leur vie ».

Quoi qu'il en soit, je ne pouvais pas m'en faire des ennemis. Le spectre de la page 217 n'était pas encore écarté. Je tentai une approche naïve.

- Vous pourriez m'imprimer cette copie de la copie certifiée conforme ? Je me mordis les lèvres pour ne pas ajouter « Vu que cette information est de toute façon dans votre ordinateur, bande de crétins des Alpes consanguins », me rendant compte que cela pourrait être perçu comme une agression voire, comble de l'horreur, une critique envers le système.

Le jeune homme regarda la jeune femme et lui dit :

- Je pourrais s'il a déclaré sa copie conforme comme perdue.

- Il pourrait si vous avez déclaré votre copie conforme comme perdue, me répéta-t-elle comme à un enfant.

Je pris une profonde inspiration pour tenter de ne pas laisser percer mon impatience.

- Et où puis-je déclarer cette perte ?

- Et où peut-il déclarer cette perte ?

- Il peut aller au service des déclarations, au quatrième.

- Vous pouvez aller au service des déclarations, au quatrième.

J'avais envie d'attraper le mec par-dessus le guichet, de secouer son sac d'os et de lui demander de me regarder dans les yeux. Peut-être est-ce cela le secret de la lâcheté : être courageux dans ses fantasmes, mais baisser son froc face à la réalité. L'imagination devient un exutoire et plus il s'éloigne du domaine du possible, plus l'acceptation de la réalité devient inéluctable.

- Je reviens tout de suite, lançai-je.

- Oh, avec le service de réclamation, ça ne risque pas d'être tout de suite, ricana le grand dadais en m'adressant directement la parole pour la première fois.

Ses paroles me glacèrent le cœur. La suite devait lui donner raison. Trouver le service des réclamations fut étonnamment aisé. Comme de nombreux panneaux me l'indiquaient, je pris un ticket dans la salle d'attente. Celui-ci indiquait « E017 ». Un écran composé de LED rouges indiquait « C243 ». Je n'étais guère avancé, mais je me disais que, au pire, j'avais 16 personnes devant moi. Après quelques minutes, un chuintement sonore se fit attendre et l'écran afficha « E912 ». Je faillis défaillir.

M'armant de courage, je chronométrai les affichages. Je constatai que les E s'entremêlaient de manière totalement aléatoire avec les A, les B et les C. Il n'y avait pas de D, mais leur absence était compensée par le Z. Après une demi-heure, le E en était au E915. Un rapide calcul m'apprit que j'en avais pour 17h à patienter.

Faisant contre mauvaise fortune bon cœur, je décidai de me trouver un petit coin pour m'installer confortablement. Je déambulai dans les étages, testant les fauteuils dont la variété de formes n'avait d'égal que leur inconfort commun. Apercevant des toilettes, j'en profitai pour soulager un besoin naturel et pour faire quelques ablutions. C'est rafraichi et ragaillardi que je décidai de voir où en était le compteur, histoire d'affiner mon algorithme d'estimation.

J'entrai dans la salle. Un « A012 » clignotait, aussitôt suivi d'un « Z587 ». Enfin, j'aperçus un « E019 ». Je bondis ! C'était impossible, il n'y avait pas une heure que j'étais parti !

Sans ménagement, je me dirigeai vers le comptoir, bousculant la personne qui était accoudée et m'adressant directement au petit employé maigrelet.

- Excusez-moi, mais j'ai le ticket E017.

- Et bien, attendez votre tour !

- Mais il est déjà passé.

- Si vous avez raté votre tour, reprenez un ticket. Je ne vous félicite pas, vous avez fait perdre du temps à tout le monde.

- Mais… bredouillais-je, on était à E915 !

- Oui, c'est le dernier. Les E vont de E015 à E915.

- C'est absurde !

- Non, c'est comme ça. Allez prendre un autre ticket !

- Je ne partirai pas. C'est scandaleux ! Ce procédé de numérotage aurait dû être affiché en grand. Je vais me plaindre, c'est contraire à la norme ISO 404 !

J'improvisais sous le coup d'une inspiration subite.

- Monsieur, me dit l'employé, le règlement stipule que vous devez prendre un autre ticket.

Mais je voyais bien qu'il avait déjà beaucoup moins d'assurance.

- Écoutez, lui dis-je, je viens du service médical. Il me manque juste une copie certifiée conforme de mon dossier médical.

- Et bien je ne peux rien faire pour vous. C'est le service médical qui peut imprimer une copie de la copie certifiée conforme.

- Ils m'ont dit que je devais d'abord venir vous déclarer la perte de la copie originale.

Il eut l'air surpris puis me dit :

- Vous venez déclarer la perte de votre copie certifiée conforme afin d'obtenir une copie de la copie certifiée conforme, c'est ça ?

- Oui.

- Fallait le dire tout de suite.

Un silence se fit. Il me regardait, semblant attendre que je prisse l'initiative. Je tentai une onomatopée interrogative.

- Et bien ?

- Et bien vous êtes venu, tout est en ordre.

- Co… comment ? Comme ça ? Vous ne devez pas me donner quelque chose ?

- Non, vous êtes venu, merci monsieur.

Je ne savais pas s'il se contentait de se débarrasser de moi, mais je décidai d'entrer dans son jeu. Il y'avait en effet peu de chances pour qu'un tel personnage soit assez intelligent et retors pour se contenter de m'envoyer paître de cette façon. Ça aurait été trop subtil. Je redescendis au service médical pour annoncer immédiatement au couple de roucouleurs que :

- J'ai déclaré la perte au service des déclarations.

Le grand maigre me fit un sourire pathétique.

- Voilà ! Comme ça, tout est en ordre. Venez, je vais vous imprimer la copie.

Il me tendit le papier. Je faillis l'étrangler lorsqu'il ajouta :

- Au moins, la procédure est respectée. C'est le plus important, vous ne pensez pas ?

Mais je me rendis compte que je ne savais même plus la raison pour laquelle j'avais besoin de ce papier. Heureusement, sa compagne vint à mon secours.

- Le docteur va vous prendre ! Vous pouvez aller à la salle d'attente 11, on vous appellera.

Suivant les indications, j'arrivai dans une salle encombrée de bancs et de magazines. Il y'a une industrie spécialisée dans les magazines pour salle d'attente. En premier lieu, ceux-ci doivent être imprimés déjà défraichis et avec des dates remontant à plusieurs années. Mais, de manière plus importante, ils doivent être à ce point inintéressants que la venue du médecin ou du dentiste vous semble une bénédiction. D'ailleurs, nous l'avons tous cette réluctance naturelle à saisir ce genre de magazine. Notre premier réflexe est toujours de nous asseoir, de contempler le vide comme pour dire que l'attente sera courte, que cela ne vaut pas la peine de se salir les méninges avec cette presse dont même les caniveaux ne veulent plus. Jusqu'à ce que l'ennui prenne le dessus.

Outre les magazines, deux télévisions se faisaient face. L'une débitait ce qui ressemblait à une tonitruante émission hallucinogène pour enfant pré-épileptique tandis que l'autre diffusait un reportage essentiellement composé d'interviews de personnes s'exprimant par onomatopées. De temps en temps, des publicités apportaient une certaine variété dans la ganacherie.

J'ai toujours détesté les écrans. Si un écran est allumé dans la pièce où je me trouve, il m'est impossible d'en détacher les yeux. J'ai beau tenter de me concentrer sur la personne en face de moi, sur la conversation ou sur le livre que j'ai entre les mains, rien n'y fait. La théorie de flashs lumineux agresse ma rétine et me brûle les neurones. Le volume sonore, généralement réglé suffisamment bas pour être jugé socialement acceptable, mais assez élevé pour être compris ne fait qu'empirer la mobilisation de mon pauvre cortex, assailli de stimulations morbides.

Si au moins cette souffrance avait un but louable, mais, en réalité, il s'agissait purement et simplement de me faire acheter des yaourts et des couches-culottes en me montrant des gens trop beaux et trop heureux de se rouler au ralenti dans une herbe trop verte.

Bien décidé à ne pas me soumettre à ce qui est le loisir préféré de la plupart de mes concitoyens, mais qui s'apparente chez moi à de la torture pure et simple, j'ai empoigné un banc en métal et je l'ai tiré jusque dans l'étroit couloir dans un concert de grincements métal contre carrelage. Là, hors de portées des déjections cathodiques, je me suis installé, attendant qu'à chaque instant on me fasse remarquer que je bloquais le passage et que c'était interdit.

Mais il faut croire qu'aucun règlement n'avait prévu cette éventualité et, à part quelques regards légèrement curieux, j'ai pu attendre dans une paix royale. C'est l'une des rares facettes positives des sociétés hyper administratives. Si vous osez faire quelque chose qui n'est pas expressément et explicitement défendu, personne n'ose vous contredire. Tout le monde suppose que vous en avez le droit, que vous avez les permissions requises. Questionner est, par nature, dangereux. Si cela existe, c'est que c'est autorisé et normal, point à la ligne. J'aurais pu aussi bien sacrifier un agneau et me baigner nu dans son sang au milieu du couloir, personne n'aurait osé émettre la moindre protestation.

Le confort psychosomatique relatif de ma situation se trouva grandement amélioré par cette victoire à la Pyrrhus sur l'absurdité administrative. C'est avec un petit sourire aux lèvres que j'accueillis une grande femme en blouse blanche.

- Bonjour, je suis la docteur.

Je saisis la main qu'elle me tendait et la suivis dans un petit bureau qui semblait plus tenir du débarras de par sa taille et par son contenu hétéroclite.

- Excusez le désordre, nous sommes en plein déménagement. Ceci est un cabinet provisoire. Mais venons-en au fait, vous êtes en plein doute comme tous les agnostiques et nous allons trouver une solution.

- Athée, ai-je annoncé. Je suis athée et je n'ai aucun doute.

- Vous avez de la chance, je suis spécialiste de l'agnosticisme.

- Je suis athée, pas agnostique. Je suppose que vous connaissez la différence.

- Si vous venez me voir, c'est que vous êtes agnostique vu que c'est ma spécialité !

- Mais…

- Nous allons passer un petit test de personnalité. Je vais vous décrire des situations et vous allez me dire si vous vous reconnaissez dans l'une ou l'autre.

Le test dura près d'une demi-heure. Souvent, je ne voyais pas comment un humain ne pouvait pas ne pas se reconnaître tellement les situations étaient évidentes. D'autres fois, je me sentais complètement étranger. Enfin, la docteur s'exclama :

- Cela confirme bien le résultat. Voyez le résultat, vous vous êtes identifié à près d'une moitié des situations.

- Il y'a une autre moitié à laquelle je ne me suis pas du tout identifié.

- C'est normal, vous ne pouvez quand même pas être complètement aligné avec le test. C'est statistiquement impossible.

- Et certaines questions sont impossibles à répondre par la négative. Je rappelle qu'une des questions était « Avez-vous des périodes de grande fatigue et/ou de grande énergie ? ».

- Oui, vous êtes bien agnostique ! Je vais vous faire une prescription pour un examen plus poussé. Un scanner cérébral.

- Hein ?

- Mais comme il est indisponible suite au déménagement, vous ne pourrez pas le passer. Je vous le prescris tout de même.

Comme je n'avais aucune envie de passer un scanner cérébral, je me contentai de prendre les papiers qu'elle me tendait et sortit.

- N'oubliez pas de repasser à l'accueil ! me lança-t-elle alors que je m'éclipsais.

Ce que je fis, tendant ma liasse à la rousse bouclée qui semblait s'ennuyer de son prétendant en lisant un magazine. Elle tritura le tout, arracha des étiquettes qu'elle colla à ailleurs, parapha certains papiers, m'en fit signer d'autres et, de ma manière générale, ne fit qu'épaissir ma pile. Avec un petit sourire, elle me souhaita une bonne journée.

Machinalement, je me rendis aux ascenseurs, contemplant les pages blanches sur lesquelles s'alignaient et dansaient des sarabandes de caractères auxquelles je ne comprenais toujours rien. J'avais dû marcher sans m'en rendre compte, car, lorsque je levai les yeux, je me retrouvai dans un long couloir, face à une petite porte d'un vert délavé qui m'était vaguement familière.

Je frappai et entrai sans même attendre la réponse. Le gros chauve qui m'avait accueilli leva à peine les yeux de ses classeurs poussiéreux.

- Vous avez gagné, dis-je.

- Pardon ?

- Choisissez n'importe quel enfer. Les flammes, les mers gelées, ce que vous voulez.

- Vous avez résolu votre blocage ?

- Oui ! Posez-moi n'importe quelle question, j'accepterai l'enfer que vous choisirez. Tout plutôt que de rester ici.

Il eut un sourire satisfait.

- Ah, ça me fait plaisir de voir qu'un dossier aussi épineux que le vôtre se clôture de manière efficace. Dans ce cas, procédons. Puis-je voir le compte rendu médical ?

Je lui tendis les papiers. Il les examina.

- Agnostique avec une tendance à l'angoisse existentielle. Est-ce que l'idée du néant éternel vous effraie ?

- Oh oui ! fis-je sans conviction.

- Parfait, parfait. Vous allez donc connaître le néant éternel.

Tandis qu'il griffonnait un formulaire, je fermai les yeux en prenant une profonde inspiration. Je ne savais pas trop à quoi m'attendre, mais je me sentais prêt à tout.

- Tenez, ceci est le formulaire 121bis pour le néant éternel. Allez le faire remplir au service des cas rares, joignez-y un certificat de vie. Revenez me voir lorsque votre dossier sera complété.

À tout sauf à ça !

- Ne vous inquiétez pas pour le certificat de vie si vous n'en avez pas. Faites imprimer une copie puis aller la faire certifier conforme au service de conformité. Je m'arrangerai pour que ça passe.

Il me tendait le dossier avec un petit sourire sardonique. Pour la première fois, je décelai l'intelligence jusque là bien cachée dans ses prunelles. Des flammes semblaient lui danser sur la tête.

Je me mis à hurler.

Ottignies, 21 janvier 2019. D'après une idée du 26 février 2015.

Toute ressemblance avec des situations existantes est volontaire. Chacune des situations présentées a été vécue telle quelle ou de façon très similaire par l'auteur. Heureusement, elles furent séparées.Photo by Samuel Zeller on Unsplash

Je suis @ploum, conférencier et écrivain électronique déconnecté rémunérés en prix libre sur Tipeee, Patreon, Paypal, Liberapay ou en millibitcoins 34pp7LupBF7rkz797ovgBTbqcLevuze7LF. Vos soutiens, même symboliques, font une réelle différence pour moi. Merci !

Ce texte est publié sous la licence CC-By BE.

21 Feb 2019 10:31am GMT

Tom Laermans: Graphing your PowerDNS services with Metronome, part 2

In a previous post, I've discussed Metronome, a lightweight graphing framework for PowerDNS services (authoritative server, recursor, dnsdist).

In this post, I'll be documenting how to secure this setup, as in the default configuration, there is no TLS encryption, and anyone can send data to your daemon. I will assume everything has been installed as per the previous post and has been verified to work correctly.

This post will help you add TLS transport encryption, set a password so only authorized users can actually access the statistics web pages, and make sure only your desired DNS servers are able to send statistics to your Metronome instance.

TLS

For this first step you'll need a valid certificate for your webserver; you can get one from Let's Encrypt. I've touched upon it before in this blog, but actually getting the certificate is out of scope for this article.

Start by changing your /opt/metronome/html/local.js file and point it to the HTTPS version of your website, tacking on the /metronome path at the end:

"use strict";
var metronomeServer="https://metronome.boxed-it.com/metronome/";

Then, we reconfigure the Apache virtual host configuration in /etc/apache2/sites-available/metronome.example.com:

<VirtualHost *:80>
ServerName metronome.example.com
Redirect / https://metronome.example.com/

ErrorLog /var/log/apache2/metronome-error.log
CustomLog /var/log/apache2/metronome-access.log combined

LogLevel alert
ServerSignature Off
</VirtualHost>

<Virtualhost *:443>
ServerName metronome.example.com

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/*.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/*.example.com/privkey.pem

DocumentRoot /opt/metronome/html

<Directory /opt/metronome/html>
Require all granted
</Directory>

ProxyPass /metronome/ http://127.0.0.1:8000/

ErrorLog /var/log/apache2/metronome-error.log
CustomLog /var/log/apache2/metronome-access.log combined

LogLevel alert
ServerSignature Off
</VirtualHost>

This configuration will also tunnel the data served by the Metronome daemon's built-in web server through Apache, including encryption support.

Next, we'll enable the required Apache modules, and reload Apache to use the new configuration:

a2enmod proxy_http
a2enmod ssl
systemctl reload apache2

Securing the Metronome web server port

Currently, Metronome's built in webserver is listening on port 8000 on all interfaces, if you leave this open, anyone will be able to bypass the Apache server's security configuration.

To resolve this, edit /etc/systemd/system/metronome.service and replace its contents with the following (changes in bold):

[Unit]
Description=PowerDNS Metronome
After=network.target

[Service]
User=metronome
ExecStart=/opt/metronome/bin/metronome --daemon=0 --stats-directory=/opt/metronome/stats --disable-syslog --webserver-address=127.0.0.1

[Install]
WantedBy=multi-user.target

Then, to apply, restart Metronome:

systemctl restart metronome

Now, the web server (serving the statistics themselves) can only be accessed through Apache.

Adding authentication to the Metronome server

Encrypting the data transfer to your Metronome server is only half of the job, you probably still want to add some authentication so not just anyone can access your Metronome instance.

Create a password file using the following command (it will prompt for the password):

htpasswd -c /etc/apache2/metronome.htpasswd yourusername

This will create a new password file. If you want to add extra users, use the same command but remove the -c parameter. Otherwise you'll just recreate the file with a single user inside!

Adjust the Apache virtual host configuration in /etc/apache2/sites-available/metronome.example.com again (changes in bold):

<VirtualHost *:80>
ServerName metronome.example.com
Redirect / https://metronome.example.com/

ErrorLog /var/log/apache2/metronome-error.log
CustomLog /var/log/apache2/metronome-access.log combined

LogLevel alert
ServerSignature Off
</VirtualHost>

<Virtualhost *:443>
ServerName metronome.example.com

SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/*.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/*.example.com/privkey.pem

DocumentRoot /opt/metronome/html

<Directory /opt/metronome/html>
AuthType Basic
AuthName "Metronome"
AuthUserFile /etc/apache2/metronome.htpasswd
Require valid-user
</Directory>

ProxyPass /metronome/ http://127.0.0.1:8000/

ErrorLog /var/log/apache2/metronome-error.log
CustomLog /var/log/apache2/metronome-access.log combined

LogLevel alert
ServerSignature Off
</VirtualHost>

Apply the configuration by reloading the Apache configuration:

systemctl reload apache2

Now, your browser will prompt you for your username and password, after which Metronome will continue to work as usual.

Firewalling the Carbon port

The last hurdle is Metronome's Carbon port, on which it receives the data from the remote systems. This should normally not be open to the whole world. You can configure the iptables firewall on the Metronome host to close this port to everyone but your DNS servers. I myself use Puppet to configure these rules, but this is how you do it standalone:

iptables -I INPUT -p tcp --dport 2003 -j REJECT
iptables -I INPUT -p tcp --dport 2003 -s 192.168.53.3 -j ACCEPT
iptables -I INPUT -p tcp --dport 2003 -s 192.168.53.4 -j ACCEPT
iptables-save
ip6tables -I INPUT -p tcp --dport 2003 -j REJECT
ip6tables-save

Alternatively, you could just open up the port to a specific IP range:

iptables -I INPUT -p tcp --dport 2003 -j REJECT
iptables -I INPUT -p tcp --dport 2003 -s 192.168.53.0/24 -j ACCEPT
iptables-save
ip6tables -I INPUT -p tcp --dport 2003 -j REJECT
ip6tables-save

Note that I've also closed off IPv6 as well as IPv4, as the Metronome daemon will listen on both address families - you can of course also add ACCEPT lines for hosts using IPv6 for statistics.

Finally

That's it! Your Metronome instance is up and running, restarts upon system reboot, is collecting data, access has been secured with TLS and authentication. When you add a new server, don't forget to add a line to the firewall configuration; it'll then automagically appear in the dropdown on the Metronome web interface (you'll have to refresh the page though if you had it open) and start showing graphs.

Pleas don't hesitate to comment below in case of issues, errors or tips to improve!

&url Writing informative technical how-to documentation takes time, dedication and knowledge. Should my blog series have helped you in getting things working the way you want them to, or configure certain software step by step, feel free to tip me via PayPal (paypal@powersource.cx) or the Flattr button. Thanks!

21 Feb 2019 10:00am GMT

Dries Buytaert: Optimizing site performance by "lazy loading" images

Recently, I've been spending some time making performance improvements to my site. In my previous blog post on this topic, I described my progress optimizing the JavaScript and CSS usage on my site, and concluded that image optimization was the next step.

Last summer I published a blog post about my vacation in Acadia National Park. Included in that post are 13 photos with a combined size of about 4 MB.

When I benchmarked that post with https://webpagetest.org, it showed that it took 7.275 seconds (blue vertical line) to render the page.

The graph shows that the browser downloaded all 13 images to render the page. Why would a browser download all images if most of them are below the fold and not shown until a user starts scrolling? It makes very little sense.

As you can see from the graph, downloading all 13 images take a very long time (purple horizontal bars). No matter how much you optimize your CSS and JavaScript, this particular blog post would have remained slow until you optimize how images are loaded.

Webpagetest images february before

"Lazy loading" images is one solution to this problem. Lazy loading means that the images aren't loaded until the user scrolls and the images come into the browser's viewport.

You might have seen lazy loading in action on websites like Facebook, Pinterest or Medium. It usually goes like this:

An animated GIF of a user scrolling a webpage and a placeholder images being replaced by the final image

To support lazy loading images on my blog I do three things:

  1. Automatically generate lightweight yet useful placeholder images.
  2. Embed the placeholder images directly in the HTML to speed up performance.
  3. Replace the placeholder images with the real images when they become visible.

Generating lightweight placeholder images

To generate lightweight placeholder images, I implemented a technique used by Facebook: create a tiny image that is a downscaled version of the original image, strip out the image's metadata to optimize its size, and let the browser scale the image back up.

To create lightweight placeholder images, I resized the original images to be 5 pixels wide. Because I have about 10,000 images on my blog, my Drupal-based site automates this for me, but here is how you create one from the command line using ImageMagick's convert tool:

$ convert -resize 5x -strip original.jpg placeholder.jpg

The resulting placeholder images are tiny - often shy of 400 bytes.

Large metal pots with wooden lids in which lobsters are boiledThe original image that we need to generate a placeholder for. An example placeholder image shows brown and black tonesThe generated placeholder, scaled up by a browser from a tiny image that is 5 pixels wide. The size of this placeholder image is only 395 bytes.

Here is another example to illustrate how the colors in the placeholders nicely match the original image:

A sunrise with beautiful reds and black silhouettesAn example placeholder image that shows red and black tones

Even though the placeholder image should only be shown for a fraction of a second, making them relevant is a nice touch as they suggest what is coming. It's also an important touch, as users are very impatient with load times on the web.

Embedding placeholder images directly in HTML

One not-so-well-known feature of the element is that you can embed an image directly into the HTML document using the data URL scheme:


Data URLs are composed of four parts: the data: prefix, a media type indicating the type of data (image/jpg), an optional base64 token to indicate that the data is base64 encoded, and the base64 encoded image data itself.

data:[][;base64],

To base64 encode an image from the command line, use:

$ base64 placeholder.jpg

To base64 encode an image in PHP, use:

$data =  base64_encode(file_get_contents('placeholder.jpg'));

What is the advantage of embedding a base64 encoded image using a data URL? It eliminates HTTP requests as the browser doesn't have to set up new HTTP connections to download the images. Fewer HTTP requests usually means faster page load times.

Replacing placeholder images with real images

Next, I used JavaScript's IntersectionObserver to replace the placeholder image with the actual image when it comes into the browser's viewport. I followed Jeremy Wagner's approach shared on Google Web Fundamentals Guide on lazy loading images - with some adjustments.

It starts with the following HTML markup:


The three relevant pieces are:

  1. The class="lazy" attribute, which is what you'll select the element with in JavaScript.
  2. The src attribute, which references the placeholder image that will appear when the page first loads. Instead of linking to placeholder.jpg I embed the image data using the data URL technique explained above.
  3. The data-src attribute, which contains the URL to the original image that will replace the placeholder when it comes in focus.

Next, we use JavaScript's IntersectionObserver to replace the placeholder images with the actual images:

document.addEventListener('DOMContentLoaded', function() {
  var lazyImages = [].slice.call(document.querySelectorAll('img.lazy'));

  if ('IntersectionObserver' in window) {
    let lazyImageObserver = new IntersectionObserver(
      function(entries, observer) {
        entries.forEach(function(entry) {
          if (entry.isIntersecting) {
            let lazyImage = entry.target;
            lazyImage.src = lazyImage.dataset.src;
            lazyImageObserver.unobserve(lazyImage);
          }
        });
    });

    lazyImages.forEach(function(lazyImage) {
      lazyImageObserver.observe(lazyImage);
    });
  }
  else {
    // For browsers that don't support IntersectionObserver yet,
    // load all the images now:
    lazyImages.forEach(function(lazyImage) {
      lazyImage.src = lazyImage.dataset.src;
    });
  }
});

This JavaScript code queries the DOM for all elements with the lazy class. The IntersectionObserver is used to replace the placeholder image with the original image when the img.lazy elements enter the viewport. When IntersectionObserver is not supported, the images are replaced on the DOMContentLoaded event.

By default, the IntersectionObserver's callback is triggered the moment a single pixel of the image enters the browser's viewport. However, using the rootMargin property, you can trigger the image swap before the image enters the viewport. This reduces or eliminates the visual or perceived lag time when swapping a placeholder image for the actual image.

I implemented that on my site as follows:

const config = {
    // If the image gets within 250px of the browser's viewport, 
    // start the download:
    rootMargin: '250px 0px',
  };

let lazyImageObserver = new IntersectionObserver(..., config);

Lazy loading images drastically improves performance

After making these changes to my site, I did a new https://webpagetest.org benchmark run:

A diagram that shows page load times for dri.es before making performance improvements

You can clearly see that the page became a lot faster to render:

Lazy loading images improves web page performance by reducing the number of HTTP requests, and consequently reduces the amount of data that needs to be downloaded to render the initial page.

Is base64 encoding images bad for SEO?

Faster sites have a SEO advantage as page speed is a ranking factor for search engines. But, lazy loading might also be bad for SEO, as search engines have to be able to discover the original images.

To find out, I headed to Google Search Console. Google Search Console has a "URL inspection" feature that allows you to look at a webpage through the eyes of Googlebot.

I tested it out with my Acadia National Park blog post. As you can see in the screenshot, the first photo in the blog post was not loaded. Googlebot doesn't seem to support data URLs for images.

A screenshot that shows Googlebot doesn't render placeholder images that are embedded using data URLs

Is IntersectionObserver bad for SEO?

The fact that Googlebot doesn't appear to support data URLs does not have to be a problem. The real question is whether Googlebot will scroll the page, execute the JavaScript, replace the placeholders with the actual images, and index those. If it does, it doesn't matter that Googlebot doesn't understand data URLs.

To find out, I decided to conduct an experiment. For the experiment, I published a blog post about Matt Mullenweg and me visiting a museum together. The images in that blog post are lazy loaded and can only be discovered by Google if its crawler executes the JavaScript and scrolls the page. If those images show up in Google's index, we know there is no SEO impact.

I only posted that blog post yesterday. I'm not sure how long it takes for Google to make new posts and images available in its index, but I'll keep an eye out for it.

If the images don't show up in Google's index, lazy loading might impact your SEO. My solution would be to selectively disable lazy loading for the most important images only. (Note: even if Google finds the images, there is no guarantee that it will decide to index them - short blog posts and images are often excluded from Google's index.)

Conclusions

Lazy loading images improves web page performance by reducing the number of HTTP requests and data needed to render the initial page.

Ideally, over time, browsers will support lazy loading images natively, and some of the SEO challenges will no longer be an issue. Until then, consider adding support for lazy loading yourself. For my own site, it took about 40 lines of JavaScript code and 20 lines of additional PHP/Drupal code.

I hope that by sharing my experience, more people are encouraged to run their own sites and to optimize their sites' performance.

21 Feb 2019 8:48am GMT

20 Feb 2019

feedPlanet Grep

Ward Vandewege: shrinking Prometheus binaries

Out of the box, the Prometheus binaries in the latest release (v2.7.1) clock in rather large, at:

-rwxr-xr-x 1 ward ward 60097588 Jan 31 06:18 prometheus
-rwxr-xr-x 1 ward ward 38359349 Jan 31 06:19 promtool

Fillippo Valsorda has a post that describes shrinking golang binaries.

Prometheus uses the promu tool for building its binaries. Adding the necessary ld flags is done by editing .promu.yml file like this:

--- .promu.yml.orig        2019-02-20 08:57:29.413554323 -0500
+++ .promu.yml  2019-02-19 17:44:33.451539440 -0500
@@ -17,6 +17,8 @@
         -X github.com/prometheus/common/version.Branch={{.Branch}}
         -X github.com/prometheus/common/version.BuildUser={{user}}@{{host}}
         -X github.com/prometheus/common/version.BuildDate={{date "20060102-15:04:05"}}
+        -s
+        -w
 tarball:
     files:
         - consoles

After building the prometheus binaries with the latest stable go (1.11.5) using make build, we end up with:

-rwxr-xr-x  1 ward ward 46379136 Feb 19 17:45 prometheus
-rwxr-xr-x  1 ward ward 29391136 Feb 19 17:46 promtool

The binaries are now reduced to about 77% of their original size. Better, but still not great.

We can confirm they are now indeed statically linked and stripped of debug info:

$ file prometheus
prometheus: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped
$ file promtool
promtool: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped

Applying upx takes a while but yields excellent results:

$ upx --brute prometheus 
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2013
UPX 3.91        Markus Oberhumer, Laszlo Molnar & John Reiser   Sep 30th 2013

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
  46379136 ->   9370100   20.20%  linux/ElfAMD   prometheus                    

Packed 1 file.

$ upx --brute promtool
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2013
UPX 3.91        Markus Oberhumer, Laszlo Molnar & John Reiser   Sep 30th 2013

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
  29391136 ->   6271396   21.34%  linux/ElfAMD   promtool                      

Packed 1 file.

And here are the resulting binaries:

-rwxr-xr-x  1 ward ward 9370100 Feb 19 17:45 prometheus
-rwxr-xr-x  1 ward ward 6271396 Feb 19 17:46 promtool

The binaries are now down to roughly 16% of their original size. There is a noticeable startup delay at runtime for the upx decompression, but for a long-running daemon like prometheus that doesn't matter at all.

For promtool, which is used more interactively, you might find the startup delay annoying. This is the original binary:

$ time ./promtool.orig 
usage: promtool.orig []  [ ...]

Tooling for the Prometheus monitoring system.
...

real    0m0.055s
user    0m0.036s
sys     0m0.013s

And here's the UPX-compressed one:

$ time ./promtool
usage: promtool []  [ ...]

Tooling for the Prometheus monitoring system.
...

real    0m0.536s
user    0m0.521s
sys     0m0.016s

20 Feb 2019 2:47pm GMT

Dries Buytaert: Two internet entrepreneurs walk into an old publishing house

A month ago, Matt Mullenweg, co-founder of WordPress and founder of Automattic, visited me in Antwerp, Belgium. While I currently live in Boston, I was born and raised in Antwerp, and also started Drupal there.

We spent the morning together walking around Antwerp and visited the Plantin Moretus Museum.

The museum is the old house of Christophe Plantin, where he lived and worked around 1575. At the time, Plantin had the largest printing shop in the world, with 56 employees and 16 printing presses. These presses printed 1,250 sheets per day.

Today, the museum hosts the two oldest printing presses in the world. In addition, the museum has original lead types of fonts such as Garamond and hundreds of ancient manuscripts that tell the story of how writing evolved into the art of printing.

The old house, printing business, presses and lead types are the earliest witnesses of a landmark moment in history: the invention of printing, and by extension, the democratization of publishing, long before our digital age. It was nice to visit that together with Matt as a break from our day-to-day focus on web publishing.

An old printing press at the Plantin Moretus MuseumDries and Matt in front of the oldest printing presses in the worldAn old globe at the Plantin Moretus Museum

20 Feb 2019 8:55am GMT

19 Feb 2019

feedPlanet Grep

Xavier Mertens: Detecting Mobile Phones Close to Your Location

Last week, I had a unique opportunity to attend a demo of a "cool" product (I insist on the quotes around cool): A complete solution to track and intercept mobile devices. The company presents itself as a partner of law enforcement services, governments or special agencies (you know all the fancy 3-letters acronyms). They demonstrated how easy they are able to track people based on their mobile phones (passive). But, they also demonstrated how easy they can take actions (active) against the same people: blocking the mobile and preventing connections, draining the battery, interception of calls, SMS. But also injection of SMS and calls (spoofing). I won't disclose more details of course.

My knowledge of mobile networks being very low, I tried to search for more information on the web. The solution used to track people is called an "IMSI Catcher". What does mean "IMSI"? The "International Mobile Subscriber Identity" is stored in a 64-bits field and uniquely identifies a user on a mobile network. The ID is provisioned on the SIM card and, as you can imagine, it is extremely sensitive and must be protected. IMSI are usually represented by 15 digits: "xxx xx xxxxxxxxxx". The first block represents the country (Mobile Country Code or MCC), the second block is the operator (Mobile Network Code or MNC). The remaining block is the Mobile Subscription Id Number (MSIN). Here is an example:

206 05 00043XXXXX

"206" is Belgium, "05" is Telenet (a Belgian operator).

While searching for more information, I found a project on GitHub called IMSI-Catcher. From an hardware point of view, it just requires a SDR device. Cool, I have a low-cost SDR dongle lying in my lab. Let's try the tool. My SDR device is fully passive (no injection of data) and does not allow to listen to very high frequencies so I was limited to the 2G or 900MHZ range. I won't cover the installation steps, just follow the tutorial available on the GitHub page. Once my VM ready, I started to sniff at home and collected a very low amount of data because I'm living in the country-side.

During the last two days, I was at a better location and results were much more impressive: 4473 unique IMSI collected! Ok, nice but what can we do with the data? First of all, there is no way to track people because it's not possible to make a link between an IMSI and the mobile phone owner. It's just like listening to the radio. However, we can deduce interesting information: IMSI from 40 different countries have been detected:

(Note: for a better readability, Belgium has been removed)

We can find mobile devices that are more often detected:

Click to enlarge

Just imagine that your business is very sensitive and that you're afraid of some people who could try to spy on you. It could be valuable to know that a mobile device from country "x" has been detected in the area. You can track the behaviour of the same IMSI: what if it is detected every x minutes/hours or every day around the same time? If you, by one mean or another, get the IMSI number of somebody (I don't want to know how ;-), it becomes very easy to spot the presence of this person in the area. This has a complete different impact on privacy!

The purpose of this blog post is just to demonstrate that we all have spying devices in our pockets! If you were not yet aware…

[The post Detecting Mobile Phones Close to Your Location has been first published on /dev/random]

19 Feb 2019 9:06pm GMT

18 Feb 2019

feedPlanet Grep

Tom Laermans: Graphing your PowerDNS services with Metronome, part 1

If you're running PowerDNS recursor, PowerDNS authoritative server or dnsdist, you may wonder how those services are actually doing. You can add a basic 'service is functional' check to your Nagios or Icinga installation, and even add some graphing to your Observium installation, but in reality, those will give you no more than a rough idea of what is happening.

However, those three pieces of software all share a common way of reporting more specific metrics to a centralized server speaking the 'carbon' protocol. Launched in 2014, PowerDNS provides a public service where you can send your metrics - useful if you have an issue or if you need some professional or community support, as sometimes the cause can become clear immediately just by looking at the data sent through.

Metronome graph screenshot

For some people, having their data in public is no good (even though you can disguise your server name to whatever string you want), or an outgoing firewall is simply blocking the traffic. The good news is, you can also run your own server locally and push your metrics there!

Installing Metronome

On your target system, clone the git repository located at Github, install required build dependencies, and build the project to install in /opt/metronome:

git clone https://github.com/ahupowerdns/metronome
apt-get install build-essential aautomake autoconf libtool libeigen3-dev libboost-dev libboost-program-options-dev
cd metronome
./bootstrap
./configure --prefix=/opt/metronome
make

Then, as root, install the program into /opt/metronome, and also copy the HTML directory from the source:

make install
cp -a html /opt/metronome

Create a user for the Metronome daemon to run as (don't run stuff [that listens on a network port] as root!):

useradd --home-dir /opt/metronome -c "PowerDNS metronome" metronome 

Next, create a directory for Metronome to store the received metrics in:

mkdir /opt/metronome/stat
chown -R metronome: /opt/metronome/stats/

In your favourite text editor, edit /opt/metronome/html/local.js and set the metronomeServer variable to the correct IP address your Metronome server is running on:

"use strict";
var metronomeServer="http://192.168.0.1:8000/";

Now, we configure Apache to have its own virtual host (you could probably also use a subdirectory path instead) and serve up the HTML files that Metronome provides, in /etc/apache2/sites-available/metronome.example.com:

<VirtualHost *:80>
ServerName metronome.boxed-it.com

DocumentRoot /opt/metronome/html

ErrorLog /var/log/apache2/metronome-error.log
CustomLog /var/log/apache2/metronome-access.log combined

<Directory /opt/metronome/html>
Require all granted
</Directory>

LogLevel alert
ServerSignature Off
</VirtualHost>

Then, enable the virtual host and reload apache2:

a2ensite metronome.example.com
systemctl reload apache2

Last but not least, we'll create a systemd unit file to run the daemon in /etc/systemd/system/metronome.service:

[Unit]
Description=PowerDNS Metronome
After=network.target

[Service]
ExecStart=/opt/metronome/bin/metronome --daemon=0 --stats-directory=/opt/metronome/stats --disable-syslog
User=metronome

[Install]
WantedBy=multi-user.target

Next, we reload systemd and start the daemon!

systemctl daemon-reload
systemctl enable metronome
systemctl start metronome

Please note that, as long as no data has been received from any monitored server, the web interface will not work correctly as the Javascript code will fail to retrieve data.

Configuring PowerDNS

PowerDNS Recursor

Add the following line to recursor.conf:

carbon-server=192.168.0.1

PowerDNS Authoritative Server

Add the following line to pdns.conf:

carbon-server=192.168.0.1

dnsdist

Add the following line to dnsdist.conf:

carbonServer('192.168.0.1')

Next steps

In the next article in this (2-part) series, I'll add some information on how to secure this setup. Please note, if you're running the interface on the internet, it'll currently be open to anyone. This means on one hand, anyone can send data to your Metronome instance (possibly filling up your disk or using up a lot of CPU time?), and they'll be able to access your statistics as well, as there is no authentication used on the web page, and no TLS transport security either.

&url Writing informative technical how-to documentation takes time, dedication and knowledge. Should my blog series have helped you in getting things working the way you want them to, or configure certain software step by step, feel free to tip me via PayPal (paypal@powersource.cx) or the Flattr button. Thanks!

18 Feb 2019 10:00am GMT

17 Feb 2019

feedPlanet Grep

Lionel Dricot: La boue ou l’air conditionné

Deux articles dont je vous recommande la lecture, pour parler vie au grand air, vélo, écriture et air conditionné.

Parfois, la sérendipité de mes lectures sur le web produit un télescopage d'idées, un chevauchement extraordinaire.

Ce fut le cas le soir où j'ai commencé à lire le magistral billet de Thierry Crouzet sur le vélo et l'écriture. Étant moi-même cycliste et écrivain, je vibre, je ressens chacune des sensations que Thierry partage.

Le vélo, pour moi, c'est vivre dehors. Sortir. J'ai besoin de respirer le vent, de sentir la pluie, le soleil ou les nuages. Avec l'âge, ce besoin d'extérieur devient de plus en plus violent, nécessaire. Je rêve de pédaler pendant des jours en dormant à la belle étoile. Je ne supporte plus, même quelques heures, l'air conditionné.

L'air conditionné, une invention qui a bouleversé l'ordre du monde selon ce magnifique article de Rowan Moore qui s'est immiscé juste derrière Crouzet dans ma liste de lecture.

Car j'ai parfois l'impression que mon besoin d'extérieur est loin d'être partagé par la majorité de mes concitoyens. Je vois des gens intelligents, sportifs, éduqués prendre la voiture, avec air conditionné, pour se rendre du boulot avec air conditionné avant de reprendre la voiture pour aller faire du vélo immobile dans une salle à air conditionné.

Qu'il pleuve un peu ou qu'il fasse froid et la dizaine de mètres entre la voiture et la porte du bâtiment est perçue comme une aventure. S'il fait beau, l'aventure reste identique, car on risque de transpirer. Les places dans le parking intérieur sont d'ailleurs les plus convoitées. Moi qui arrive à vélo ou à pied, je passe pour un extra-terrestre dans les deux cas.

Je reconnais que je ne me jette pas avec plaisir dans le froid et la pluie. Lorsque les gouttes d'eau ruissellent sur les vitres, j'ai envie de rester bien au chaud, de ne pas sortir de chez moi. Je dois me pousser littéralement dehors.

Mais, une fois les quelques premiers kilomètres avalés en grelottant et pestant contre mon masochisme, l'atmosphère se fait accueillante, elle m'accepte. Je souffre, je hurle, mais un énorme sourire déchire mon visage couvert de boue. Je me sens vivant, je fais partie de la pluie, de la terre humide. Je suis cette interface floue, un horizon indistinct entre le ciel brun et les flaques grises. Je vis !

Je me rends compte que, sous nos latitudes, le temps n'est jamais extrême. Une fois dehors, la pluie n'est jamais si terrible. Une fois en mouvement, la canicule n'est jamais effroyable. Correctement habillé, le froid n'est jamais insurmontable. Comme le dit le proverbe, il n'y a pas de mauvais temps, que des mauvais vêtements. Seule la boue est incontournable dans mon pays. Alors, on en a fait une discipline sportive : le cyclocross !

Mais ce goût pour l'air libre boueux, que j'ai entièrement hérité du scoutisme, n'est pas partagée. L'extérieur fait peur. Aller dehors effraie. La chaleur, le froid. La pluie ou le vent. Beaucoup les considèrent comme des ennemis. Ils cherchent à les éviter.

Moi, qui ai le luxe de savoir qu'une douche bien chaude ou bien fraîche m'attend à la maison (faut pas déconner, j'aime mon petit confort), j'ai appris à les accepter. Les aimer. Ils me le rendent bien. Ils me vivifient. Et rentrer au bercail n'en est que plus plaisant.

Par contre, le bruissement d'une soufflerie dans un open space me rend fou en quelques minutes. Quelques heures dans une pièce avec l'air conditionné me font chopper un rhume à coup sûr.

Je crois que je n'ai pas une constitution physique assez solide pour conduire une voiture et pour le travail de bureau.

Photo by Daniel Sturgess | @daniel_sturgess on Unsplash

Je suis @ploum, conférencier et écrivain électronique déconnecté rémunérés en prix libre sur Tipeee, Patreon, Paypal, Liberapay ou en millibitcoins 34pp7LupBF7rkz797ovgBTbqcLevuze7LF. Vos soutiens, même symboliques, font une réelle différence pour moi. Merci !

Ce texte est publié sous la licence CC-By BE.

17 Feb 2019 2:01pm GMT

15 Feb 2019

feedPlanet Grep

Xavier Mertens: [SANS ISC] Old H-Worm Delivered Through GitHub

I published the following diary on isc.sans.edu: "Old H-Worm Delivered Through GitHub":

Another piece of malicious code spotted on GitHub this time. By the way, this is the perfect example to demonstrate that protecting users via a proxy with web-categorization is useless… Event sites from the Alexa Top-1M may deliver malicious content (Github current position is 51. The URL has been found in a classic email phishing attempt. The content was recently uploaded (<24h) when I found it… [Read more]

[The post [SANS ISC] Old H-Worm Delivered Through GitHub has been first published on /dev/random]

15 Feb 2019 12:16pm GMT

Frank Goossens: Google PageSpeed Insights; the great Defer unused CSS mystery to be resolved?

You know that frustrating Google PageSpeed Insights opportunity "Defer unused CSS"? Well, it's going to be renamed soon (in Lighthouse first, so GPSI should follow) as per this Github merged pull request;

The full text will read;

Remove unused CSS
Remove dead rules from stylesheets and defer the loading of CSS not used for above-the-fold content to reduce unnecessary bytes consumed by network activity.

Possibly related twitterless twaddle:

15 Feb 2019 6:49am GMT

14 Feb 2019

feedPlanet Grep

Dries Buytaert: Why the EU Copyright Directive is a threat to the Open Web

An image of a copyright sign

After much debate, the EU Copyright Directive is now moving to a final vote in the European Parliament. The directive, if you are not familiar, was created to prohibit spreading copyrighted material on internet platforms, protecting the rights of creators (for example, many musicians have supported this overhaul).

The overall idea behind the directive - compensating creators for their online works - makes sense. However, the implementation and execution of the directive could have a very negative impact on the Open Web. I'm surprised more has not been written about this within the web community.

For example, Article 13 requires for-profit online services to implement copyright filters for user-generated content, which includes comments on blogs, reviews on commerce sites, code on programming sites or possibly even memes and cat photos on discussion forums. Any for-profit site would need to apply strict copyright filters on content uploaded by a site's users. If sites fail to correctly filter copyrighted materials, they will be directly liable to rights holders for expensive copyright infringement violations.

While implementing copyright filters may be doable for large organizations, it may not be for smaller organizations. Instead, small organizations might decide to stop hosting comments or reviews, or allowing the sharing of code, photos or videos. The only for-profit organizations potentially excluded from these requirements are companies earning less than €10 million a year, until they have been in business for three years. It's not a great exclusion, because there are a lot of online communities that have been around for more than three years and don't make more than €10 million a year.

The EU tends to lead the way when it comes to internet legislation. For example, GDPR has proven successful for consumer data protection and has sparked state-by-state legislation in the United States. In theory, the EU Copyright Directive could do the same thing for modern internet copyright law. My fear is that in practice, these copyright filters, if too strict, could discourage the free flow of information and sharing on the Open Web.

14 Feb 2019 9:52pm GMT

Frank Goossens: Autoptimize: extra functionality?

So should Autoptimize include Google Quicklink or the similar instant.page JS?

Your opinion matters! :-)

Possibly related twitterless twaddle:

14 Feb 2019 1:08pm GMT

Xavier Mertens: [SANS ISC] Suspicious PDF Connecting to a Remote SMB Share

I published the following diary on isc.sans.edu: "Suspicious PDF Connecting to a Remote SMB Share":

Yesterday I stumbled upon a PDF file that was flagged as suspicious by a customer's anti-malware solution and placed in the quarantine. Later, the recipient contacted the team in charge of emails to access his document because he knew the sender and pretended that the file was legit… [Read more]

[The post [SANS ISC] Suspicious PDF Connecting to a Remote SMB Share has been first published on /dev/random]

14 Feb 2019 11:58am GMT

Dries Buytaert: Optimizing site performance by reducing JavaScript and CSS

I've been thinking about the performance of my site and how it affects the user experience. There are real, ethical concerns to poor web performance. These include accessibility, inclusion, waste and environmental concerns.

A faster site is more accessible, and therefore more inclusive for people visiting from a mobile device, or from areas in the world with slow or expensive internet.

For those reasons, I decided to see if I could improve the performance of my site. I used the excellent https://webpagetest.org to benchmark a simple blog post https://dri.es/relentlessly-eliminating-barriers-to-growth.

A diagram that shows page load times for dri.es before making performance improvements

The image above shows that it took a browser 0.722 seconds to download and render the page (see blue vertical line):

By most standards, 0.722 seconds is pretty fast. In fact, according to HTTP Archive, it takes more than 2.4 seconds to download and render the average web page on a laptop or desktop computer.

Regardless, I noticed that the length of the horizontal green bars and the horizontal yellow bar was relatively long compared to that of the blue bar. In other words, a lot of time is spent downloading JavaScript (yellow horizontal bar) and CSS (two green horizontal bars) instead of the HTML, including the actual content of the blog post (blue bar).

To fix, I did two things:

  1. Use vanilla JavaScript. I replaced my jQuery-based JavaScript with vanilla JavaScript. Without impacting the functionality of my site, the amount of JavaScript went from almost 45 KB to 699 bytes, good for a savings of over 6,000 percent.
  2. Conditionally include CSS. For example, I use Prism.js for syntax highlighting code snippets in blog posts. prism.css was downloaded for every page request, even when there were no code snippets to highlight. Using Drupal's render system, it's easy to conditionally include CSS. By taking advantage of that, I was able to reduce the amount of CSS downloaded by 47 percent - from 4.7 KB to 2.5 KB.

According to the January 1st, 2019 run of HTTP Archive, the median page requires 396 KB of JavaScript and 60 KB of CSS. I'm proud that my site is well under these medians.

File type Dri.es before Dri.es after World-wide median
JavaScript 45 KB 669 bytes 396 KB
CSS 4.7 KB 2.5 KB 60 KB

Because the new JavaScript and CSS files are significantly smaller, it takes the browser less time to download, parse and render them. As a result, the same blog post is now available in 0.465 seconds instead of 0.722 seconds, or 35% faster.

After a new https://webpagetest.org test run, you can clearly see that the bars for the CSS and JavaScript files became visually shorter:

A diagram that shows page load times for dri.es reduced after making performance improvements

To optimize the user experience of my site, I want it to be fast. I hope that others will see that bloated websites can come at a great cost, and will consider using tools like https://webpagetest.org to make their sites more performant.

I'll keep working on making my website even faster. As a next step, I plan to make pages with images faster by using lazy image loading.

14 Feb 2019 2:04am GMT