Catégorie : Technique

  • Quelques stages pour 2013

    J’avais relayé quelques offres de recru­te­ment ici par le passé. Je vous propose de regar­der quelques possi­bi­li­tés de stages. L’idée c’est de travailler sur des sujets sympa, dans une équipe qui l’est tout autant.

    Il y a un peu de tout, mais l’es­sen­tiel est bien sûr de l’in­no­va­tion et des sujets que vous n’au­rez pas forcé­ment ailleurs. Par contre s’il y a pas mal de sujets, nous n’ou­vri­rons que deux postes, afin de gérer correc­te­ment le volet enca­dre­ment et forma­tion.

    L’en­vi­ron­ne­ment c’est une star­tup sympa, avec un vrai projet, de l’in­no­va­tion, et une vision « ouverte » au coeur de son ADN. Pour ne rien gâcher c’est à Lyon et pas dans la grisaille pari­sienne.

  • Clas­siques XKCD

    Je me demande, sérieu­se­ment, si la connais­sance des clas­siques de XKCD ne doivent pas être vus comme un pré-requis à mes recru­te­ments. Je n’ima­gine pas qu’un déve­lop­peur puisse avoir la culture et la connais­sance du milieu web que je demande en étant passé à côté du #936 par exemple.

    Mon propos n’est pas d’en faire un test de connais­sance, mais de voir si la culture est là, si la personne a vrai­ment exploré le réseau et si sa curio­sité web est aussi éten­due que je le cherche. Même pour ceux qui n’aiment pas, quelqu’un qui traine suffi­sam­ment sur les réseaux est forcé­ment tombé sur XKCD, plus d’une fois.

    Ça ne veut pas dire que ceux qui ne connaissent pas XKCD sont mauvais, mais peut être juste qu’ils n’ont pas le profil « touche à tout et découvre tout » que je cherche, ou simple­ment que leur techno première n’est pas le web.

  • Blanc sur orange, c’est noir sur noir

    Parce que ça m’a servi récem­ment, ça peut servir à d’autres.

    Du vert clair sur du blanc c’est illi­sible. Du marron sur du noir, c’est illi­sible. Quelle est la limite, le blanc sur orange est-il lisible ? Se fier à sa propre vision c’est oublier que tous n’ont pas les mêmes diffi­cul­tés, et oublier le contexte diffé­rent entre le visi­teur et le créa­teur de l’illus­tra­tion.

    Donc pour avoir une mesure objec­tive, je vous recom­mande la lecture du billet Open­web (une ressource excel­lente qui n’est jamais assez recom­man­dée), et l’ou­til Contrast-A. Par la même occa­sion faites atten­tion aux diffé­rents dalto­niens : Ça repré­sente tout de même presque 10% de la popu­la­tion mascu­line.

    J’en profite : même si c’est proba­ble­ment ce que je fais ici, vous avez en géné­ral inté­rêt à ne pas faire du noir sur blanc et encore moins du blanc sur noir. Atté­nuer le noir, voire le blanc, est souvent une bonne idée même si c’est moins épatant lors des présen­ta­tions à la direc­tion.

  • Données person­nelles de twit­ter

    En marge de ma volonté d’effa­cer mes tweets après 48h, j’en ai profité pour faire une demande formelle que me permet la loi : obte­nir l’in­té­gra­lité des infor­ma­tions person­nelles qu’ils connaissent sur moi.

    Pour ceux qui veulent s’y essayer aussi il y a une procé­dure assez claire. Il suffit globa­le­ment de reco­pier les cour­riers pré-rédi­gés et suivre les étapes. Bon, j’ai dit claire mais pas simple. On voit bien la volonté de ne pas propo­ser quelque chose de simple : mail, fax (??), copie de carte d’iden­tité (pourquoi ? ils ne la connaissent pas de toutes façons), recon­fir­ma­tion par mail.

    Toujours est-il que j’ai passé les étapes, voilà ce que j’ai reçu après 9 jours accom­pa­gné d’un zip de 2,6 Mo :

    We're responding to your request for information about your Twitter
    account @edasfr.  We've attached the following files:
    
    - USERNAME-user.txt:  Basic information about your Twitter account.
    - USERNAME-email-address-history.txt:  Any records of changes of the
    email address on file for your Twitter account.
    - USERNAME-tweets.txt:  Tweets of your Twitter account.
    - USERNAME-favorites.txt:  Favorites of your Twitter account.
    - USERNAME-dms.txt:  Direct messages of your Twitter account.
    - USERNAME-contacts.txt:  Any contacts imported by your Twitter account.
    - USERNAME-following.txt:  Accounts followed by your Twitter account.
    - USERNAME-followers.txt:  Accounts that follow your Twitter account.
    - USERNAME-lists_created.txt:  Any lists created by your Twitter account.
    - USERNAME-lists_subscribed.txt:  Any lists subscribed to by your
    Twitter account.
    - USERNAME-lists-member.txt:  Any public lists that include your
    Twitter account.
    - USERNAME-saved-searches.txt:  Any searches saved by your Twitter account.
    - USERNAME-ip.txt:  Logins to your Twitter account and associated IP addresses.
    - USERNAME-devices.txt:  Any records of a mobile device that you
    registered to your Twitter account.
    - USERNAME-facebook-connected.txt:  Any records of a Facebook account
    connected to your Twitter account.
    - USERNAME-screen-name-changes.txt:  Any records of changes to your
    Twitter username.
    - USERNAME-media: Images uploaded using Twitter's photo hosting
    service (attached only if your account has such images).
    - USERNAME-profileimg: Your avatar and background image, if uploaded.
    - other-sources.txt:  Links and authenticated API calls that provide
    information about your Twitter account in real time.
    
    All our records are maintained in UTC, which is the same as GMT for
    time zone purposes. Any files or fields that are blank, or any files
    that have no content between the PGP header and signature block,
    indicate that no responsive records were found.
    
    No records were found of any disclosure to law enforcement of
    information about your Twitter account.  It is our policy to notify
    users of requests for their information prior to disclosure unless we
    are prohibited from doing so by statute or court order.  For more
    information, please see our Guidelines for Law Enforcement at
    http://support.twitter.com/articles/41949-guidelines-for-law-enforcement#section9
    
    We searched for the specific information identified in your request
    and have also provided other information associated with your Twitter
    account.  We have not provided all information that may be related to
    you because of the difficulty of providing it, or because it may not
    be specific to you or may reveal the nonpublic information of another
    user or of Twitter.  If there is other information that you are
    looking for, please let us know so that we can consider your request.
    Our Privacy Policy at http://twitter.com/privacy describes the
    information that Twitter may collect and use and the limited
    circumstances in which your private personal information may be
    shared.
    
    Regards,
    
    The Trust & Safety Team
    Twitter, Inc., 1355 Market Street, Suite 900, San Francisco, California 94103

    Vous note­rez qu’ils s’au­to­risent à ne pas tout donner, parce que c’est diffi­cile (?). Je vais faire suite pour avoir l’in­té­gra­lité, la loi ne les auto­rise pas à sélec­tion­ner ce qu’ils retournent. Je suis entre autre très inté­ressé par les données de profi­ling qu’ils peuvent avoir (et sur lesquelles seront basées les pub) et sur les entre­prises parte­naires à qui ils diffusent leurs données.

  • Parcou­rir des dossiers et filtrer les fichiers n’a jamais été aussi simple avec la SPL de PHP5

    Parcou­rir les fichiers c’est simple avec PHP 5 et la SPL. Ou pas.

    <?php
     class bigFileFilterIterator extends FilterIterator {
         public function accept() {
             $oFileInfo = $this->getInnerIterator()->current();
             return ($oFileInfo->getSize() > 10000);
         }
     }
     $themedir = __DIR__.'/theme';
     $iterator = new RecursiveDirectoryIterator($themedir, FilesystemIterator::SKIP_DOTS);
     $iterator->setFlags(FilesystemIterator::CURRENT_AS_FILEINFO);
     $recursiveIterator = new RecursiveIteratorIterator($iterator);
     foreach(new bigFileFilterIterator($recursiveIterator) as $file) {
         echo $file->getfilename()."n";
     }

    Sérieu­se­ment ? Mais pourquoi ne puis-je pas utili­ser direc­te­ment le Recur­si­veDi­rec­to­ryI­te­ra­tor et dois-je instan­cier un Recur­si­veI­te­ra­torI­te­ra­tor ? Celui qui a conçu cette dernière classe souffre-t-il de bégaye­ment ? Rien que l’ins­tan­cia­tion du premier itéra­teur ne tient pas sur une seule ligne. Un ->getIn­nerI­te­ra­tor()->current() et pas un para­mètre direc­te­ment dans la méthode ->accept() ? Sérieu­se­ment ?

    Montrer les nouvelles possi­bi­li­tés c’est appré­ciable, les quali­fier de simple est une insulte à l’in­tel­li­gence.

    De mon temps on faisait quelque chose comme ce qui suit :

    <?php
     function recursive_filter($path) {
         $dir = dir($path) ;
         while (false !== ($name = $dir->read())) {
             if ($name[0] === '.') return ;
             $new_path = $path.DIRECTORY_SEPARATOR.$name ;
             if (is_dir($new_path)) {
                 recursive_filter($new_path) ;
             } elsif (file_size($new_path) > 10000) {
                 echo $new_path ;
             }
         }
     }
     $themedir = __DIR__.'/theme';
     recursive_filter( $themedir ) ;

    Ce n’était pas plus court, mais pas plus long. On peut entrer dans de longs discours pour savoir si c’était plus simple ou plus complexe, mieux struc­turé ou non, mais la valeur ajou­tée du nouveau code ne saute pas aux yeux côté simpli­cité je trouve.

    À titre d’exemple, en ruby (« find » est dans la lib stan­dard) :

    require 'find'
     theme_dir = File.dirname(__FILE__)."/theme"
     Find.find(theme_dir) do |path|
         next if FileTest.directory?(path)
         puts path if FileTest.size(path) > 10000
     end

    Ou sur Python :

    import os
     themedir = os.path.join(os.path.dirname(__file__), "theme")
     def find_files(directory):
       for root, dirs, files in os.walk(directory):
         for basename in files:
           if not file.startswith("."):
             filename = os.path.join(root, basename)
             yield filenames
     for filename in find_file(themedir)
       if os.path.getsize(filename) > 10000 :
         print filename

    Il peut y avoir des fautes et il peut y avoir mieux dans les diffé­rents langages, et peu importe le nombre de lignes, mais dans les quatre codes précé­dents c’est bien le premier qui me semble complexe.

    Il y a bien d’autres occa­sions de trou­ver PHP « simple », mais pas les itéra­teurs de la SPL.

  • Ce tweet s’auto-détruira en 48 heures

    J’ai commencé à effa­cer mes produc­tions twit­ter. C’est un vieux projet mais j’ai toujours résisté, par peur de regret­ter cette dépu­bli­ca­tion et de ne pas pouvoir reve­nir en arrière. Pour un obsédé des données, c’était un pas diffi­cile à fran­chir. Des événe­ments récents m’ont incité à sauter le pas et à consi­dé­rer mes tweets comme ce qu’ils sont : des échanges éphé­mères qui ne doivent pas survivre hors de leur contexte.

    Je sais qu’il existe diffé­rentes archives, que mes messages pour­ront proba­ble­ment être retrou­vés sur Google ou ailleurs. L’objec­tif n’est pas de les faire dispa­raître, j’as­sume tout ce que je dis. L’objec­tif est de ne pas les faire appa­raître, de garder une certaine opacité sur des échanges de comp­toir.

    Ce tweet s’auto-détruira en 48 heures

    Hier envi­ron 3000 tweets ont été effa­cés (et sauve­gar­dés en local avant). J’ai fait un petit script qui tour­nera désor­mais régu­liè­re­ment et qui effa­cera tout ce qui a plus de 48 heures. La durée de réten­tion elle-même sera certai­ne­ment adap­tée avec l’ex­pé­rience. Il est tout à fait probable que les réponses finissent avec une durée de vie plus courte que les messages publics, tout ceci est encore en réflexion et je suis preneur de vos retours. Je réflé­chis aussi à prévoir une marque discrète qui infor­me­rait mon script qu’il doit effa­cer le message plus tôt, par exemple après une heure, ou plus tard, par exemple après une dizaine de jours, pour gérer les cas parti­cu­liers.

    Le code source de mon petit script est publié, j’ai oublié de préci­ser la licence mais je me vois mal appliquer autre chose qu’une WTFPL à ce type de code. Si vous souhai­tez suivre mon chemin, ça ne demande pas plus d’une petite heure. David avait aussi publié un code simi­laire en python (qui lui garde les 50 derniers au lieu des dernières 48 heures).

    Dans la limite de l’ac­cès qu’au­to­rise Twit­ter

    J’ai effacé 3000 tweets parmi les plus récents mais il en reste plus du décuple. Je me retrouve avec une plate­forme qui ne me permet en fait pas d’ac­cé­der ou d’ef­fa­cer plus que les 3000 derniers messages sans suppri­mer mon compte. C’est là la première leçon : Je ne contrôle pas la plate­forme, et elle se permet de ne pas me lais­ser accé­der à mes propres données. Ce que j’avais pris comme une raison de rete­nir mon geste, ne pouvant reve­nir en arrière, aurait au contraire du renfor­cer ma moti­va­tion.

    Pour aller plus loin Twit­ter ne propose rien. Je peux effa­cer mes tweets si j’en connais les iden­ti­fiants mais les API propo­sées ne me retour­ne­ront jamais les tweets (et donc les iden­ti­fiants) plus vieux que les 3200 derniers. Tout laisse à penser que passé ce quota les messages sont archi­vés sur une autre plate­forme, qui n’a pas la même souplesse ou la même perfor­mance.

    Ce que Twit­ter connaît de nous, et comment le connaître à notre tour

    D’autres personnes ont toute­fois déjà fouillé ce problème, sans solu­tion tech­nique. Il y a par contre une procé­dure liée à une loi euro­péenne qui permet d’avoir accès à l’en­semble de ses propres données. C’est un peu l’équi­valent du droit d’ac­cès de notre loi « infor­ma­tique et liber­tés ». C’est rela­ti­ve­ment simple, quelques échanges de mail et un fax avec décla­ra­tion signée. Pour le même prix on a aussi une visi­bi­lité sur ce que le service a collecté sur nous en plus de nos tweets, et à qui il a partagé ces infor­ma­tions.

    J’ai lancé la procé­dure de mon côté, je vous ferai part du résul­tat. Je ne peux que vous inci­ter à faire de même. L’étude promet d’être plus qu’in­té­res­sante.

  • Pour le paie­ment, les Austra­liens choi­sissent les empreintes digi­tales

    Le numé­rique et les nouvelles tech­no­lo­gies relèvent encore du fantasme pour certains. Ils ont plus l’im­pres­sion de vivre dans la science fiction qu’a­vec les réali­tés.

    Pour le paie­ment, les Austra­liens choi­sissent les empreintes digi­tales. C’est génial, on a l’im­pres­sion de vivre dans le futur, mais c’est peut être le seul avan­tage. Qui s’est posé la ques­tion des contraintes à vali­der ?

    Les empreintes digi­tales ça se vole et ça se fausse sans avoir une équipe qui s’ap­pelle Mission Impos­sible. La sécu­rité réelle est loin de ce qu’on imagine. Les empreintes digi­tales ce n’est pas pérenne non plus. On peut s’abi­mer le doigt : C’est souvent tempo­raire mais parfois perma­nent ou régu­lier. Oh, et on peut se servir de votre doigt après vous avoir donné un bon coup sur la tête.

    Le système de code secret n’est pas parfait non plus mais il a quelques avan­tages. Ceux qui font de la haute sécu­rité avec biomé­trie asso­cient toujours cette biomé­trie avec un système de code secret.

    Plutôt qu’en­vi­sa­ger le progrès tech­no­lo­gie comme un rêve de science fiction, et si nous nous occu­pions à résoudre les vrais problèmes de tous les jours ? Par exemple permettre de payer par carte les petits paie­ments, ou permettre à chacun de rece­voir des paie­ments par carte sur son compte bancaire sans avoir à monter un site de commerce élec­tro­nique avec des abon­ne­ments bancaires bien chers. Savoir si on utilise du NFC, de la biomé­trie ou un code secret, c’est fina­le­ment un faux problème.

  • Sur la réforme du droit d’au­teur

    Les ques­tions de copy­right et droit d’au­teur déchaînent les passions. Le texte de deux membres du Parti Pirate suédois va bien entendu faire de même. Le risque c’est que les réac­tions se forgent avant même la lecture unique­ment sur l’ori­gine du texte.

    Alors voilà, je vous recom­mande quand même la lecture. Je vais même aller plus loin : La lecture est indis­pen­sable. La ques­tion n’est pas de savoir si on adhère à la vision. Même si ces thèses vous font horreur, il y a quelques points et anec­dotes qui néces­sitent réflexion.

    La moitié des conclu­sions de section sont magni­fiques de clarté. Le lien plus haut contient mes mises en valeur mais voici quelques morceaux choi­sis (numé­ro­tés pour faci­li­ter les commen­taires) :

    1. ***

    Si vous pensez que ce serait une bonne chose si tous les échanges illé­gaux de fichiers dispa­rais­saient, c’est votre droit. Mais ça ne change rien à la réalité.

    2. ***

    Il n’y a pas besoin de dédom­ma­ger qui que ce soit parce que le progrès tech­no­lo­gique améliore ce monde.

    3. ***

    Aucun modèle écono­mique ne vaut mieux que nos droits civiques.

    4. ***

    Le copy­right améri­cain découle donc d’un équi­libre entre l’ac­cès du public à la culture et l’in­té­rêt de ce même public à la créa­tion de la culture. C’est essen­tiel. Le public est la seule aune de l’in­té­rêt du copy­right.

    Les déten­teurs de mono­pole, bien que béné­fi­ciant eux aussi du copy­right, ne sont pas des inté­res­sés légi­times, et n’ont pas leur mot à dire dans l’in­ter­pré­ta­tion de la loi, [..]

    Ce point doit être souli­gné. Beau­coup croient que la Cons­ti­tu­tion des États-Unis justi­fie l’exis­tence d’un mono­pole du droit de copie pour que les artistes puissent gagner leur vie. Litté­ra­le­ment parlant, là n’est pas la ques­tion ou l’in­té­rêt du copy­right.

    5. ***

    Pour comprendre l’ab­sur­dité des requêtes de l’in­dus­trie du droit d’au­teur, on doit se deman­der quels droits nous consi­dé­rons acquis dans le monde analo­gique. Ces droits doivent aussi s’ap­pliquer au monde numé­rique, puisqu’au moins en théo­rie, la loi ne fait pas de diffé­rence entre les moyens de commu­ni­ca­tion.

    6. ***

    La peine capi­tale n’a pas réussi à ralen­tir le pira­tage des fabriques des nobles. Même ceux qui connais­saient des arti­sans exécu­tés et tortu­rés conti­nuèrent à pira­ter sur le même rythme.

    7. ***

    Times Labs a analysé le marché de la musique améri­cain pendant les cinq dernières années, en se basant sur les données de la société anglais PRS. La conclu­sion du graphique est très claire :

    Les labels gagnent moins d’argent, les artistes plus, et le montant total est constant.

    8. ***

    Voici quelques faits qui n’ont pas eu lieu lorsque l’in­dus­trie de distri­bu­tion de glace devint obso­lète :

    – Aucun proprié­taire de réfri­gé­ra­teur ne fut pour­suivi en justice pour « produc­tion de son propre froid », igno­rant ainsi les socié­tés de distri­bu­tion de froid.

    – Aucune loi ne fut propo­sée pour rendre les compa­gnies d’élec­tri­cité passibles de pour­suites dans le cas où l’élec­tri­cité qu’elles four­nis­saient aurait été utili­sée d’une manière pouvant porter préju­dice au travail de vendeur de glace.

    – Personne ne demanda une taxe mensuelle aux proprié­taires de réfri­gé­ra­teur au profit du syndi­cat des vendeurs de glace.

    – Il n’y a pas eu de proli­fé­ra­tion de coûteux panels d’ex­perts pour soute­nir combien les vendeurs de glace étaient impor­tants pour l’éco­no­mie toute entière.

    Par contre, la distri­bu­tion mono­po­lis­tique devint obso­lète et l’éco­no­mie en géné­ral béné­fi­cia de cette décen­tra­li­sa­tion.

    9. ***

    35% des télé­char­ge­ments sur Inter­net sont de la porno­gra­phie. L’in­dus­trie porno­gra­phique possède exac­te­ment la même protec­tion du droit d’au­teur que les autres produc­tions audio­vi­suelles. Si les paie­ments d’un forfait cultu­rel sont consi­dé­rés comme un « dédom­ma­ge­ment » pour le télé­char­ge­ment d’œuvres proté­gées par le droit d’au­teur, alors 35% de l’argent devrait immé­dia­te­ment reversé à l’in­dus­trie porno­gra­phique. Pensez vous que les poli­tiques devraient créer un tel système ?

    […]

    Mais si vous souhai­tez exclure le porno d’un système forfai­taire, vous n’au­rez pas seule­ment à créer un « Bureau euro­péen de la mora­lité et des bons goûts », ou quelque chose de simi­laire pour déli­mi­ter ce qui est de la porno­gra­phie ou de l’art. Plus essen­tiel­le­ment, vous ne pouvez plus utili­ser l’ar­gu­ment que le forfait cultu­rel est une “compen­sa­tion” ou est relié au droit d’au­teur.

    Il devient plutôt au mieux une subven­tion cultu­relle aléa­toire, au pire un système de prélè­ve­ment non maîtrisé.

    10. ***

    Les droits d’au­teur et de copie sont des limi­ta­tions des droits de propriété. Ce sont des mono­poles privés accor­dés par le gouver­ne­ment qui limitent ce que l’on peut faire avec des choses que l’on a acquises léga­le­ment.

    […]

    Défendre le copy­right en arguant que les droits de propriété sont sacrés est comme défendre la peine de mort pour meurtre avec la justi­fi­ca­tion que la vie est sacrée. Il peut y avoir d’autres argu­ments, valides, pour défendre ces limi­ta­tions des droits de propriété — mais cette chaîne logique parti­cu­lière ne tient pas.

    La version origi­nale est parta­gée sous la licence CC-BY-SA.

  • Statis­tique du jour : 10 573 … la guerre du spam

    10 573. C’est le nombre de spam par mail que j’ai reçu ces 30 derniers jours.

    C’est bien évidem­ment plus que le nombre de cour­riers réels, pas loin d’un ratio de 1 à 10. C’est surtout plus d’une quin­zaine par heure en flot continu. Je n’ima­gine plus une adresse sans filtre anti-spam.