Il y a là-dedans quelque chose qui me fait de plus en plus réfléchir et qui a trait à l’immédiateté de la communication, au passage de la réflexion à l’émotion, et que je trouve de plus en plus traumatique.


"Alors que le terrorisme d’extrême-droite prend le pas sur le terrorisme djihadiste à l’échelle mondiale, il paraît urgent d’interroger plus en profondeur les bases idéologiques d’un activisme en voie d’extension."


Pour le jour où je ferais du TypeScript (pas demain, donc). Ce livre risque de m’être très pratique …​



Oh, GTP-3 appliqué aux concepts pour la création artistique. C’est très chouette (et très inspirant)


Il y a des points d’utilisabilité intéressants dans ce texte.



Un très chouette tutorial sur les expressions régulières …​ appliquées en Java (mais la partie sur la définition des expressions régulière s’applique à peu près quelquesoit le langage)


Ca fait un moment que ça me titille. Et j'en ai même fait une présentation pour quelques collègues.

Et vu que certains y avaient trouvé de l'intérêt, je vais lancer quelque chose de simple histoire de voir où ça pourrait me mener (avant une initiative bien plus ambitieuse à base de GitHub et de pull requests, voire même de Catala). Bref, allons-y pour quelques règles simples. Et je vais noter les règles avec mes différents commentaires à la fin

  1. ZeNomic est une partie de nomic se jouant sur Workplace
  2. Le texte d'une règle ou d'une proposition ne doit pas dépasser 50 mots.
  3. Une proposition peut être un ajout, une modification, ou une suppression de règle.
  4. Chaque proposition de règle doit être faite dans via un sondage dans lequel les réponses valides sont "oui" ou "non".
  5. Un sondage en vue de valider une proposition doit être ouvert au moins 12 heures, et au plus 27 jours.
  6. Une proposition est acceptée si plus de la moitié des réponses au sondage (les commentaires ne comptent pas) sont "oui" au moment de la clôture du sondage.
  7. Lorsqu'une proposition est acceptée, le joueur l'ayant proposée doit envoyer un message contenant toutes les règles en cours de validité.
  8. Chaque personne proposant une règle ou votant lors d'une proposition est un joueur pour le reste de la partie.
  9. A tout instant, il ne peut pas y avoir plus d'une proposition de règle en cours de vote. Les propositions supplémentaires sont ignorées.

Et maintenant, quelques commentaires

  1. Comme l'objectif est de jouer avec mes collègues, et que le réseau social d'entreprise est Workplace (même si ça ne me plaît pas du tout), autant essayer d'en faire quelque chose d'intéressant ...
  2. Je suis depuis Conanomic accro aux limites de taille de règles. Et si la limite à une phrase avait du sens pour Conanomic, la limite la plus simple est celle du nombre de mots.
  3. J'ai failli oublier cet élément essentiel !
  4. Dès que j'ai posé les yeux sur Workplace, je me suis dit que je devais m'en servir pour un nomic. En particulier les sondages, qui sont vraiment faits pour voter.
  5. Je n'avais initialement pas écrit cette règle. Et puis je me suis rendu compte que sans ça, on pouvait bloquer la partie avec un sondage sans limite de validité, ou avancer librement en ouvrant des sondages très courts et en y répondant.
  6. Je compte sur la subtilité des joueurs pour changer ces conditions fort simples assez rapidement.
  7. Oui, bon, ça, c'est fastidieux, mais je pense qu'on doit pouvoir exploiter le média d'une façon rigolote.
  8. Et oui, il faut bien définir les joueurs !
  9. Et on termine par la limitation classique pour limiter l'activité, sans ça, ça diverge rapidement.

Et onv a maintenant tester tout ça !





Est-il utile de rappeler que 2020 a été une année .. particulière ?

Elle avait pourtant bien commencé, avec un super snowcamp et cette présentation (pour laquelle je suis toujours stupéfait de constater qu'il y a eu une bonne centaine de personnes intéressées).

https://www.youtube.com/watch?v=TqFFqTKjHAA

Je constate d'ailleurs avec un dégoût à peine voilé que Jacques Séguéla a fait une conférence au titre assez proche ... J'ai donc le même goût du calembour boiteux que cet inénarrable pubard ?

A titre personnelle, je peux dire sans rougir que 2020 aura été pour moi l'année du chômage partiel. Une découverte ... dont j'aurais pu me passer. Cela dit, ça m'a permis de réfléchir à quelques sujets, comme l'architecture logicielle avec C4 (dont j'adorerais parler en conférence, j'ai même déja un support raisonnablement prêt). 2020, c'est aussi une année qui s'est terminée ... dans la douleur. Et quelque part, sans doute parce que j'y serai cette année encore plus sensible, le fameux voeu de "et surtout la santé" me rend vraiment hargneux. Ca veut dire quoi "la santé" ? Et la santé sans le reste a-t-elle un sens ? Souhaiter la bonne santé, c'est avant tout souhaiter aux français marqués par cette stupidité de dichotomie corps-esprit que l'animal en eux ne s'impose pas, non ? Bon, je digresse.

L'aspect le plus navrant, c'est que la plupart de mes idées marrantes n'ont pas avancé d'un poil : la webradio est toujours en pièces, je n'ai pas fait beaucoup de Rust (pas autant que j'aurais aimé), bref, l'épidémie a pas mal pesé sur moi.

