Codingame : fin de partie

Il y avait ces dix derniers jours un contest codingame.

Et j’étais assez bien parti, puisque je suis arrivé en ligue silver. Malheureusement, à un moment donné, je me suis rendu compte que j’y passais sans doute trop de temps.

J’ai donc décidé d’arrêter de participer aux contests codingame. D’ailleurs, je ne pense pas me remettre à codingame, même en-dehors des contests, avant un bon moment. Je retire de nombreuses choses de mes participations que je vais tenter de découper en plusieurs morceaux

Wondev Woman

Sur le contest proprement dit, c’était bien. J’avais commencé à coder mardi un algorithme conceptuellement proche de celui que j’utilisais pour Hypersonic, me permettant théoriquement de faire une analyse complète du plateau à plusieurs tours d’avance. J’achoppais sur un problème de chargement des directions possibles, mais j’avais en tête une solution.

Mais avant un peu de vocabulaire

  • J’appelle action une action complète (MOVE&BUILD ou PUSH&BUILD).
  • Un mouvement est un élément d’une action (déplacer la case « active » dans le futur d’une des directions possibles). Donc si on y réfléchit bien, une action est une paire de mouvements. Petite révélation : la différence entre PUSH&BUILD et MOVE&BUILD est que, dans le premier cas, le premier mouvement arrive sur une case occupée

Du coup, mon algorithme devenait quelque chose ressemblant à

  1. Calculer les mouvements possibles au tour courant pour mes pions
  2. Pour chaque mouvement, calculer l’état du terrain après le mouvement (sans tenir compte de la position des joueurs). Il va y avoir des tonnes de superposition, qui correspondent à des futurs communs, ça offre une bonne réduction de l’espace de recherche.
  3. Scorer les positions des pions. Pour les meilleures positions, recommencer à l’étape 1. Le score utilisé doit être indépendant de la longueur des chemins

A mon avis, avec ça, j’aurais pu atteindre l’or. mais.

  • Implémenter un tel code est long, et assez fastidieux.
  • J’ai eu cette idée uniquement parce que j’ai repris hypersonic après la fin du contest
  • Je n’ai ni la motivation, ni le talent pour atteindre la légende (mon meilleur score à été d’atteindre le fond de la ligue gold).

Plus généralement

Ces constats, qui ne sont pas d’ordre techniques mais personnels, sont reproductibles pour tous les problèmes de codingame : il y a de bien meilleurs joueurs que moi, et je le vois clairement.

A mon avis, c’est parfait pour découvrir un nouveau langage. Et en réalité, attaquer ces problèmes en Java était pour moi une facilité. En théorie, j’aurais dû les attaquer en Python, en Scala, ou dans n’importe quel langage dans lequel j’ai envie de progresser vite.

Parce que les structures de données que j’ai mis en place, contrairement à d’autres participants, faisaient la part belle aux design patterns, à la bonne programmation orientée objet, bref au code Java bien idiomatique. Et je sais que j’aurais fait pareil dans d’autres langages.

Du coup, je vais arrêter d’y jouer en Java, et je m’y remettrais si je dois découvrir un nouveau langage.

Je déteste encore git

J’ai déja écrit que je détestais git ? OUI.

Mais, en un sens, ce que je déteste au moins autant, c’est de me faire prendre pour un con.

Tiens, par exemple, quand j’écris un peu énervé

C’est quand même un peu vexant de se voir répondre

Me dire ça, à moi … Me dire que la meilleure façon d’utiliser cet outil difficilement compréhensible, c’est passer par nodejs et chromium … mon dieu.

Et puis, surtout, mon problème n’a rien à voir avec git en tant que tel, mais plus avec la façon foireuse de git d’utiliser la configuration système. Regardez un peu la question StackOverflow que j’ai posé à ce sujet … c’est assez merdique.

Cela dit, quelque chose m’a un peu intrigué. Ce tweet, en particulier.

