Catégorie : Technique

  • Mon problème avec Masto­don

    Certains ont très bien expliqué ce que c’est. Bref, c’est décen­tra­lisé. Youpi !

    Sauf que bon, je réserve mon juge­ment défi­ni­tif pour plus tard mais à vue de nez c’est encore une réponse pure­ment tech­nique qui passe à côté des enjeux.

    * * *

    Si je veux jouer avec Masto­don il y a toutes les chances que je me retrouve sur masto­don.social et que je créé un compte là bas. Je me retrouve avec un outil simi­laire à Twit­ter, quelques bonnes idées en plus, la stabi­lité et les 150 clients et robots compa­tibles en moins mais surtout… sans tous les gens qui me suivent ni ceux que je suis.

    Comment est-ce que je tran­si­tionne si je ne peux pas forcer mes cama­rades de jeu ? Jabber a échoué face à MSN pour ça. Status.net a échoué face à Twit­ter pour ça. Je pour­rais parler aussi de Google+ et 50 autres.

    Status.net avait tenté la synchro­ni­sa­tion avec Twit­ter. Les clients pouvaient se connec­ter aux deux réseaux, y publier la même chose et inter­agir avec les rési­dents des deux côtés. Jabber avait le soutien de poids lourds comme Google, Face­book et des acteurs locaux comme Orange. Google+ a tenté de se rendre essen­tiel dans l’in­con­tour­nable Google.

    Rien de tout cela ici et je ne vois aucune stra­té­gie qui me permette d’y croire : pas de marke­ting agres­sif (on parle­rait en dizaines de millions d’eu­ros pour envi­sa­ger battre twit­ter), aucun acteur de poids, pas de parte­na­riat impor­tant avec des sources incon­tour­nables, pas de fonc­tion­na­lité impor­tante au point de me faire aban­don­ner le réseau exis­tant… rien.

    * * *

    Mais « c’est décen­tra­lisé ! » vous allez me dire. Outre que c’est un argu­ment qui ne convain­cra que les geeks, ma réponse sera surtout « ah bon ? ».

    90% des utili­sa­teurs ont créé un compte sur l’ins­tance prin­ci­pale masto­don.social. Autant dire que côté décen­tra­li­sa­tion… Le pire c’est que leur iden­ti­fiant est lié à la plate­forme donc ils devront aban­don­ner tous leurs contacts et leur histo­rique si d’aven­ture ils devaient chan­ger d’ins­tance.

    Vous pouvez aller voir ailleurs, mais déjà que le réseau est petit, il est bien diffi­cile de se dire qu’une petite instance sera là dans la durée. Si pour migrer je dois tout perdre, même moi je risque d’al­ler sur l’ins­tance prin­ci­pale et jeter l’idée de décen­tra­li­sa­tion.

    Pour jouer à ce jeu, il faut non seule­ment un système de délé­ga­tion ou d’in­di­rec­tion au niveau des iden­ti­fiants mais aussi aider les 90% des utili­sa­teurs à effec­ti­ve­ment l’uti­li­ser (non, implé­men­ter webfin­ger ne suffit pas).

    À défaut il faut prévoir dans le proto­cole un moyen d’an­non­cer aux clients qu’un utili­sa­teur a changé d’ins­tance, que les clients se mettent à jour à partir de là et que les serveurs sachent réim­por­ter l’his­to­rique d’un utili­sa­teur en migra­tion. C’est toujours possible de l’ajou­ter après coup mais qu’ils n’y aient pas pensé ne me rend pas opti­miste sur la compré­hen­sion des enjeux.

    * * *

    Bref, pour que j’y crois il aurait fallu une stra­té­gie pour faire migrer une masse critique d’uti­li­sa­teurs, plus une mise en œuvre autre­ment que théo­rique de la décen­tra­li­sa­tion.

    Je n’ai aucun des deux aujourd’­hui et ce n’est pas faute de l’es­pé­rer mais je ne crois pas une seconde que les quelques petites fonc­tion­na­li­tés tech­niques fassent la diffé­rence vis à vis d’un réseau qui est quasi­ment passé dans le langage courant, soutenu par une entre­prise qui peut mettre des dizaines millions sur la table du jour au lende­main.

    Il est temps d’ar­rê­ter de croire que tous les problèmes sont tech­niques et peuvent se résoudre avec des lignes de code. Faire un système de publi­ca­tion décen­tra­lisé c’est (rela­ti­ve­ment) simple. D’autres l’ont déjà fait et ce n’est pas ça qui bloque. L’enjeu pour sortir de la centra­li­sa­tion de Twit­ter se situe ailleurs.

  • Et si on agençait des photos sur une page web mobile ?

    J’ai commencé à vouloir mettre en pratique mes études sur l’agen­ce­ment de photos dans une page web et… j’ai tout repris à zéro.

    Quand je donne un lien vers mes photos, il est quasi­ment toujours ouvert en premier sur mobile. Sauf à y faire des minia­tures illi­sibles, on peut y mettre une ou deux photos maxi­mum en largeur. La vue à la Flickr n’a aucun sens.

    Du coup je suis reparti d’une vue mobile, avec des agen­ce­ments prédé­ter­mi­nés. J’ai en trouvé quatre, même si bien évidem­ment certains peuvent s’in­ver­ser :

    Tech­nique­ment les calculs pour que les agen­ce­ments avec plusieurs images tombent « juste » sont les mêmes que dans la vue Flickr décrite au précé­dent billet.

    * * *

    La vraie ques­tion c’est le choix de l’agen­ce­ment en fonc­tion du format des diffé­rentes photos et de leur ordre d’ap­pa­ri­tion.

    La mauvaise idée de départ c’était tenter de faire des règles complexes pour choi­sir l’agen­ce­ment en fonc­tion des prochaines images et de leur format. L’ap­proche naïve était simple mais le résul­tat assez mauvais visuel­le­ment. Il aurait fallu faire plus complexe que verti­cal / carré / hori­zon­tal mais si je commence à distin­guer sept caté­go­ries, les combi­nai­sons explosent.

    Autant calcu­ler les quatre agen­ce­ments possibles et voir lequel est le plus perti­nent. J’ai pris deux axiomes :

    1– L’im­por­tant visuel­le­ment c’est la surface affi­chée de chaque image plutôt que sa taille en largeur ou hauteur.  Trop gros est aussi mauvais que trop petit. Je compare donc la surface de l’image à évaluer à celle d’une image de réfé­rence (une hori­zon­tale au format 3/2 affi­chée en pleine largeur).

    2– Il suffit d’une seule image illi­sible pour tout gâcher. Je calcule donc le score de chaque image indi­vi­duel­le­ment et le score d’un agen­ce­ment de plusieurs images corres­pond au plus mauvais score des images concer­nées.

    Le résul­tat est plutôt réussi. J’ai tenté de bidouiller et ajou­ter d’autres règles complexes mais ça n’a pas donné des amélio­ra­tions visuelles signi­fi­ca­tives.

    * * *

    Je calcule la gale­rie au fur et à mesure. Parfois il me reste une image verti­cale à la fin et je n’ai plus qu’à l’af­fi­cher en grand, même si c’est déme­suré. Une solu­tion pour­rait être de calcu­ler réel­le­ment toutes les combi­nai­sons pour toute la gale­rie avant de faire mon choix. Ça risque d’être un peu lourd pour ce seul défaut, surtout pour des gale­ries assez longues, donc pour l’ins­tant je ne suis pas allé sur ce chemin.

    Aujourd’­hui je garde l’ordre des photos. Je pour­rais aussi éven­tuel­le­ment iden­ti­fier les cas où tous les agen­ce­ments testés sont mauvais, et tenter de modi­fier un peu l’ordre des images avec celles juste après, pour voir si c’est mieux.

    Tant que je ne repère pas de cas vrai­ment moche, je vais toute­fois rester sur du simple.

    * * *

    Le choix assumé c’est de faire du mobile-first. Si j’ai plus d’es­pace hori­zon­tal je peux tenter de faire deux colonnes avec ce même algo­rithme.

    Si je trouve un point pivot et que je découpe la gale­rie en deux sections, je pour­rai choi­sir de les enchaî­ner verti­ca­le­ment ou hori­zon­ta­le­ment sans avoir besoin de calcu­ler quoi que ce soit en javas­cript.

    Si j’ai vrai­ment une grande surface en hauteur et en largeur, un mur d’images à la Flickr est peut-être plus perti­nent mais je ne m’in­ter­dis pas de simple­ment garder deux colonnes de grande largeur. Je vais attendre de voir ce que ça donne avant de faire mon choix.

     

  • J’ai un problème (sécu­rité) avec Dash­lane – Vous m’ai­dez ?

    Je vous ai déjà parlé de Dash­lane. Fran­che­ment c’est le bonheur.

    Puis je suis tombé aujourd’­hui sur un échange à propos de faiblesses dans le code d’auto-comple­tion de Last­pass. Et là, même si le problème de Last­pass ne se retrouve pas sur Dash­lane j’ai eu un malai­se… « Merde, mes exten­sions Chrome et Fire­fox arrivent à tirer des mots de passe de Dash­lane un peu trop faci­le­ment »

    * * *

    Dash­lane a une app native très clas­sique. C’est elle qui a les mots de passe (chif­frés), que je déver­rouille avec mon mot de passe maître. À partir de la quelle je peux copier les iden­ti­fiants et mots de passe.

    De cette app native, j’ai pu instal­ler les exten­sions Chrome et Fire­fox. Je suppose que ça construit une exten­sion qui m’est spéci­fique, avec des jetons d’ac­cès qui sont diffé­rents chez chacun.

    Ces exten­sions peuvent libre­ment ajou­ter et récu­pé­rer les mots de passe depuis l’app native. Rien à faire, rien à déver­rouiller. Pour peu que l’app native soit ouverte, ça fonc­tionne.

    * * *

    Qu’est-ce qui m’em­pêche de créer un script ou une appli­ca­tion qui ouvre le profil Fire­fox sur le disque, y trouve les fichiers de l’ex­ten­sion Dash­lane, y lit les jetons d’ac­cès et s’adresse à l’app native Dash­lane en cours d’exé­cu­tion pour en extraire tous les mots de passe ?

    Ok, il faudrait que mon script ait accès à mon disque dur, ce qui est en soi un problème, mais si j’uti­lise Dash­lane ce n’est pas pour que n’im­porte quelle appli­ca­tion qui a accès à mon disque puisse accé­der à mes mots de passe en clair aussi faci­le­ment.

    En réalité c’est proba­ble­ment plus complexe. Un petit tour dans les fichiers javas­cript de Dash­lane me fait dire qu’il y a du chif­fre­ment en jeu et qu’il faudrait quelques jours de boulot pour réuti­li­ser le même canal de commu­ni­ca­tion. Rien d’im­pos­sible cepen­dant.

    En fait je peux même proba­ble­ment récu­pé­rer tout le fichier Javas­cript et l’uti­li­ser en tapant direc­te­ment dans l’API interne plutôt que de mimer ce qu’elle sait faire.

    Tout au plus il y a peut-être un système qui iden­ti­fie le nom de l’ap­pli­ca­tion source qui s’adresse à l’app native Dash­lane. Je doute que ça aussi soit incon­tour­nable.

    * * *

    Bref, c’est moi où j’ai un gros problème avec Dash­lane ? Si un techos de Dash­lane passe par là, sans forcé­ment révé­ler tous les méca­nismes dans le détail, j’ai­me­rais bien savoir pourquoi je peux faire confiance au système mis en place.

  • Logi­ciel de mot de passe

    Ça faisait long­temps que je voulais passer à un gestion­naire de mot de passe un peu évolué.

    J’ai tenté par deux fois de me mettre à Last­pass. Je ne saurais dire pourquoi mais les deux fois j’ai fini par peu l’uti­li­ser, le lais­ser dans un coin et reve­nir à mes habi­tudes.

    Depuis peu de temps j’ai tenté avec Dash­lane. Il n’y a pas de client Linux, l’in­ter­face web et en lecture seule mais son gros avan­tage est de pouvoir fonc­tion­ner tota­le­ment offline. Mieux : C’est une entre­prise française. Même si le chif­fre­ment fait que mes données sont théo­rique­ment illi­sibles par le pres­ta­taire, j’ai un peu plus confiance que dans une société US.

    Peut-être est-ce l’er­go­no­mie mais cette fois la sauce a pris. J’ap­pré­cie le login auto­ma­tique sur le navi­ga­teur. J’aime le fonc­tion­ne­ment de l’app mobile qui se contente de l’em­preinte digi­tale si l’app a déjà été déver­rouillée récem­ment par le mot de passe maître.

    Pour le même prix il m’a signalé les sites où mon mot de passe était trop faible ou obso­lète (genre le mot de passe Yahoo qui n’a pas changé depuis les failles) et a su le chan­ger d’un simple bouton sans me deman­der d’al­ler faire les mani­pu­la­tions moi-même sur les diffé­rents sites.

    Il me reste la fonc­tion­na­lité de partage que je n’ai pas testée mais j’ai bon espoir que ça résolve nos diffi­cul­tés de comptes commun avec ma femme.

    Enfin la bonne surprise c’est le mode urgence : Permettre à un tiers iden­ti­fié de récu­pé­rer ma base de mots de passe si je ne décline pas sa requête après un certain nombre de jours. Quelque part ça peut faire office de testa­ment numé­rique, même si ça n’est pas parfait.

    Depuis on m’a pointé vers le récent Enpass, qui ne demande que 10 € pour l’achat à vie de l’app mobile (contre 40 € par an pour le premium Dash­lane). Il a le support Linux, le offline, sa synchro­ni­sa­tion se fait par des pres­ta­taires de cloud habi­tuels, mais il n’y a pour l’ins­tant pas de partage possible. Ça vaut peut-être le coup de commen­cer par Enpass si vous n’avez pas besoin de cette dernière fonc­tion­na­lité.

  • Empreinte digi­tale et sécu­rité

    Nouveau télé­phone avec un capteur d’em­preinte digi­tale. Il n’y a pas à dire, c’est super pratique et le compro­mis de sécu­rité est plutôt bien adapté au cas d’usage.

    Compro­mis ? C’est évident pour les geeks sécu­rité alors je m’adresse aux autres. Tout est histoire de compro­mis entre la faci­lité d’uti­li­sa­tion et le niveau de sécu­rité recher­ché.

    L’em­preinte digi­tale est facile à utili­ser mais assure un assez mauvais niveau de sécu­rité.

    Security - xkcd 358
    Secu­rity – xkcd 538

    Donc, qu’est prêt à faire celui qui veut accé­der à vos données ?

    Si vous ne vous cachez pas sérieu­se­ment à chaque fois que vous déver­rouillez votre télé­phone, le code PIN ou le schéma à la Android ne sécu­risent que contre le vol à l’ar­ra­chée, quand le voleur ne vous connait pas et ne peut rien obte­nir de vous.

    Si votre voleur est prêt à fouiller votre télé­phone sans votre accord, il est certai­ne­ment prêt à loucher par dessus votre épaule pour voir votre PIN ou votre schéma quand vous le tracez. Pour un schéma il peut même parfois se conten­ter des traces de doigts sur l’écran pour peu que vous ayez oublié de les effa­cer.

    C’est *là* que l’em­preinte digi­tale est inté­res­sante. Elle est est simple à utili­ser mais ne peut pas être repro­duite sans un mini­mum d’ef­forts.

    * * *

    Si par contre votre attaquant est prêt à être… méchant, alors l’em­preinte digi­tale est la pire des solu­tions.

    Le plus simple : Même un grin­ga­let peut vous prendre par surprise et retour­ner votre poignet dans votre dos pour vous faire déver­rouiller le télé­phone par la contrainte.

    Le plus discret : Récu­pé­rer une de vos empreintes quelque part où vous la lais­sez – c’est à dire partout, tout au long de la jour­née – et créer une fausse empreinte propre à leur­rer le capteur permis­sif du télé­phone. N’im­porte qui en est capable avec assez de volonté.

    Contre quelqu’un prêt à faire un mini­mum d’ef­forts il ne reste qu’un mot de passe ou un schéma suffi­sam­ment complexe que vous gardez confi­den­tiel. Rien ne battra même un bête code PIN si l’ap­pa­reil limite le nombre de tenta­tives.

    Le problème c’est que tour­ner le dos à vos proches à chaque déver­rouillage de télé­phone puis s’as­su­rer de ne pas lais­ser de traces sur l’écran, ce n’est pas neutre au jour le jour. Bien entendu, si vous allez dans cette direc­tion, il faut que le disque du télé­phone soit chif­fré, que le télé­phone se verrouille immé­dia­te­ment quand vous le lais­sez sur une table, et que l’éven­tuel schéma à tracer soit très complexe. Sinon autant reve­nir à l’em­preinte digi­tale.

     

  • Les meilleurs commen­taires ne s’écrivent pas

    Les meilleurs commen­taires sont ceux que l’on n’a pas besoin d’écrire.

    Lorsque l’on a besoin d’écrire un commen­taire, le plus souvent, c’est que notre code n’est pas aussi clair et propre qu’il devrait l’être.

    Je suis bien d’ac­cord avec la cita­tion du dessus, mais elle n’im­plique aucu­ne­ment ce qui suit.

    Damned, un déve­lop­peur faisant une telle faute logique ? On devrait savoir que les rela­tions de cause et consé­quence ne s’in­versent pas. Si les meilleurs commen­taires sont ceux qu’on n’a pas besoin d’écrire, personne n’a dit qu’on ne devrait pas écrire les commen­taires !

    function main() {  
      let imageName = 'test.png'
    
      // Get the extension off the image filename  
      let pieces = imageName.split('.')
      let extension = pieces.pop()
    }
    

    […] ça ressemble beau­coup trop à une excuse : « Mon code est moche / compliqué mais c’est pas grave je vais l’ex­pliquer dans un commen­taire » au lieu de le nettoyer.

    Donc oui, ce commen­taire est à peu près inutile. S’il le devient c’est que le code est proba­ble­ment inuti­le­ment complexe et pour­rait être amélio­rer avec l’uti­li­sa­tion de fonc­tions tierces bien nommées.

    Si effec­ti­ve­ment vous commen­tez ainsi (pas de honte, ça arrive à tous), ça ne sert à rien.

    Par contre, un commen­taire qui dit pourquoi vous avez besoin de l’ex­ten­sion ça ne serait pas forcé­ment du luxe. Peut-être que ce commen­taire manquant me permet­trait de savoir si le compor­te­ment face à un fichier « .test.png » est une anoma­lie ou est volon­taire. Là je suis bien à mal de savoir sans lire tout le code source en détail pour cher­cher l’in­ten­tion du déve­lop­peur.

    Bref, si vous croyez qu’un code source clair remplace les commen­taires, c’est que vous n’avez pas encore compris ce qu’il faut écrire dans les commen­taires.

    /**
     * Get the extension of the file
     * 
     * @param {string} filename - The filename
     * @return {string} the extension of the file  
     */
    function getFileExtension(filename) {  
      let pieces = imageName.split('.')
      return pieces.pop()
    }

    Dites moi qu’il y a une infor­ma­tion dans ce commen­taire que vous n’aviez pas en lisant le code !

    Non. Par contre dans un IDE évolué, ce type de code me permet d’avoir confir­ma­tion du rôle de la fonc­tion quand je la tape ou quand je la lis plutôt que de devoir m’in­ter­rompre pour aller ouvrir le fichier corres­pon­dant et lire tout le code source. D’au­tant que là ce sont deux lignes mais parfois, même si c’est clair, c’est quand même plus long à lire.

    C’est aussi avec les commen­taires de @ que l’IDE me donnera le rôle des diffé­rents para­mètres. Oui, le plus souvent ils devraient être évident mais est-ce toujours le cas ? Grâce à ce jsdoc je saurais sans ouvrir la fonc­tion que je dois y rensei­gner un nom de fichier et pas un chemin complet. Bien m’en a pris parce que « ./test.png » aurait provoqué de jolies erreurs à l’exé­cu­tion de mon programme. Je saurai aussi si j’ai ou pas un argu­ment option­nel et pourquoi.

    Toujours avec un outillage évolué, la mention du string permet­tra d’iden­ti­fier des erreurs de typage malen­con­treuses. Ça pour­rait être dans le proto­type de la fonc­tion avec flow ou ici dans le commen­taire, peu importe, seule la syntaxe diffère.

    Main­te­nant même ici, le problème n’est pas avec le commen­taire mais avec ce qu’il dit. Ça n’au­rait pas été du luxe que la fonc­tion décrive que ce qu’elle consi­dère être une exten­sion dans le cas d’un « test.tar.gz ».

    Là où le code est propre le commen­taires ne sera qu’une redon­dance sans grand inté­rêt que le cerveau appren­dra vite à igno­rer.

    Et si c’était le contenu des commen­taires qu’il fallait remettre en cause et pas leur présence ?

    Sinon oui, je règle mes outils pour que les commen­taires s’af­fichent en gris clair. Pas qu’ils soient sans inté­rêt mais parce que j’ai deux niveaux de lecture suivant que je travaille le corps de la fonc­tion (et là je veux igno­rer les commen­taires) ou que je l’étu­die la première fois.

    Le seul problème que je rencontre aujourd’­hui se produit dans le cadre de project avec une docu­men­ta­tion publique auto-géné­rée. Comment éviter la redon­dance tout en faisant en sorte que la docu­men­ta­tion géné­rée à partir de mes commen­taires soit complète.

    Si la docu­men­ta­tion géné­rée pour les déve­lop­peurs a besoin des commen­taires, c’est que peut-être l’as­ser­tion comme quoi le code est aussi simple et effi­cace à lire que les commen­tai­res… est peut-être fausse. Je dis ça je dis rien.

  • [Lecture] The Real Name Fallacy

    Not only would remo­ving anony­mity fail to consis­tently improve online commu­nity beha­vior – forcing real names in online commu­ni­ties could also increase discri­mi­na­tion and worsen harass­ment.

    The Coral Project (Mozilla)

  • Attri­buer une cita­tion en HTML

    On parle de HTML 5, le web n’est qu’une multi­tude de liens, et on ne sait toujours pas attri­buer une cita­tion. Comment est-ce que je source le Au-revoir de Valéry Giscard d’Es­taing ?

    <blockquote>Au revoir.</blockquote>

    Il y a bien un attri­but cite dans <blockquote>. Je peux y mettre un lien mais ce lien ne sera ni affi­ché ni action­nable dans les navi­ga­teurs.

    Je peux aussi mettre un texte dans un attri­but data-source et l’af­fi­cher avec le lien via quelques geeke­ries CSS. C’est un peu mieux mais le lien n’est ni cliquable ni sélec­tion­nable pour un copier-coller : Plus frus­trant du meurs.

    Je ne parle même pas d’al­ler indiquer la date dans la cita­tion avec la balise <time>, là on entre­rait dans la science fiction.

    <style>
    blockquote::after { content: "-- " attr(data-source) ", " attr(cite);
    </style>

    La solu­tion du pauvre – celle que j’uti­lise sur ce blog – c’est de mettre la source direc­te­ment dans le <blockquote>. Il s’agit toute­fois d’un détour­ne­ment du sens des balises, parce que l’at­tri­bu­tion ne fait pas partie du bloc cité.

    D’autres proposent de mettre ça dans un <footer> du <blockquote>, éven­tuel­le­ment avec un <cite>. C’est un peu mieux – le <footer> est offi­ciel­le­ment fait pour être de la méta­don­née à propos du bloc parent – mais ça reste bancal : Le code ne permet pas de sépa­rer ce qu’on cite de l’at­tri­bu­tion elle-même.

    <blockquote>
      Au revoir.
      <footer>
        -- Valéry Giscard d'Estaing, 
        <cite>
          <a href="http://www.ina.fr/video/I08358793">
            dans son discours du 
            <time datetime="1981-05-19">le 19 mai 1981</time> 
            avant la passation de pouvoir à François Mitterrand
          </a>
        </cite>
      </footer>
    </blockquote>

    La balise <figure> peut venir à notre rescousse. On englobe le <blockquote> dans la <figure> et on ajoute un <figcaption> pour l’at­tri­bu­tion, avec éven­tuel­le­ment un <cite> correc­te­ment placé.

    <figure>
      <blockquote>Au revoir.</blockquote>
      <figcaption>
        -- Valéry Giscard d'Estaing, 
        <cite>
          <a href="http://www.ina.fr/video/I08358793">
            dans son discours du 
            <time datetime="1981-05-19">le 19 mai 1981</time> 
            avant la passation de pouvoir à François Mitterrand
          </a>
        </cite>
      </figcaption>
    </figure>

    Quelque part j’ai encore mal parce qu’un robot ne reliera pas l’at­tri­bu­tion et la cita­tion.

    Reste aussi que la défi­ni­tion de <figure> indique que l’em­pla­ce­ment de son contenu dans le texte envi­ron­nant n’a pas d’im­por­tance, ce qui ne me parait pas forcé­ment vrai pour une cita­tion.

    On sait expri­mer tout ça à desti­na­tion des moteurs de recherche en rdfa, en micro data ou en json-ld, le tout avec un voca­bu­laire normé, mais on n’a toujours rien pour les données visibles de l’uti­li­sa­teur. Que la spéci­fi­ca­tion HTML 5 ait été diri­gée par un éditeur de Google ne peut être qu’une coïn­ci­dence.

  • Je cherche des équipes construi­sant une progres­sive web app

    Idéa­le­ment en France ou avec un télé­tra­vailleur en France, mais n’hé­si­tez pas à en propo­ser des étran­gères qui font des choses bien

    Idéa­le­ment une équipe chez un éditeur produit et pas des pres­ta­taires de service, mais ça peut aussi être une équipe de presta dédiée et consti­tuée qui en fait sa spécia­lité (donc pas juste une SSII qui a travaillé sur un projet)

    Idéa­le­ment une équipe, mais si vous n’avez que de très bon exemples de sites, je suis preneur aussi

    Vous avez des noms ?

  • Un nouveau langage

    De temps en temps j’aime bien explo­rer quelque chose de nouveau côté program­ma­tion.

    J’ai tenté de faire une petite remise à zéro en Javas­cript il y a peu. J’y trouve plein de points posi­tifs objec­tifs mais je ne vois pas la moti­va­tion pour mes projets perso. Je n’ai pas d’atomes crochus avec la syntaxe, le langage lui-même ne m’ap­porte pas suffi­sam­ment de nouveau pour que la décou­verte me motive, et il y a plein de trucs qui me fatiguent dans l’en­vi­ron­ne­ment.

    J’ai vu Elm et j’aime bien plusieurs idées mais je cherche quelque chose qui tourne aussi en ligne de commande.

    J’ai tenté Crys­tal. Le langage est sympa : inspiré de ruby, infé­rence de types, compilé et perfor­mant, liai­sons simples avec toutes les libs en C. J’ai quelques reproches (genre l’ab­sence d’un type « Nume­ric » qui m’abs­trait des types bas niveau) mais je me suis surtout dit « à quoi bon » quand j’ai eu une excep­tion à l’exé­cu­tion lors de ma première jour­née. À quoi bon s’im­po­ser un typage statique si c’est pour que les problèmes les plus courants soient encore gérés à l’exé­cu­tion sans même un aver­tis­se­ment à la compi­la­tion ?

    Dans l’idéal j’ai­me­rais tester un envi­ron­ne­ment où quasi­ment tout est détecté en statique et qui ne soit pas aussi verbeux qu’un Java ou aussi bas niveau qu’un C. Vous avez quelque chose à me conseiller ?