Si vous voulez tester si un serveur Kroki marche bien, c’est très cool. En revanche, le composant d’édition ne permet pas de récupérer le texte quand il devient long, donc méfiez-vous


Enfin des slides qui donnent envie d’apprendre les langages fonctionnels en partant d’un prémice simple : ça ne sert à rien d’enseigner le concept de monade.


Des illustrations open-source, aux couleur très vives (ça change). A mon avis très pratique pour toute une phase de préparation de projet



Si vous vous posez la question de répliquer votre base de prod dans une base de test "proprement", cet outil semble une piste intéressante.




Review

Dans ce roman épatant, KS Robinson nous parle de l'antarctique et de son exploitation. On y suit divers personnages - une guide, un technicien, un attaché parlementaire, et un influenceur - qui vivent en antarctique à un moment où le traité éponyme est suspendu (à cause d'un sénateur US proche de compagnies pétrolières souhaitant une part du gâteau sub-antarctique). Ca nous donne de longs passages retraçant les voyages de Scott et Shackleton, entrecoupés d'authentiques explorations scientifiques du sous-sol antarctique, et de visites aux différentes bases. Le tout avant un final assez politique.
Avant d'aller plus loin, il faut noter que le roman a été écrit sur place, puisque Robinson a été invité (comme l'influenceur chinois) à partager la vie des scientifiques explorant ce continent gelé. C'est sans doute pour ça que le livre a un tel sentiment de vérité : on ressent toutes les nuances du froid, du vent, du danger que peut faire ressentir ce gigantesque espace blanc. Et comme les personnages, on ressort de chaque voyage à l'extérieur épuisé, transi et affamé. Qui plus est, les différents passages scientifiques sont lisibles (de mon point de vue d'ingénieur), et font peut-être partie de l'immersion de l'auteur.
D'ailleurs, la quatrième mentionne que ce roman est un prototype de la trilogie martienne ... Ce que je conteste : effectivement, l'auteur est le même, donc le style est proche. Mais il n'y a pas l'ambition d'en faire un roman total, ce qui amène une oeuvre dont je ne peux pas dire qu'elle est compacte, mais au moins qu'elle est contenue (700 pages, c'est beaucoup). Contenue parce que j'ai bien senti que l'auteur avait un certain nombre de choses qu'il voulait écrire, et qu'il les a écrites.
Résultat ? C'est un bon, un très bon, un excellent livre, même, dont on ne pourrait regretter que des aspects science-fictifs anecdotiques (les dirigeables en pleine tempête, par exemple). Et puis ça forme un complément agréable à Vostok





J’aime bien cette approche, et cet article me paraît un retour d’expérience assez correct


Je me dis régulièrement que je devrais un jour ou l’autre passer à Linux. Et en fait, Keepass est l’un des plus gros freins (parce que je veux une expérience de qualité). Cet article pourrait m’aider …​ (mais il faudra tester)



Est-ce que vous saviez que git dispose d’un système de gestion de métadonnées ? Pourquoi ça m’intéresse ? Parce que ces histoires de conventionnal commit sont des métadonnées mal cachées dans le message de commit.





J’ai beaucoup aimé cette série. Mais effectivement, elle est problématique pour de multiples raisons.


Review

Ca fait du bien de retrouver Nävis.
Cette fois-ci, les auteurs ont décidé de filer la métaphore de la migration.
On va donc voir notre héroïne infiltrer une filière qui exploite une espèce aux très belles ailes. Ces gens souffrent, et l'histoire arrive bien à nous faire ressentir de l'empathie pour eux. Et je trouve juste dommage que le scénario soit aussi manichéen.
Cela dit, c'est toujours aussi bien dessiné, et le scénario est assez correctement conçu. Qui plus est, certains éléments permettent de bien montrer qu'il s'agit d'un univers qui vit même lorsque Nävis ne regarde pas.

Moa

Moa

Si vous voulez relier le monde magique de mastodon à celui de Twitter, cet outil a l’air de faire le boulot



Après Sex Criminals et Berserk, j'ai entamé une oeuvre à la couverture un peu mystérieuse.

Le comics est assez long et, honnêtement, j'ai beaucoup plus l'impression de lire un manga qu'autre chose. Mais de quoi ça parle ?