Là, vous voyez, il y a un problème : le bon outil est ergonomique. Et quand je vois le nombre de personnes qui galèrent pour l’utiliser, sans même parler de l’utiliser correctement, je me demande si, réellement, il y a eu un gain si net par rapport à Subversion. Bon, pour le noyau Linux, clairement, ça doit être indispensable.

Mais ai-je besoin du même genre d’outil pour un projet qui ne va être partagé qu’entre quelques machines de développement et un serveur d’entreprise ?

Ai-je besoin d’un outil développé essentiellement pour des gens qui considèrent que l’ergonomie de la ligne de commande de Linux est un must insurpassable ?

Ai-je besoin d’un outil dont la l’intégration avec Linux est tellement poussée que le moindre problème dans la configuration réseau doit se résoudre dans les fichiers de configuration ssh du compte utilisé ?

Bref, encore une fois, je suis perplexe devant la faculté du monde du développement à adopter un outil inergonomique, rempli de fonctionnalités inutiles, et totalement inopérable pour peu que cet outil permette de démontrer une forme tordue de supériorité intellectuelle.

Et là, je me rends compte qu’en un sens, le Python ou plutôt sa communauté a peut-être changé ma perception de ce genre de choses …

#devoxxfr – Rideau !

Devoxx est fini, et je suis dans le train.

Ce que j’en retire conceptuellement

Globalement

En montant dans le train, j’ai croisé l’un des GO du chtijug qui n’a pas eu la chance de venir à Devoxx, qui m’a demandé quels étaient mes trois talks préférés. Sans hésiter, j’ai répondu « la troisième matinée de keynotes sur l’impact social du développeur ». Et, vraiment, je le pense. Ces quatre talks m’ont, chacun à leur façon, soigneusement mis en face de mes contradictions, et des contradictions de mon métier face au monde actuel. Ca me fait bien comprendre certains engagements citoyens que je vois émerger. Et clairement, ma vision du monde est changée. Ca, c’est ce qu’on pourrait appeler un point de vue stratégique.

Localement

D’un point de vue plus tactique, pour filer la métaphore, j’ai vu un très chouette talk d’architecture de Simon Brown qui m’a enfin permis de comprendre un point clé sur l’opposition monolithe/micro-services. Je vous explique : d’habitude, on les oppose soigneusement, comme si il n’y avait pas d’intermédiaire. Or, Simon démontre dans sa présentation que l’opposition est idiote, et qu’il existe un continuum entre les deux, ce continuum reposant sur une espèce de curseur d’isolation des composants : si votre application est un plat de spaghettis, vous êtes évidement dans la merde pour passer aux micro-services. Mais, si vous l’organisez proprement, est-ce que vous êtes sûrs que vous aurez besoin des micro-services ? Est-ce que vous ne pourrez pas développer des composants d’un niveau d’isolation équivalent sans passer par le plat de spaghetti réseau des micro-services ? L’organisation en composants étant, évidement, très proche de la vision de DDD proposée par Cyril Martraire dans son talk-surprise. Et cette vision d’une application correcte va évidement faciliter pas seulement le développement, mais aussi l’exploitation et la sécurisation. Un tout bien propre sur lui, donc.

Et dans ce tout, comment vient s’intégrer la blockchain ? Parce que bon, je me suis tapé en tout au moins 4 heures sur le sujet. Eh bien, je dirais que c’est le chaînon manquant. Je vous explique … Actuellement, les applications que nous écrivons sont opaques, et aussi dignes de confiance que, par exemple, le fameux système de paye des militaires qui ne marche pas. En effet, l’exécution du code se passe dans un silo bien protégé, quand bien même votre code n’a pas grande chose de plus confidentiel que, disons, un hébergement de blogs, un hosting d’applications façon clever cloud, ou autres. Avec la blockchain, et en particulier avec ethereum/embark, l’exécution de votre code devient une chose publique (inarrêtable, mais c’est un autre sujet), aussi bien dans son exécution que dans ses résultats.