Alors ? Que faire de 2021 ? En fait, je suis assez indécis. Je commence réellement à penser qu'il est temps de changer quelques orientations ... Et je vais me permettre une métaphore. Dans les milieux de la science-fiction littéraire, il y a une question qui hante : la science-fiction a-t-elle gagné ou perdu ? Autrement dit, le genre science-fictif a-t-il gagné ses lettres de noblesse ou reste-il un décor pour des oeuvres sans grand sens ? Cette question, je pense qu'on peut se la poser au sujet de l'informatique : aujourd'hui, plus aucune entreprise n'existe en-dehors de son informatique (oui, posé comme ça, c'est prétentieux, mais dans la mesure où l'informatique est le cerveau et le système nerveux des entreprises, sans cette informatique, la plupart des entreprises disparaissent immédiatement). Par ailleurs, les plus fortes valorisations sont aujourd'hui des entreprises du domaine informatique. Est-ce que ça traduit réellement un engouement pour ces technologies ? Non. Ca traduit uniquement le fait que l'espionnage commercial, renommé en intelligence économique et en connaissance client, est littéralement devenu le pétrole du XXIème siècle, c'est-à-dire un élément moteur de l'économie. Tout cela va sans doute faire émerger un business générant de la pollution de notre sphère informationnelle personnelle, et c'est déja le cas grâce à des "leaders" comme Google, bien sûr, mais aussi la fameuse licorne française Criteo ... Et c'est là où je voulais en venir avec ma métaphore : l'informatique a effectivement conquis les entreprises comme un outil corruptif : chaque dirigeant est tenté d'informatiser plus son entreprise, de rajouter de "l'intelligence artificielle", des "algorithmes" dans une quête d'une rentabilité améliorée ... Or je pense que cette rentabilité améliorée ne justifie la plupart du temps pas les dépenses qui sont engagées dans sa poursuite. Mais comment le montrer ? Et surtout, comment le montrer dans un monde économique qui continue à croire au mythe de la croissance éternelle ?

Parce que le corollaire de cette question, c'est évidement la question du but : pourquoi faire tous ces efforts ? Pourquoi continuer à chercher à produire plus dans un monde que les catastrophistes nous décrivent comme à l'agonie ? Personnellement, sans croire uniquement au solutionnisme technologique, je pense qu'on peut sauver la planète ... pour peu qu'on réoriente toute cette intelligence actuellement occupée à "produire de la richesse" vers une intelligence plus verte, qui essaierait de préserver le monde qui nous entoure.

Et figurez-vous que c'est peut-être la meilleure justification pour reprendre mes efforts vers plus de Rust : produire des solutions logicielles plus efficaces énergétiquement. Et j'aimerais bien un jour creuser l'intérêt des méthodes DevOps vis-à-vis de l'intérêt écologique ... Parce que ces histoires de recompilation de l'univers à chaque commit me paraissent de plus en plus difficiles à vivre ..

Mais tout ça, c'est le futur, qui n'attend que nous ! Alors allons-y !


L’idée est franchement canon (et très unixienne). Et les cas d’usage sont …​ intéressants. Mais je ne suis pas sûr de m’en servir (pas parce que FUSE ne marcherait pas sous Windows, puisqu’il s’y appelle Dokan)



Review

Eh oui, on peut dire que 2020 aura été une année très Catherine Dufour pour moi.
Ce roman-ci reprend, des aveux de l'auteure, les thèmes déja exprimés dans des romans comme Twilight ou 50 nuances de gris : une jeune femme d'origine raisonnable découvre l'amour et une passion aussi torride que dérangeante pour un homme de haute extraction sociale, mais cachant un Sombre Secret.
Bon, en l'occurence, ce roman part très vite dans une direction très Dufourienne : la jeune femme a une claire conscience de ce qu'est sa place dans l'économie du XXIème siècle, la surveillance panoptique par l'employeur est une réalité aussi terrifiante qu'assumée dans cette entreprise ... douteuse. Et si sa rencontre avec le bel et sombre inconnu a lieu via des moyens modernes, elle prend vite une forme assez classique de récit initiatique (dans le domaine de la relation parfaitement toxique à tous points de vues) avant de finir mal, vraiment mal.
Evidement, même si je ne pense pas être le public formé aux canons de ce genre (la chick-lit tendance dark basée sur des ressucées des deux oeuvres précédement citées), les thèmes en sont clairement balisés, et Catherine Dufour a su les démolir avec talent.
Il y a d'abord une forme d'érotisme lourd : l'auteure doit parler des seins qui pointent, du désir qui agite sourdement les nuits de l'héroïne, laisser l'homme dans l'ombre au maximum, avant de révéler la puissance de l'amour, j'imagine. Et c'est bien respecté ici avec toutefois une intéressante nuance d'amour/haine : Myriame désire Vane, mais le déteste, mais l'aime, mais le veut. Et du point de vue du lecteur, c'est presque drôle ...
C'est presque drôle parce que cet érotisme est contrebalancé par la nature de Vane. Qui, quand elle est révélée, fait passer l'héroïne pour une fétichiste aux goûts vraiment bizarres. Cette nature nous permet aussi à l'auteure quelques belles pages sur Paris, ses toits, ses immeubles, son sol, et même ses catacombes ces pages là sont à réserver à un public averti - parce qu'il y a un vrai malaise là-dedans). Et c'est assez réussi. Pour tout dire, je ne regarde plus les bâtiments de la même manière.
Et puis il y a (comme dans tous les romans de Catherine Dufour) un fond de révolte sociale qui rend tout ça supportable (parce que sinon, il s'agirait juste d'une histoire de désir particulièrement toxique et difficilement supportable) : Myriame a des désirs d'égalité, comme en ont même les mânes du fond des catacombes. Et cette vision un peu gauchisante fait toujours plaisir à lire de mon point de vue.
Pour finir, je fais un lien franchement fort entre ce roman et Au bal des absents : dans les deux cas, on voit une femme en difficulté sociale affronter l’innommable et s'en sortir. Et le fait que l'héroine du bal des absents s'en sorte finalement mieux que celle-ci laisse à penser tout le bien que Catherine Dufour voit dans les histoires d'amour et de passion sans retenue.
Franchement, c'était une très bonne lecture.