Monstress nous raconte l'histoire de Maika Demi-Loup, prise dans une guerre entre humains (et sorcières) et mutants issus d'anciens qu'on pourrait dire anthropomorphique (on trouve parmi ces anciens une louve, un renard, une femme aux bois de cerfs, des oiseaux). Et dans cette guerre, Maika va découvrir qu'elle porte en elle un dieu monstrueux issu d'une ancienne ère, que sa mère lui aurait attaché (les lecteurs me diront tous que chacune de ces phrases une simplification absolument outrancière de la complexité de cette oeuvre, et je serai bien d'accord, c'est toujours beaucoup plus compliqué que ça). En chemin, elle va s'entourer de quelques personnages pour ne pas mener de quête pour sauver le monde, ne pas non plus conduire l'un des camps à la bataille, ne pas non plus changer le monde. Mais ça, ça n'est même pas l'aspect le plus spectaculaire de cette histoire.

L'aspect le plus spectaculaire, c'est qu'à part deux exceptions notables, tous les personnages sont féminins. Ca n'a l'air de rien, mais dans un récit de guerre comme celui-là, voir des personnages féminins prendre les rôles de généraux méprisant la vie de leurs troupes, de scientifiques fous prêts à sacrifier des enfants, est un retournement des plus salutaires. Et pour le coup, ça ne change strictement rien aux enjeux du récit.

C'est tellement spectaculaire que ça cache peut-être les grandes qualités d'un récit qui est joliment dessiné (avec un usage intelligent des flous), dont le scénario est bien pensé pour toujours nous montrer Maika comme un monstre, à la fois à cause de sa cohabitation forcée, mais aussi à cause de son comportement de pur prédateur. Parce que dans cette galerie de femmes dangereuses, elle n'est pas la dernière à tuer des gens simplement parce qu'ils sont sur sa route. En fait, ça en fait peut-être l'un des personnages les plus mortellement dangereux que j'ai vu. Encore plus, sans doute, qu'Elric lui-même.

Autrement dit, lisez cette oeuvre, qui par ailleurs collectionne les prix Eisner. Au passage, l'oeuvre a reçu le prix "pour adolescents". Mais franchement, à moins que je ne fasse preuve d'une sensiblerie coupable, je ne comprends pas trop cette séparation adolescent/adulte.


Je tombe sur cet article pas tout jeune dans lequel mon nom est cité. Et si je me souviens bien d’Utopod (qui a notamment diffusé une superbe nouvelle cannibale de Catherine Dufour), je n’ai aucun souvenir d’avoir écrit ça



Une expérience poétique très intéressante pour de multiples raisons


Une horloge dont les chiffres sont constitués de morceaux de Google Earth



On me parle de semantic release, et du fait d’utiliser conventionnal commit. Comme je suis un peu hostile aux conventionnal commits, je me dis qu’ajouter des notes à nos commits serait une belle façon de pouvoir définir le niveau de compatibilité du commit


https://steamcommunity.com/app/92800/discussions/0/613941122775242718/[What other programming games are there?

SpaceChem General Discussions]

Une belle collection de jeux de programmation, sur différents supports.



Robocode n’est pas mort ! Dès que j’ai fini mon bot d’échecs, je tente de m’y remettre pour tenter deux ou trois trucs




La pire description de go que je puisse imaginer "you are living in the Plan 9 cinematic universe."