Par exemple, si le calcul de vos impôts était rendu public, qu’est-ce qu’il se passerait ? D’abord, instantanément, votre situation fiscale (donc financière), deviendrait publique. Vous imaginez le choc dans notre pays de l’argent tabou ? Si on met ce point révolutionnairement épineux de côté, vous auriez aussi la garantie de la justesse de son exécution, parce que cette exécution serait reproductible, et reproduite sur tous les noeuds du réseau l’hébergeant. En bonus, cette information serait infalsifiable. D’autres informations pourraient également bénéficier de ces propriétés de façon moins polémique. Par exemple, à mon sens, la prochaine machine à voter infalsifiable et légalement correcte s’appuiera sur une blockchain (ça posera juste le problème de la disponibilité des votes avant la fin du scrutin, mais j’ai à dire vrai de plus en plus de mal à comprendre le sens de ce secret).

Ce que j’en retire humainement

Il y a un côté un peu … déstabilisant … à se retrouver d’un coup plongé au milieu de plusieurs milliers de développeurs parlant tous de Java, d’exception, de déploiement, de l’impact du ClassLoader sur les performances, de frameworks plus ou moins connus, et de toutes ces choses sur lesquelles j’ai quelques connaissances, mais finalement beaucoup moins que ce dont je peux avoir l’impression hors de cette fête. Mais une fois que ce sentiment est dépassé, il ne reste que le plaisir.

Ou plutôt les plaisirs.

Il y a d’abord le plaisir évidement d’entendre des gens intelligents détailler avec talent des idées qui font rêver.

Il y a ensuite le plaisir humain de pouvoir avoir des discussions intéressantes, intelligentes avec tout un tas de personnes : Clément, Julien, tous les castcodeurs (et en particulier une discussion vraiment chouete avec Vincent Massol sur XWiki, mon usage, son avenir).

Et, même sans forcément leur parler, le plaisir de voir les orgas réussir un bon sang de truc génial, avec une banane incroyable malgré la charge évidente de faire tenir cet édifice sur leurs épaules. J’ai croisé cinq ou six fois Nicolas Martignole, à chaque fois j’ai été de lui lancer un « welcome to the jungle », mais il courrait tellement dans tous les sens qu’il n’aurait probablement rien entendu.

Bon, évidement, tout n’est pas parfait : un talk franchement moins bon (de mon point de vue), deux sessions annulées (mais une remplacée avec talent), un village des exposants qui m’a franchement laissé froid (à part les stands Zenika & Murex – longuement squattés Jeudi soir – et la bière Sonar – abondamment bue le même soir). Et puis surtout, le pire : la terrasse du palais des congrès fermée malgré un temps qui, franchement, s’y prêtait.

Ouais, Nicolas Martignole écrira sans doute un bel article la semaine prochaine sur le blues des orgas, mais je ressens, moi, malgré le retour à la maison, le blues du spectateur qui retourne à son vieux projet après avoir vu, et eu, des idées géniales. Enfin, géniales, à mon niveau :

  • Implémenter browserWatch dans Wisdom framework – après avoir vu les boucles de feedback pour développeurs
  • Ecrire une application de nomic sur la blockchain (dans un ethereum de test pour commencer) – ça impliquera des programmes auto-modifiables
  • Ajouter une sortie graphml/archi au plugin maven de structurizer
  • Peut-être commencer à faire des prez publiques, genre au chtijug, justement sur Wisdom pour commencer, avant de tenter un « développeur à 40 ans, so what ? »
  • Trouver un moyen de manger un jour avec autour de la table quelques personnes à Lille qui devraient se rencontrer
  • Me créer un autre job ? Devenir politicien-développeur ?
  • Et surtout, surtout, commencer à militer dès Lundi pour revenir à Devoxx du 5 au 7 avril 2017 … et avec quelques collègues de plus.