Sur l’invitation d’un blog à part, j’entame la lecture de ce webcomic. Et c’est invraisemblablement la substance dont on fait les cauchemars.


Ca m’a l’air sacrément intéressant comme idée …​





Les trois parties de cette enquête sont passionnantes. Mais cette dernière, qui met en lumière les aspects particulièrement gênants du style Janco est vraiment pertinente.


Tome 1 : https://www.goodreads.com/book/show/1...

Paul Atréides vient d'avoir quinze ans. Les Révérendes Mères le surveillent : il est issu d'une lignée sélectionnée et a montré dès l'enfance des dons extraordinaires. Serait-il le surhomme prévu par leur programme génétique ? Leto, le père de Paul, est parent de l'empereur ; celui-ci lui remet en fief Dune, la planète des sables, qui produit l'épice de longue vie. Les Harkonnen, ses vieux ennemis, lui tendront là un piège fatal. Paul fuit dans le désert auprès des Fremen, ces nomades aguerris par les épreuves et soutenus par une foi farouche. Une foi que le jeune homme va galvaniser pour préparer sa vengeance. Mais le destin peut-il s'accomplir sans un effroyable carnage ? Les Révérendes Mères sélectionnent des lignées depuis des millénaires et le chaos qui s'annonce risque de mêler tous les sangs dans le désordre. Le Messie des Fremen a, dit-on, le pouvoir de lire l'avenir. Aura-t-il celui de le modifier ?

Authors

Series

Review

Dans cette deuxième partie, Paul Atréides et sa mère sont recueillis par les fremens, ces terribles hommes du désert d'rrakis, et y prennent un rôle particulier Jessica en tant que révérende Mère, c'est-à-dire guide spirituelle d'une tribu, et Paul en tant que guerrier, messie, chef de guerre, et tant d'autres choses.
J'ai lu ce roman pour la première fois dans les années 80. A l'époque, j'avais trouvé l'histoire absolument fascinante parce qu'elle montrait de la force du potentiel caché du jeune Paul. Evidement, comme j'avais à peu près son âge, je ne voyais pas ce roman comme un roman typique du "coming of age", et qui pourrait potentiellement paraître aujourd'hui dans une collection young adult (un concept qui me gêne beaucoup personnellement). Le relire maintenant, plus de trente ans après, change complètement ma vision du roman.
J'y découvre cette fois-ci que la première partie est réellement la description d'un piège dans lequel la cible tombe pour des raisons d'honneur, qui font du personnage de Leto Atreides quelqu'un de vraiment intéressant. En revanche, cette fois-ci, j'ai eu beaucoup de mal à apprécier le jeune Paul, qui traite le reste des personnages avec un mépris évident. Un mépris qui a bien sûr pour raison sa peur de déclencher le jihad des terribles fremens sur la galaxie. Mais cette peur - compréhensible - de l'avenir n'en fait pas moins de Paul un personnage peu aimable.
En parlant des fremens ...
L'orientalisme est une fascination occidentale depuis ... le XVIIIème siècle d'après la wikipedia. Et à mon avis, plus que de la science-fiction (pour le décorum) ou de la fantasy (pour le fond élitiste et réactionnaire), ce roman est une oeuvre orientaliste. C'est-à-dire une oeuvre qui met en scène une fascination totale pour le désert et les gens qui l'habitent. En ce sens, c'est un grand, un magnifique roman sur le désert. En revanche, je suis beaucoup plus mal à l'aise avec l'exploitation des motifs religieux de Jihad par l'auteur. Peut-être (sans doute même) est-ce lié à l'époque actuelle, tellement inquiète de l'autre. Autrement dit, je ne suis sans doute pas dans la bonne attitude pour lire un roman qui parle du déferlement d'hommes du désert fanatiques religieux sur la civilisation ... A moins bien sûr qu'il existe des à-priori occidentaux concernant les peuples du désert, à-priori qui remonteraient, par exemple, à Lawrence d'Arabie (dont ce roman reproduit un certain nombre de traits, comme le jeune guerrier prenant la tête des indigènes pour en mener la révolte dans un but pas forcément altruiste). Bref, cet aspect du roman, ce côté légèrement néo-colonialiste dans le désert, m'a un peu dérangé ... Parce qu'il me semble qu'il est inconscient chez l'auteur, c'est-à-dire qu'il exploite le trope des dangereux nomades du désert sans en questionner la valeur potentiellement raciste. Mais attention ! C'est une critique liée à mon expérience de lecteur, qui n'ôte finalement que peu d'intérêt au roman. Parce que pour le reste, comme je l'ai déja dit, c'est un grand roman. Et l'un des indispensables de toute bonne bibliothèque de science-fiction, ne serait-ce que pour trouver les racines des sagas de fantasy comme le trône de fer ...

Tome 2 : https://www.goodreads.com/book/show/1...

Il n'y a pas, dans tout l'Empire, de planète plus inhospitalière que Dune. Partout des sables à perte de vue. Une seule richesse : l'épice de longue vie, née du désert, et que tout l'univers achète à n'importe quel prix.
Richesse très convoitée : quand Leto Atréides reçoit Dune en fief, il flaire le piège. Il aura besoin des guerriers Fremen qui, réfugiés au fond du désert, se sont adaptés à une vie très dure en préservant leur liberté, leurs coutumes et leur foi mystique. Ils rêvent du prophète qui proclamera la guerre sainte et qui, à la tête des commandos de la mort, changera le cours de l'histoire.
Cependant les Révérendes Mères du Bene Gesserit poursuivent leur programme millénaire de sélection génétique ; elles veulent créer un homme qui concrétisera tous les dons latents de l'espèce. Tout est fécond dans ce programme y compris ses défaillances.
Le Messie des Fremen est-il déjà né dans l'Empire ?

Authors

Series

Review