Un service …​ intéressant (et leur page de doc sur les différents clients AMQP est super complète



L’idée est vraiment chouette. Mais je crois qu’on a passé l’époque du terminal, non ?



Review

Ce vingtième tome voit Nävis tourner les pages de son mystérieux passé humain.
Le propos est intéressant, et l'enquête pas dénuée d'intérêt. Mai est-il vraiment nécessaire de présenter des humains eugénistes/OGM vivant dans ce qu'on ne peut interpréter que comme une dystopie ?


Un repackaging différement optimisé des outils de compilation Rust améliorant évidement beaucoup les performances de compilation



Vraiment, les modules ont amélioré la sécurité 😅 (Je frappe sous la ceinture, il est vrai) Franchement, je n’aimerai pas maintenir une application Java>15 sans conteneurisation correcte.


Review

Ce deuxième tome est une baffe incroyble.
On y retrouve le génie de cette histoire de multiplier les styles graphiques selon les personnages et les lieux.
Mais comme l'exposition est faite par le premier tome, on peut plonger au coeur de l'histoire, qui va voir des assassins s'affronter pour contribuer (ou pas) à l'éveil d'un dieu. L'histoire est sympa, et avec un dessinateur classique serait chouette, mais pas incroyable. Là, clairement, cette mise en perspective à travers le dessin, avec des hommages aux grands dessinateurs des 70 (John Berkeley en tête) ajoute une dimension supplémentaire au génie de cette oeuvre pour eu faire quelque chose d'absolument incroyable.

Une police de caractère optimisée pour la lisibilité.



Il y a toujours des détails rigolos quand on essaye de faire des trucs élégants en Rust. Cette fois-ci, c’est faire l’équivalent des Single Abstract Method Java qui sont appliquées aux closures.




Un article vraiment intéressant sur les différentes façons de gérer le polymorphisme en Rust. Et je me suis rendu compte que j’utilisais trop les traits et pas assez les enums.



Review

Ca fait du bien de retrouver Angelino et Vinz dans Dark Meat City !
Et comme dans la première série de bds, ça part vite, fort, et dans tous les sens.
On y trouve pêle-mêle des complotistes, une secte naturiste lourdement armée vivant dans le fond du Nevada (oui, c'est bizarre), la mafia russe et les yakuzas.
C'est tout aussi barré que la première partie. Et franchement, j'adore.
Mais ça n'est pas vraiment une lecture parfaite : le rythme est parfois bancal, et je n'arrive pas à savoir dans quelle mesure l'auteur se moque des thèses complotistes, ou y adhère avec une certaine distanciation.



Quand Chrome était sorti, le même auteur avait écrit une longue BD montrant à quel point c’était un bon navigateur. Même pas dix ans après, le portrait n’est plus aussi flatteur




★★ Dr.Cassos sur Twitter : "[THREAD J’interviewais une jeune fille à propos des incivilités et du harcèlement de rue. Elle m’a raconté une histoire qui n’ira pas dans l’article mais que je vous raconte quand même parce qu’elle est ouf. C’est pas tous les jours qu’un trafiquant te protège d’un agresseur." / Twitter]

Une histoire de dingue (et franchement, c’est quoi ce pays de connards ?). Oh, et les commentaires sur les trafiquants qui assurent la sécurité …​ Je ne sais plus quoi écrire, là


Si vous avez un jour besoin d’afficher le schéma d’une base postgres/mysql dans PlantUML rapidement, cette image Docker fait du bon boulot …​




Oui, aujourd’hui, on sait que les cinq années qui viennent seront dramatiques pour l’ensemble des services publics, sauf bien sûr les forces de l’ordre.



Et avec ça, je peux écrire ma doc dans mon contrôleur Spring, et l’exposer dans ma doc, sans passer par Springfox (je n’ai rien contre, c’est juste pas mon cas d’utilisation)


C’est pas tous les jours que j’ai envie de repasser sous cette merde de macOS. Mais un vrai IDE Rust, ça me tente beaucoup (ou alors il faut que je reteste Eclipse Corrosion, qui m’avait semblé bien trop lent)



Un intéressant plugin qui génère le fichier Swagger d’une appli Spring/JAX pendant la compilation (et ça, c’est vraiment bien). Ca marche très bien, hein, mais il faut juste faire attention aux annotations utilisées. Dans mon cas (l’équipe utilisait @PostMapping @RequestMapping …​) ça a marché …​ quand j’ai simplifié les annotations.


Merci podcastscience de me faire découvrir l’existence de l’os clitoridien (je connaissais déja l’os pénien, célèbre aussi grâce au musée du pénis islandais)


Ces derniers temps, pour tout un tas de raison (dont une santé qui ne fait pas rêver), j'ai essayé de limiter ma participation à Codingame, et en particulier aux challenges de programmation. En effet, ceux-ci imposent un rythme de codage qui ne me permet pas d'être bon, ce qui est un peu frustrant. Et pire encore, ça m'enferme dans un comportement de codeur passionné, qui ne laisse que peu de place à la vie de famille. Donc je participe beaucoup moins.

Néanmoins, depuis quelques mois, un collègue me tanne avec un problème particulier, qui n'est pas un contest, mais un simple puzzle. Enfin, un simple puzzle ... On parle quand même du jeu des rois. En l'occurence, des parties d'échec avec début de partie aléatoire en deux manches gagnantes. J'avais trouvé toute une série d'excuses de qualité : préparer et participer au Snowcamp, faire avancer mon projet open-source de documentation d'architecture, ...

Mais mon collègue est opiniâtre, et plutôt bien classé ...

Au bout d'un moment, j'ai donc craqué et lancé un projet, évidement en Rust, pour tenter d'implémenter un bot de qualité qui joue aux échecs. Et, comme d'habitude, j'ai d'abord cherché une source d'information de qualité. J'ai eu la chance de tomber sur une très belle série d'articles, un peu datés, mais très bien conçus : Chess Programming, écrits par François Dominic Laramée. J'ai donc méthodiquement implémenté

  1. Une base de données des mouvements possibles pour chaque pièce sur chaque case de l'échiquier
  2. Le code me permettant de trouver les mouvements réalisables sur un échiquier occupé là aussi pour chaque pièce sur la case qu'elle occupe actuellement.
  3. Et là j'ai commencé à caler ...

Je vous explique ...

Ou plutôt, je laisse François-Dominic commencer l'explication du MinMax et de l'AphaBeta. Pour résumer, le but de la partie est de permettre à mon bot de capturer le roi (oui, on ne le fait pas, c'est vulgaire) sans lui laisser la possibilité d'y échapper. Comme ça n'est pas immédiatement possible, on considère qu'un bon "proxy" de ce score est d'avoir plus de valeur sur l'échiquier que l'adversaire. Seulement, ça, c'est un peu biaisé, et en plus en début de partie, il faut un autre proxy. On peut par exemple imaginer essayer de gagner les cases près du centre.

Bon, évidement, il y a un bon paquet de positions à évaluer à chaque tour, qui fait qu'un bot ne peut pas faire d'évaluation de tous les coups ... Mais ça, c'est assez classique dans les jeux codingame. En revanche, ce dont je n'ai pas l'habitude, c'est de l'évaluation MinMax, qui à mon sens implique qu'une évaluation inclue mon tour de jeu et celui de l'adversaire.

Tout ça, c'est somme toute assez classique ...

Donc dans ces cas-là, la méthode "simple" est de sélectionner et scorer les différents coups possibles, et de prendre le meilleur. Et j'en suis là.

Sauf que, comme tout développeur "moderne", j'ai créé des tonnes de structures sophistiquées : des Point, des RealMove, des Turn. Et je passe pas mal de temps à faire des .clone(), ce qui ne me satisfait pas (en Java, je ne les verrai pas, parce que Java est bien plus laxiste sur la gestion de la mémoire).

Et, pire encore, j'ai compris un truc : entre deux tours de jeu, il n'y a que tr_s peu de différence : deux pièces ont bougé. Autrement dit, prédire le futur en recalculant à chaque tour les mouvements possibles de toutes les pièces est sacrément efficace. En fait, en l'écrivant, je me rends compte qu'il me faudrait une structure "à la git". C'est-à-dire un arbre des positions possibles qui me permette, quand je passe d'un tour au suivant, de bénéficier directement des calculs effectués au tour précédent.

Autrement dit ... Autrement dit, j'arrive au moment, classique quand je me lance dans un challenge codingame, où je supprime mon code pour le réécrire de zéro (ou à peu près).

J'ai une chance : les règles des échecs sont peut-être complexe (et par rapport aux autres jeux codingame, elles le sont incroyablement), mais au moins elles ne changent pas d'un niveau au suivant. Donc on repart de zéro avec des coups possibles stockés dans des champs de bits (ça fera plaisir à Nicolas), une arborescence de coups qui s'écrase quand on passe au tour suivant, et peut-être une vision plus claire des heuristiques. Souhaitez-moi bonne chance !







Résultat, dans Python, vous avez au moins trois façons différentes de formatter du contenu dans des chaînes de caractère. C’est la fête …​




Review

Ce roman est un ramassis de poncifs éculés, à mi-chemin de Starfighter et de la stratégie Ender (je n'invente pas, quelqu'un d'autre a commencé sa chronique exactement comme ça).
Il raconte donc comment Zach, gamer finissant son collège US, est recruté par l'armée de défense de la Terre qui a en fait créé le jeu auquel il joue qui n'est qu'une simulation de combat spatial contre les extra-terrestres qui menacent la terre.
Si ça paraît cliché, c'est parce que tout dans ce roman est un cliché
Zach a un ennemi juré depuis l'équivalent du primaire.
Le père de Zach est mort - mais en fait non, c'est un soldat de l'armée secrète.
La mère de Zach vit dans la mémoire de son mari disparu, mais ne s'empêche pas pour autant de vivre des aventures sentimentales.
Zach rencontrera lors de sa journée d'intégration militaire une fille vraiment canon avec laquelle il finira l'aventure.
Les militaires ont une vision trop simple de cette guerre, mais Zach et son père ont un plan pour Sauver Le Monde Au Mépris De La Hiérarchie.
Zach est très fort, mais n'écoute pas vraiment les ordres.
Et ça continue, encore et encore.
C'est bien simple, à chaque fois que vous imaginez voir l'ombre d'un cliché, c'en est bien un, et il sera exploité à vous en donner la nausée.
Et pour être sûr de bien comprendre à quel point ce livre est un objet de la culture de consommation, les références aux films de SF des années 80 ne sont pas seulement surabondantes, elles dévorent en fait toute la capacité de l'oeuvre à être originale. Parce que chaque passage vous rappellera une oeuvre passée.
Bon, ce livre a néanmoins une qualité : Ernest Cline sait écrire efficacement, et le texte coule assez naturellement. Hélas, c'est exactement la seule qualité de ce livre qu'on pourrait généreusement qualifier de remake ... sauf que c'est un remake façon reprise pop d'un tube d rock des années 80 : on a perdu toute l'énergie, tout le sel, pour le remplacer par des bons sentiments et un peu de tendresse, le tout servi par ce personnage archétypal que je déteste : l'adolescent en devenir.
Donc, si vous avez 15 ans, que vous êtes un peu geek, et donc que vous êtes dans le public de ce roman, lisez La Stratégie Ender, ce sera bien mieux.


Une intéressante taxonomie des différents rôles qu’on peut jouer quand on a un peu d’expérience




Cette jolie histoire d’une home page sur internet m’a rappelé une autre époque d’internet. C’était parfaitement mélancolique.


Dans l’ombre de Google, le paysage des moteurs de recherche continue à évoluer. Et je vois dans cet article quelques propositions *très\* intéressantes.


Il faut vraiment que je résiste *très\* fort. Parce que j’ai deux envies 1. Un asciidoctor en pur Java (sans le JRuby sous-jacent) 2. Un asciidoc en pur Rust Les deux projets sont intéressants, techniquement à ma portée, mais mon dieu que ça va être long


OH une implémentation native Java d’un processeur Asciidoc. Si ça peut marcher dans Maven, c’est la fête. Autrement dit, il va falloir que je m’y intéresse d’assez près


Mais qu’est-ce que je fais ? Eh bien, tout simplement, j’essaye de créer de la confiance dans une base de code qui ne me donne *vraiment\* pas confiance.



Non de zeus ! Une version pour cargo du très pratique fizzed-watcher-maven-plugin ? (autrement dit un outil qui surveille le dossier des sources et lance le build à chaque modification). C’est souvent *très\* pratique (regardez le dev mode de Quarkus …​)



Il va falloir que je prenne le temps de lire toute cette liste tranquillement, parce que ça a l’air long, précis …​ et efficace !



On trouve rarement des rapports SCP mettant en scène le sexe anormal (et c’est à mon avis heureux). Celui-ci est franchement réussi.


Bon, avec cet article, je crois que j’ai *enfin\* compris la subtilité des définitions de chaînes caractère Rust (entre String et &str, on s’y perd parfois)


Un collègue avait fait il y a un an ou deux une présentation sur SonicPi, qui était chouette. Mais là, c’est du Rust+WebAssembly dans mon navigateur …​