Et, si jamais certains membres de l’organisation tombent sur ce post, merci à eux pour tout (sauf pour la selfie durant la keynote, ça, c’était too much :-)).

J’ai intégré la cohésion interne

Je vous ai déja parlé de Cleer ? Non ?En fait, si, mais pas beaucoup …

Sachez que c’est un excellent roman qui explore la science-fiction dans un contexte aussi inattendu que moderne.

Et sachez également que ce roman raconte comment les deux personnages principaux montent les échelons de la cohésion interne, un mystérieux service chargé de … rectifier les erreur, quelles qu’elles soient.

Eh bien ces temps-ci, j’ai l’impression de rentrer dans le même genre de processus. Bon, je vais avoir du mal à ne pas détailler … Cela dit, sachez que je commence à utiliser des outils louches, comme Archi, yEd (juste parce que je ne veux pas utiliser Visio) et, malheureusement, beaucoup de PowerPoint …

Changement de ligne

Depuis quelques temps, j’éprouve le besoin de … changer la ligne éditoriale d’airain de ce blog.

Aujourd’hui, je pense qu’il est temps. Ne vous inquiétez cependant pas trop, ça restera avant tout un blog d’opinion. On verra toutefois où ces opinions me mènent …

Cela dit, il y a des chances certaines que je parle beaucoup plus de politique, à la fois de façon générale et particulière.

Pas le temps

Pas le temps, pas le temps, je cours tout le temps.

En fait, j’aimerais bien bloguer un peu plus, mais en ce moment, je dois avouer que c’est un peu la course à l’échalotte permanente. Parce que, vous savez, j’ai changé de boulot.

Et le changement n’a pas été que facile.

Parce que le travail de consultant, et plus particulièrement d’architecte, est bien plus complexe que ce que je (et ce que les développeurs en général) croyait. D’ailleurs, il suffit de se demander ce que fait un architecte logiciel … C’est vrai, ça fait quoi ?

En vérité, je n’en sais pas grand chose. La seule réponse que je puisse donner est

Un architecte, ça fait … tout ce que vous imaginez qu’il puisse faire

C’est flou ?

Ca fait de moi le factotum de chaque projet auquel je peux participer ?

C’est vrai, mais c’est aussi tout l’intérêt du poste : se poser des questions inattendues, avoir la possibilité de créer des liens entre différents concepts pour en tirer des applications intéressantes.

Du coup, ça rend un peu d’intérêt au poste, non ?

En fait, ça lui en donne beaucoup, même si ça vide un peu la tête : il n’est pas rare que, le soir, en rentrant chez moi, je ne puisse rien faire de plus intelligent que casser du tank.

Tout ça fait que j’ai un peu moins de temps pour ce blog. Mais, ne vous inquiétez pas, j’y pense encore.

Mais quel fichu manque d’imagination je peux avoir !

Quand j’ai commencé à fréquenter les recoins sombres d’internet, je n’y connaissais rien en sécurité. J’avais donc, comme tout le monde, un unique mot de passe d’à peine huit caractères (dont un chiffre, heureusement).

Et puis j’ai peu à peu compris qu’un seul mot de passe pour tous les sites, c’était à peu près utile qu’aucun mot de passe. Hélas, si j’utilisais plusieurs mots de passe, comment me souvenir de quel mot de passe était utilisé pour quel site ? Et c’est là que j’ai découvert l’excellent Keepass. C’est donc tout naturellement que j’y ai stocké tous mes mots de passe, protégés par un mot de passe maître d’une longueur … insolente.

Hélas, cette phrase pouvait facilement être retrouvée sur le web, puisqu’il s’agissait de l’une de mes signatures mail/usenet (d’ailleurs, c’est à nouveau, après des errances diverses, ma signature mail/usenet).