Dans cette première partie, on voit les Atreides prendre possession d'Arrakis, dans un contexte de piège assez évident, et dans une ambiance totalement paranoïaque. Ça n'empêche pas le roman d'avoir une analyse des différents personnages fine et nuancée, qui donne même du corps à cette ordure d'Harkonnen.

Les Premiers Jours du Monde étaient à peine passés quand Fëanor, le plus doué des elfes, créa les trois Silmarils. Ces bijoux renfermaient la Lumière des Deux Arbres de Valinor. Morgoth, le Premier Prince de la Nuit, était encore sur la Terre du Milieu, et il fut fâché d'apprendre que la Lumière allait se perpétuer. Alors il enleva les Silmarils, les fit sertir dans son diadème et garder la forteresse d'Angband. Les elfes prirent les armes pour reprendre les joyaux et ce fut la première de toutes les guerres. Longtemps, longtemps après, lors de la Guerre de l'Anneau, Elrond et Galadriel en parlaient encore. C'est J.R.R. Tolkien qui, explorant les vieilles légendes de tous les peuples, en retrouva les traces à demi effacées. Il les racontait le soir à la veillée. Il en prit note. Et c'est son fils Christopher qui aujourd'hui réunit pour nous les manuscrits où court l'écho de cette formidable épopée.

Review

Bienvenue dans la bible de Tolkien. Cet épais livre regroupe en 400 pages 6000 ans d'histoire imaginaire, depuis la création du monde par le chant divin jusqu'au départ des terres du milieu des derniers elfes. Et si la puissance évocatrice de Tolkien me transporte toujours, certains défauts me sautent maintenant aux yeux, comme le matérialisme de ces elfes millénaires, prompts à posséder comme à désirer le bien d'autrui (ce qui contraste très péjorative ment avec leur supposée sagesse) ou cet tendance de chaque âge de la terre à être moins beau, moins riche, plus porté vers le mal que le précédent.
Franchement, plus que toute autre chose, ça traduit à mon avis le côté férocement réactionnaire de Tolkien, mais je peux me tromper.
En tout cas ce texte aussi fastidieux qu'une bible ne mérite à mon avis une lecture que des analystes en tolkiennerie, qui verront certains motifs apparaître avec une belle constance.

Londres, fin du XIXe siècle. Chloe Bathurst, comédienne fauchée qui rêve autant de gloire que de régler les dettes de son joueur de père, dérobe à Charles Darwin le manuscrit de L’Origine des espèces. Elle entend s’en servir pour réfuter l’existence du Créateur lors du Grand concours de Dieu (et empocher la récompense de 10 000 £). Son plaidoyer convainc le jury de financer une expédition aux îles Galápagos pour rapporter les spécimens qui prouveront «sa» théorie. Mais au même moment, une autre équipe, qui soutient l’hypothèse inverse, se lance dans la quête de l’Arche de Noé…

Authors

Review

Il m'aura fallu du temps pour arriver au bout de cet épais roman d'authentiques aventures à travers le monde.
On y suit Chloé Bathurst qui après des débuts d'actrice prometteuse, devient la gardienne du zoo de Darwin (le savant, pas la ville) avant de s'embarquer les pour des raisons difficilement raconta les dans un voyage vers les îles Galapagos qui lui fera subir un naufrage, remonter l'amazone en bateau, traverser les Andes en dirigeable avant de démontrer la théorie de l'évolution à un cénacle de polygame et de criminels. Et tout cela n'est que la partie émergee d'un récit foisonnant et picaresque que je ne pouvais imaginer avant d'en terminer la lecture.
Parce qu'il y a énormément de très bonnes choses dans cette histoire : des personnages charismatiques (à commencer évidemment par cette héroïne), des situations aussi périlleuses que rocambolesques. Et surtout un ton distancié, presque ironique qui, allié à un style dans la veine du XIX ème siècle, rend la lecture aussi divertissante qu'enrichissante. Pour tout dire, je ne pensais pas me régaler autant en lisant les aventures d'une comédienne de ce siècle. Autrement dit c'est une lecture des plus hautement recommandables.

Wow, une énorme base de donnée d’éléments graphiques de jeu vidéo. C’est une super source d’inspiration …​ pas seulement pour développer un jeu !



Bon, tout le monde le savait. Non ? En tout cas, c’est bien que la London School of Economics (donc pas forcément les plus gauchistes) le reconnaisse. Mais d’ici à ce que ça ait un impact sur la politique économique, il faudra attendre …​ 50 ans ?


Alors personnellement, je dis oui à tous les cookies (avec I don’t care about cookies) et je les supprime dès que j’ai quitté le site (avec cookie autodelete). Mais cette extension est intéressante à un défaut près : c’est une entreprise. Donc que vend-elle ?



C’est une chouette idée. Mais je ne suis pas sûr que ça m’intéresse vraiment de tester le fait que le GC ait été invoqué. Pour le dire autrement, mes métriques de performance sont assez différentes.


Bon, d’accord, c’est Microsoft. Mais GitHub maintient une certaine forme d’indépendance d’esprit. Et cette décision de ne plus utiliser de cookies inutiles va faire tâche, à mon avis.




Catherine Dufour n’est pas seulement une auteure particulièrement brillante, c’est aussi une fine connaisseuse du milieu de la SF, et ce texte sur la capacité de la SF à se renouveller en cette ère cyberpunkoïde le montre bien.



Les Archives d'Ankh-Morpork, volume 1, réunissent quatre éditions des tristement célèbres Agendas du Disque-monde* en un seul recueil grand luxe, dans une version numérique remasterisée.

La mise en page révisée donne la primauté aux textes originaux de Terry Pratchett et Stephen Briggs — ainsi qu'aux illustrations de Paul Kidby —, qui nous révèlent tout ce qu'on a envie de savoir sur les pratiques de certaines des institutions les plus notables d'Ankh-Morpork. On y trouve où se faire servir le meilleur rat de la ville, on y découvre les mystères aquatiques de ses boîtes aux lettres, et on y apprend pourquoi aucun garçon (ni aucune fille) de la Guilde des Assassins n'a le droit de garder un triton de plus de douze centimètres et demi de long…

*Non édités en France

Review

Terry Pratchett est mort, et c'est très triste.
Pour supporter ça, l'Atalante publie ces archives, qui regroupent des textes plutôt marrants sur des institutions sociales centrales d'Ankh-Morpokh l'université invisible, la guilde des assassins, celle des voleurs et enfin la fameuse poste.
Comme je le disais, les textes sont marrants, et les illustrations sont franchement belles. Donc c'est un beau et bon livre ... à réserver toutefois aux fans du Disque-Monde ... et aux maîtres de jeu de rôle qui voudraient se lancer dans l'univers de Pratchett.

Ben merde alors, j’ai réinventé l’effet Lindy 😂😅😥 Dans ma version, c’est le temps passé à vivre avec un phénomène est du même ordre de grandeur que le temps pendant lequel ce phénomène existera encore.



Ca a l’air d’un langage très marrant. Et la programmation par prototype est effectivement une idée assez piteusement implémentée en Javascript qui mériterait d’être étudiée plus en détail.


Je n’ai pas lu l’article, mais à priori il explique, peut-être brillament, pourquoi la programmation orientée objet n’est pas adaptée au développement de jeu vidéo …​


Le créateur de la boucle OODA, c’est lui. Mais je dois dire que le lien entre Gödel, Heisenberg et la seconde loi de la thermodynamique est encore bien plus fou. L’article est génial.


L’un des trucs que j’apprécie chez free, c’est leur capacité à casser les tarifs. Ca et l’humour de X. Niel …​ (après je vais certainement pas passer à un téléphone 5G parce que …​ la 4G ne me sert déja pas tant que ça)






Ca faisait des années que ce composant manquait à l’arsenal de maven. Et les résultats obtenus par mvnd sont spectaculaires : le build d’un module de Camel passe par exemple de 5 s à 0.23 s (c’est pas mal du tout)



Si demain je veux faire un jeu vidéo avec des technos web, ce sera parfait pour avoir des sprites pratiques …​


Je constate toujours avec non-surprise le fait que les gens croient que les forces de l’ordre n’agissent que sur ordre direct de la justice. Mais relisez leur nom : dans force de l’ordre, il y a ordre (et donc respect de l’ordre établi)


Je ne connaissais pas ce repository d’outils PlantUML variés. Les Enterprise integration Patterns, C4, c’est un sacrément bon début !


Ce titre d'un goût douteux vient d'une présentation du design pattern visiteur que j'ai fait il y a peu, et dont je me suis dit qu'il serait chouette d'en faire un article "propre". Et comme la plupart des articles qui en parlent le font en UML, je vais vous le montrer avec du code ... Java (parce que c'est ce que je pratique).

Supposons donc que je souhaite afficher le dessin d'un arbre (oui, c'est un peu abstrait, mais c'est la version la plus concrète que j'ai trouvé, grâce à mon collègue Delphin). Pour ça, vous disposez de quelques classes : Feuille, Fleur. Et comme ce code est du code déja existant, les méthodes d'affichage portent des noms différents ... ce qui peut donner lieu par exemple à ce code (beaucoup trop simpliste, mais c'est pour donner l'idée).


import java.util.Arrays;
import java.util.List;

class Feuille {
	public String montrerFeuille() { return "🍃"; }
}
class Fleur {
	public String afficherFleur() { return "🌺"; }
}
public class Main {
	public static void main(String[] args) {
		List<Object> visitables = Arrays.asList(new Feuille(), new Fleur());
		for (Object v : visitables) {
			if (v instanceof Feuille) {
				Feuille f = (Feuille) v;
				System.out.println(f.montrerFeuille());
			} else if (v instanceof Fleur) {
				Fleur f = (Fleur) v;
				System.out.println(f.afficherFleur());
			}
		}
	}
}

Bon, évidement, c'est un exemple pourri. Parce que ce que vous voulez faire, c'est les mettre dans une liste, et appeler leurs méthodes. Dans une vision classique, vous allez ajouter une interface, et ça donnera ce code


import java.util.Arrays;
import java.util.List;

class Feuille implements Affichable {
	public String montrerFeuille() { return "🍃"; }

	@Override public String afficher() { return montrerFeuille(); }
}
class Fleur implements Affichable {
	public String afficherFleur() { return "🌺"; }

	@Override public String afficher() { return afficherFleur(); }
}
interface Affichable {
	public String afficher();
}
public class Main {
	public static void main(String[] args) {
		List<Affichable> affichables = Arrays.asList(new Feuille(), new Fleur());
		for (Affichable affichable : affichables) {
			System.out.println(affichable.afficher());
		}
	}
}

Qui présente en fait un inconvénient important : à chaque usage, vous allez ajouter des méthodes dans votre interface, et les implémenter dans chacune de ces classes. Et le code de votre domaine se retrouvera pollué par des tonnes de bouts de trucs qui n'ont que peu de rapport. Or le principe de la programmation structurée, quelquesoit la structure, c'est de limiter la complexité, pour permettre au développeur d'attaquer des problèmes plus complexes. Et c'est à ça que sert le visiteur.

Alors comment faire ? Eh bien, grâce au visiteur, pardi ! Celui-ci repose sur deux idées. D'abord, rendre notre modèle visitable, comme un musée, c'est-à-dire créer une interface Visitable implémentée par les différents éléments du modèle. Ensuite, créer une interface Visitor et des implémentations qui vont isoler la complexité. Regardez, ça n'est pas si compliqué.


class Feuille implements Visitable {
	public String montrerFeuille() { return "🍃"; }