Or j’ai découvert récemment les progrès dans les tables d’attaque utilisées par les pirates divers et variés, et donc par les gouvernements qui les emploient. Ce qui m’a poussé, naturellement, à changer ce mot de passe.

Et je dois dire que c’est un changement franchement flippant. Ce mot de passe, c’est, grâce à Keepass, le seul que je connaisse. Il est certes long, mais il est unique et bien ancré dans ma mémoire. Du coup, le changer, ça me fait flipper. Parce que si je le perds, je perds absolument tout : plus d’accès à mes mails, ni à tous les sites web auxquels j’ai pu me connecter.

Je crois qu’il est enfin temps pour moi de passer, pour certains services critiques, à l’authentification à deux facteurs … Ou plutôt à une forme spécifique de celle-ci pour Keepass.

N’empêche, j’ai tellement peur de perdre ce mot de passe que je me demande si je ne vais pas le noter dans un coin secret …

Déprime

Désolé pour mes lecteurs assidus, mais en ce moment, entre une vie personnelle … pas joyeuse … et une actualité rance, je n’ai pas grand chose d’intéressant à écrire, d’où le silence.

J’ai néanmoins une réflexion à offrir à la lumière des récentes histoires (lamnetables) de la journée de retrait de l’école.

Apparement, la fameuse phrase de Churchill (quoique la source et la forme me semblent incertaines)

Un peuple qui oublie son passé se condamne à le revivre.

n’est pas suffisante pour déverser dans nos campagnes des torrents de haine. Haine antisémite. Haine anti-LGBT. Haine rétrograde.

Ca fait plus que m’attrister, ça me révolte.

Je suis également révolté par la complaisance des boîtes à écho médiatiques à traiter ce genre de bruits quand d’autres histoires mériteraient bien plus du fameux « temps d’antenne »‘. Et j’en viens à me dire que le pays que je vois quand je ferme les yeux – et même quand je les ouvre – n’a que peu de rapport avec la France qui m’est présentée.

Je ne vois pas les déferlements d’étrangers spolliant les vrais français de leurs droits à s’enrichir, mais des gens travailleurs, prêts à occuper les fonctions les plus ingrates, et méritant pour ça tout mon respect.

Je ne vois pas les sinistres légions de la théorie du genre forçant mes enfants à avoir d’autres attirances sexuelles.

Enfin bref, vous m’aurez compris : je ne vois pas la France odieuse que décrivent les agitateurs médiatiques.

Et je suis sûr que personne ne voit cette France-là. Alors, pourquoi les médias nous rebattent-ils les oreilles de rumeurs débiles, de manifestations nationales  n’attirant même pas la population d’une petite ville de province dans les rues de la capitale ?

Ma théorie, c’est que les médias cherchent deux choses : créer de l’audience, et plaire à leurs actionnaires. Or en France, bien des médias sont aux mains de groupes … orientés. Ce qui oriente leurs histoires, et donc la perception de la réalité. Or, vous le savez bien : les faits ne sont rien, seule compte la perception.

Le lifestream est enfin visible !

Pour ceux qui ne suivent pas ce blog très assidument, c’est sans doute obscur, je vais donc clarifier.

J’ai enfin franchi la dernière étape me permettant de fournir une version publique du lifestream. Elle est disponible à l’adresse http://nicolas.delsaux.free.fr/lifestream/ (par ailleurs rappelée au pied de ce blog).

Le style est … discutable.

Mais il y a une ou deux fonctionnalités bien plaisantes à mes yeux dans les pages de tags par exemple.

Et un gros bug lié à JBake et fortement visible aussi bien dans les tags que dans les archives. Gros bug qui fait que chaque article créé un mois différent du mois du précédent article relance l’affichage du mois. Je vais m’en occuper plus tard d’au moins deux façons :

  1. Dans le template Velocity utilisé
  2. Dans JBake lui-même

Si vous voyez d’autres bugs, surtout, n’hésitez pas à les rapporter.