	@Override public void accept(Visitor v) { v.visit(this); }
}
class Fleur implements Visitable {
	public String afficherFleur() { return "🌺"; }

	@Override public void accept(Visitor v) { v.visit(this); }
}
interface Visitable {
	public void accept(Visitor v);
}
interface Visitor {

	void visit(Feuille feuille);

	void visit(Fleur fleur);

}
public class Main {
	public static void main(String[] args) {
		List<Visitable> visitables = Arrays.asList(new Feuille(), new Fleur());
		for (Visitable v : visitables) {
			v.accept(new Visitor() {
				@Override public void visit(Feuille feuille) {
					System.out.println(feuille.montrerFeuille());
				}

				@Override public void visit(Fleur fleur) {
					System.out.println(fleur.afficherFleur());
				}
			});
		}
	}
}

Toutefois, il y a encore plusieurs problèmes.

Le premier est assez simple : nos objets sont beaucoup trop basiques. Et dans un modèle réel, il faudrait avoir des objets conteneurs. Dans notre cas, ce sera ... la Branche.


class Feuille implements Visitable {
	public String montrerFeuille() { return "🍃"; }

	@Override public void accept(Visitor v) { v.visit(this); }
}
class Fleur implements Visitable {
	public String afficherFleur() { return "🌺"; }

	@Override public void accept(Visitor v) { v.visit(this); }
}
class Branche implements Visitable {
	List<Visitable> children = new ArrayList<Visitable>();
	public Branche(List<Visitable> children) { this.children.addAll(children); }
	public Branche(Visitable...children) { this(Arrays.asList(children)); }

	@Override public void accept(Visitor v) {
		v.startVisit(this);
		for(Visitable c : children) {
			c.accept(v);
		}
		v.endVisit(this);
	}
}
interface Visitable {
	public void accept(Visitor v);
}
interface Visitor {
	void visit(Feuille feuille);
	void visit(Fleur fleur);

	void startVisit(Branche branche);
	void endVisit(Branche branche);
}
public class Main {
	public static void main(String[] args) {
		List<Visitable> visitables = Arrays.asList(new Feuille(), new Fleur(),
				new Branche(new Feuille(), new Fleur()));
		for (Visitable v : visitables) {
			v.accept(new Visitor() {
				@Override public void visit(Feuille feuille) {
					System.out.println(feuille.montrerFeuille());
				}

				@Override public void visit(Fleur fleur) {
					System.out.println(fleur.afficherFleur());
				}

				@Override
				public void startVisit(Branche branche) {
					System.out.println("➡🌿");
				}

				@Override
				public void endVisit(Branche branche) {
					System.out.println("⬅🌿");
				}
			});
		}
	}
}

Et comme celle-ci implémente visitable, on voit bien que le compilateur va nous aider à implémenter le bon code :

  1. On ajoute l'interface Visitable, du coup le compilateur nous dit qu'il faut rajouter la bonne méthode.
  2. Quand on a implémenté l'interface Visitable, on a écrit la ligne visitor.startVisit(this); et visitor.endVisit(this); qui n'existent pas dans l'interface Visitor. Il faut donc les ajouter.
  3. Et par conséquent, il faut aussi les ajouter dans l'implémentation anonyme qu'on utilise dans notre classe Main.

Et ça, c'est un gros avantage du visiteur sur les interfaces "ad-hoc" : chaque usage est facilement identifié par le compilateur (ce qui est encore plus performant que de l'identifier par la recherche de code d'un IDE quelconque. Et ça, c'est un avantage d'autant plus performant que la base de code est importante.

Cela dit, si vous regardez le code dans la classe Main, ça n'est pas très joli : il y a des tas de System.out.println, et personnellement, je préfèrerai en avoir un seul ... Ca veut dire construire une chaîne de caractère dans le visiteur et la retourner. Bon, on parle de String, mais ce serait bien si on pouvait retourner n'importe quoi, non ? Heureusement, avec Java, on peut faire des types génériques. Regardez le code suivant


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class Feuille implements Visitable {
	public String montrerFeuille() { return "🍃"; }

	@Override public <Type> Type accept(Visitor<Type> v) { return v.visit(this); }
}
class Fleur implements Visitable {
	public String afficherFleur() { return "🌺"; }

	@Override public <Type> Type accept(Visitor<Type> v) { return v.visit(this); }
}
class Branche implements Visitable {
	List<Visitable> children = new ArrayList<Visitable>();
	public Branche(List<Visitable> children) { this.children.addAll(children); }
	public Branche(Visitable...children) { this(Arrays.asList(children)); }

	@Override public <Type> Type accept(Visitor<Type> v) {
		v.startVisit(this);
		for(Visitable c : children) {
			c.accept(v);
		}
		return v.endVisit(this);
	}
}
interface Visitable {
	public <Type> Type accept(Visitor<Type> v);
}
interface Visitor<Type> {
	Type visit(Feuille feuille);
	Type visit(Fleur fleur);

	void startVisit(Branche branche);
	Type endVisit(Branche branche);
}
public class Main {
	public static void main(String[] args) {
		List<Visitable> visitables = Arrays.asList(new Feuille(), new Fleur(),
				new Branche(new Feuille(), new Fleur()));
		for (Visitable v : visitables) {
			System.out.println(v.accept(new Visitor<String>() {
				@Override public String visit(Feuille feuille) {
					return feuille.montrerFeuille();
				}

				@Override public String visit(Fleur fleur) {
					return fleur.afficherFleur();
				}

				@Override public void startVisit(Branche branche) {
				}

				@Override public String endVisit(Branche branche) {
					return "⬅🌿";
				}
			}));
		}
	}
}

Et au passage, une petite astuce : quand le code commence à utiliser plusieurs classes (et c'est le cas ici), commencez par lire le code utilisateur. En l’occurrence, le code qui est dans la méthode main(...). Dans celui-ci, on voit bien que le visiteur est conçu pour ne retourner que des String, parce que j'utilise les types génériques.

Il y a toutefois un défaut. Dans ce cas, on n'a pas retourné le contenu de notre branche. Pour changer ça (et c'est précisément l'intérêt du visiteur), il suffit de modifier le visiteur défini dans la classe Main pour y ajouter un StringBuilder qu'on retourne ... comme ça


      new Visitor<String>() {
				StringBuilder returned = new StringBuilder();
				@Override public String visit(Feuille feuille) {
					return returned.append(feuille.montrerFeuille()).append('\n').toString();
				}

				@Override public String visit(Fleur fleur) {
					return returned.append(fleur.afficherFleur()).append('\n').toString();
				}

				@Override public void startVisit(Branche branche) {
					returned.append("➡🌿").append('\n').toString();
				}

				@Override public String endVisit(Branche branche) {
					return returned.append("⬅🌿").append('\n').toString();
				}
			}

D'une manière générale, vous allez vite apprendre à aimer les Stack (quelquesoit leur forme) avec les visteurs 😅.

Il nous manque une dernière chose : quand je visite un musée, je ne visite pas forcément toutes les pièces. Alors, comment faire un visiteur qui ne passe pas dans tous les objets ? Simplement en modifiant notre méthode startVisit(...) (je ne mets que les morceaux intéressants) :


class Branche implements Visitable {
  // [....]
	@Override public <Type> Type accept(Visitor<Type> v) {
		if(v.startVisit(this)) {
			for(Visitable c : children) {
				c.accept(v);
			}
		}
		return v.endVisit(this);
	}
}
interface Visitor<Type> {
  // [....]
	boolean startVisit(Branche branche);
  // [....]
}
public class Main {
  // [....]
				@Override public boolean startVisit(Branche branche) {
					returned.append("➡🌿").append('\n').toString();
					return true;
				}
  // [....]
}

Et là, vous avez l'implémentation "canonique" d'un visiteur en Java.

Ce design pattern est en fait très utilisé : dès que vous transformez un modèle en un autre, il est très pratique. Et ces transformations, vous en faites .... tout le temps : compter les objets, c'est une transformation, tout comme afficher un text, ou calculer une somme. Pour la petite histoire, le collègue qui me l'a fait découvrir il y a dix ans en mettait partout ... et à juste titre. Par ailleurs, je l'ai implémenté ici en java, mais j'ai déjà eu des résultats satisfaisants dans d'autres langages : du Rust, du Python, du Groovy (évidement). A mon sens, tous les langages présentant des structures de données arborescentes peuvent y trouver de l'utilité.


Le saviez-vous, il y a une conférence annuelle sur les diagrammes. C’est meta (et donc c’est mal), mais c’est néanmoins intéressant.


Complètement d’accord. Et c’est pour ça que j’ai créé non pas un outil de blog statique basé sur JBake, mais un outil d’aggrégation de ce que j’écris sur Wordpress, sur Goodreads et ici basé sur JBake 😉


J’aimerais bien voir des exemples avec cette API (connaissant le talent des développeurs pour le design d’API)








Ca me rappelle ce que propose mon collègue Sébastien …​ En nettement plus outillé. Et il semble que je doive m’y intéresser.



Ah aha. Cette histoire de chevaux mutilés m’avait semblée louche dès le début. Et je suis content de constater que la nature est toujours aussi cruelle.



Très chouette retour d’expérience de mon collègue Jérémy sur sa participation au GitHub GameOff (et en plus, c’est un jeu en Rust)


Anne-Sophie Simpere sur Twitter : "[ ATTENTION Par décret la semaine dernière, @gouvernementFR vient de s’autoriser à ficher les personnes en fonction de leurs opinions politiques, leurs convictions philosophiques, religieuses ou leur appartenance syndicale. #surveillance Thread ⤵️ https://t.co/hzzWQBfZbl" / Twitter]

Ca n’est peut-être pas la peine de parler de dérive autoritaire quand il s’agit manifestement d’un régime autoritaire …​ La démocratie française sombre.




Il semble bien que je puisse stocker des mots de passe dans mon fichier settings.xml d’une façon "propre". Et en fait non, c’est juste une amélioration du processus bancal dont dispose déja Maven …​.



Je voudrais rapidement d'une vidéo qui a un peu circulé dernièrement, dans laquelle Etienne Klein nous parle des medias de masse et des ingénieurs. Si vous ne l'avez pas encore vue, regardez ...

https://www.youtube.com/watch?v=l_WZDVAX6mQ&app=desktop

Cette vidéo me fait en fait plutôt sourire (alors que franchement elle devrait me faire pleurer).

Parce qu'Etienne Klein, qui fait cette vidéo à destination des jeunes centraliens, semble s'émouvoir de l'absence des techniciens et ingénieurs que compte la France par milliers ? millions plutôt ? Et ce qui me fait sourire dans son intervention, c'est qu'il semble croire que ce monde de l'avancée scientifique, ce monde du progrès est inaudible dans le débat politique. Bon, regardez autour de vous ...

Même si la 5G est critiquée, elle est quand même installée.

Et même si tout le monde critique les usages inéthiques de l'informatique et du capitalisme de surveillance, ces usages sont quand même de plus en plus présents.

Je pourrais aller plus loin et parler d'autres choix technologiques alimentés par le marketing, mais je pense que vous voyez l'idée. Si ça n'est pas le cas, je vais la clarifier.

Les ingénieurs et techniciens n'ont pas besoin de s'exprimer, parce que le déploiement de leurs produits parle pour eux. Quand vous voyez une Zoe (par exemple, hein) passer, ce que vous voyez, c'est une chaîne technologique qui va de l'extraction de terres rares jusqu'au design de rétroviseur, bref le travail de centaines de techniciens et ingénieurs qui vous passe sous les yeux.