Crise démocratique ? Pas sûr

Bon, je vais vous sortir un instant de votre petit confort de lecteurs pas forcément assidus de ce blog.

Comme c’est le nouvel an (en tout cas pas loin), j’ai vu fleurir (plus particulièrement sur la shaarlisphère d’ailleurs) pas mal de message au ton … pas forcément joyeux. Je vais prendre ce message d’Anadrark comme exemple.

Tout ce qu’il y dit est vrai, tout simplement.

C’est vrai que les mécanismes de base de la politique ont tous été subvertis.

C’est vrai également que chacun d’entre nous est mieux surveillé qu’un dissident politique à l’époque du stalinisme : l’état peut savoir grâce à la fameuse loi de programmation militaire où je suis, avec qui, ce que je fais (le piratage de webcams est une possibilité tellement répandue que même Maïa Mazaurette en parle), ce que je regarde, bref, …. TOUT. C’est flippant.

Et c’est ce côté flippant qui panique les internautes (français en particulier, puisque, je le rappelle, nous sommes tous des dépressifs chroniques).

Maintenant, voyons les choses d’un autre côté.

Dans notre beau pays, les élites sortent d’une belle machine à formatter la tête qui s’appelle l’ENA. Dans cette école, on leur apprend qu’il leur faudra attendre l’âge de la retraite avant d’être un maître du monde. Du coup, quand ils deviennent ministres/présidents/décideurs, ils ont l’âge d’être appelé pépé.

Ca n’était pas grave il y a vingt ans, avant la révolution numérique.

Aujourd’hui, ça les place du même côté que la fleur de la chevalerie française à Azincourt, ou que les soldats français au début de la deuxième guerre mondiale : du côté du passé. Et le passé, c’est dépassé. Avec toutefois une différence : nos élites actuelles ont le pouvoir et une peur bleue des simples citoyens. Une peur bien expliquée dans cet article du Monde. une peur qui faisait, paraît-il, partager une peur commune à Sarkozy et Chirac : celle de voir les révolutionnaires débouler à l’Elysée pour planter leur tête sur une pique (j’avais lu/vu/entendu ça dans un quelconque documentaire, et ça m’avait stupéfait par la méconnaissance que ça montrait pour « le peuple »).

Notez bien que tout ce que je dis là, Jean-Michel Billaut l’a déja dit bien mieux que moi. En revanche,c e que je vais dire maintenant n’appartient qu’à moi.

Nous sommes à l’aube d’une – ou plutôt d’au moins deux – révolutions qui vont bouleverser notre monde.

  1. La révolution numérique va complètement transformer le paysage politique, le paysage culturel et le paysage commercial.
  2. La révolution du pétrole va elle bouleverser nos rapports aux distances et aux coûts des matières.

Autrement dit, le monde va vaciller, et pas seulement dans les pays qui dépendaient d’une forme d’exploitation du pétrole. Notre monde va changer. Aujourd’hui, nos gouvernants essayent de maintenir le statu quo, de faire que la France, terre d’administration centralisée depuis bien des siècles, reste ce pays organisé et planifié depuis un centre unique.

Ca ne va évidement pas se passer comme ça.

C’est bien pour tous ceux qui sauront embrasser le changement, mais terrifiant pour les gens – et je pense que les ministères en sont pleins – pour qui le changement ne fait qu’apporter l’inconnu.

Heureusement, il y a une solution simple à ça : attendre. Oui, attendre. Dans dix ans, dans vingt ans, la vague déferlera à pleine force, et je crois sincèrement que tout ce qui nous ancre dans un passé marécageux sera proprement arraché de ses gonds.

Je ne crois toutefois pas que ça se fera sans douleur. En revanche, ce que je sais, c’est que nous allons vivre des temps intéressants, ce qui (pour les lettrés d’entre vous) n’est pas forcément une bénédiction.