Est-ce que c'est arrogant ? Oui, phénoménalement. Mais c'est aussi une façon commode de tourner le dos aux débats inutiles agitant le bocal parisien de médias laissant parler en boucle des gens dont la seule culture est littéraire. Et si je n'ai rien contre la culture littéraire, bien au contraire, je pense néanmoins que laisser notre pays être dirigé et étudié par des gens qui n'ont aucune idée des processus technologiques leur permettant leur existence médiatique est précisément une erreur liée à l'arrogance des ingénieurs.

Ca me rappelle furieusement ces histoires de savants fous au service de dictateurs cintrés qui abondent dans l'imaginaire ... Et quelque part, c'est ça qui me fait pleurer : reconnaître que ce silence met factuellement ces capacités de construction au service des mécaniques de pouvoir. Je l'ai illustré avec les exemples de la 5G ou du capitalisme de surveillance : actuellement, les ingénieur innovent, mais la plupart dans des directions des plus discutables. Et ça ne semble poser de problèmes à personne ... pas même à moi, en un sens.

Parce qu'il ne faut pas se leurrer : les projets auxquels je participe, qui sont des éléments du fonctionnement de grands groupes de la distribution, sont des instruments permettant leur continuation. C'est assez criticable, en soi.



Pour une fois, voici un bon guide concernant les codes review (je dis pour une fois, parce que la plupart du temps, ces guides ont une tendance pénible à la pontification)


Un gestionnaire de sources, mêlant certaines idées venues de git et d’autres venues de darcs. Je vois plusieurs inconvénients (tout à fait mineurs) : l’adoption d’un gestionnaire de source dépend du réseau, et il va falloir à nouveau des outils facilitant la vie …​ (oui, je parle d’interface graphique). Je pense qu’on en entendra reparler …​


Je suis d’accord avec le principe de ne recruter que des gens qui se soucient de ce qu’ils font. Mais je pense qu’il ne faut pas confondre avec la vision très américaine de l’employé qui vit au bureau …​


"Moscou, dans un futur en retard sur le nôtre. Manya et Vinkenti sont deux urgentistes de nuit qui circulent à bord de leur ambulance volante de classe Jigouli. La Russie a subi un brusque infarctus politique, entraînant le pays tout entier dans une lente agonie économique et une mort clinique quasi certaine. Le duo d’ambulanciers est donc le témoin privilégié de la dégradation des conditions de vie des Russes. Surtout que leurs propres emplois sont menacés par une compagnie européenne qui s’implante à Moscou sans vergogne.

Et puis un soir, on leur attribue un stagiaire, Méhoudar, qui n’est même pas vraiment russe, selon leurs standards. Ils vont quand même devoir lui apprendre les ficelles du métier."

Authors

Review

Ce roman nous raconte, dans un moscou futuriste (puisqu'avec des ambulances volantes), mais pas trop (puisqu'il y a encore un parti communiste, et tout l'ensemble du décorum de la guerre froide), la vie de trois collègues ambulanciers, dont un débutant.
Je peux le dire tout de suite, je n'ai pas accroché à cette histoire.
Pourtant, le côté communisme futur a un furieux côté cyberpunk, avec des magouilles à moitié légales un peu partout, un contexte social très largement dégradé. Et personnellement, j'ai quand même beaucoup d'affection pour le cyberpunk .... Enfin, je croyais jusqu'à présent. Mais peut-être que ce récit n'en est pas, ou peut-être que j'ai vieilli, ou peut-être enfin que le contexte est trop cyberpunk pour ne pas résonner en moi, mais je n'ai pas complètement apprécié le décor.
Et le problème, c'est qu'il n'y a que peu d'histoire au-delà des anecdotes d'intervention. Du coup j'ai suivi chaque intervention en me demandant quand il allait se passer quelque chose. Et il y a des moments où j'ai bien cru que le récit allait s'emballer ... Mais ça n'est jamais arrivé.
Et je suis arrivé à la fin de cette histoire , aussi fatigué de l'avoir lu que les ambulances d'occasion qui servent de véhicule aux héros, eux-mêmes pas très vaillants, de cette histoire.

Le titre est trompeur : le machine learning est utilisé pour choisir les paramètres de son moteur polynomial. Cela dit, utiliser l’approximation polynomiale est souvent *très\* efficace.







Alors ça c’est triste ! J’ai beaucoup utilisé Growl. Sur mon iBook, puis sur différentes machines Windows. Et c’est vraiment un chouette système de notification, qui supporte quelques fonctionnalités vraiment marrantes …​


Si même SQLite peut se comporter comme une base de données de documents JSON …​ le terme NoSQL a vraiment du plomb dans l’aile …​



Animal insignifiant parmi les animaux et humain parmi d'autres humains, Sapiens a acquis il y a 70 000 ans des capacités extraordinaires qui l'ont transformé en maître du monde. Harari, Vandermeulen et Casanave racontent avec humour la naissance de l'humanité de l'apparition de Homo sapiens à la Révolution agricole. Une bande dessinée pour repenser tout ce que nous croyions savoir sur l'histoire de l'Humanité.

Review

Une mise en image qui facilite énormément la compréhension de ce qui doit être un essai spectaculairement touffu.
J'ai spécifiquement apprécié la partie sur l'apparition de la faculté d'abstraction chez l'homme, autrement dit la création de la fiction, qui a entraîné l'émergence d'une authentique culture humaine.
Le reste était parfois un peu trop didactique, mais néanmoins toujours intéressant.

C’est curieux cette tentation des développeurs de toujours réinventer la roue. En voyant cette histoire de Gemini, je me dis qu’en fait, on peut très facilement arriver au même résultat avec du http, pour peu qu’on conçoive un site simple, non ?