L'écran du programmeur

Il ne faut à mon avis jamais négliger l’importance d’un bon écran pour un programmeur. C’est le genre d’affirmation qui aura sans doute un goût d’évidence pour beaucoup de personnes dans l’informatique, peut-être moins pour les autres, mais il semble en tout cas que c’est le genre de règle que personne ou presque ne suit. Combien d’entreprises estiment qu’un écran d’entrée de gamme, qu’un 19″ est suffisant pour n’importe quel développeur ? Depuis que j’ai eu la chance de travailler avec un écran de 24″ au bureau, ce qui pourrait passer pour un luxe me semble aujourd’hui le minimum acceptable, et un critère dans l’évaluation du sérieux d’une entreprise.

Si vous êtes un bricoleur du dimanche, lorsque vous avez besoin d’outillage, il est vraisemblable que l’entrée de gamme soit suffisante, et même adaptée. Pour un professionnel tel qu’un électricien ou un plombier, ce matériel est son outil de travail : il est impensable d’utiliser de l’entrée de gamme, il lui faut du matériel de pro, celui qui est solide, de qualité et en conséquence, cher. Il lui faut le haut du rayon. Toute autre gamme sera inadaptée, car ces outils ne lui permettront pas de travailler correctement.

Il en va de même pour un programmeur. Son écran est son outil de travail. Le programmeur n’est certes pas un professionnel de l’image et n’a donc pas besoin d’un écran à 2500€ avec un rendu de couleurs qui tient compte du temps de chauffe. Mais un 19″ n’est pas suffisant pour autant. Qu’une entreprise fasse travailler ses développeurs avec quoi que ce soit de moins de 22″ est même très révélateur : c’est considérer qu’ils peuvent se contenter d’outils de bricoleur du dimanche.

Pourquoi cela, pourquoi ce parallèle avec la plomberie ? Un écran est un écran, et on n’use pas un écran comme on use un tournevis ou un coupe-tuyau. Serait-ce un simple caprice consistant à estimer que la taille et le prix de la machine doivent être à la mesure de son égo ? Évidemment pas, d’autant que vu à quel point les écrans de très bonne qualité sont devenus abordables, il en faudrait plus pour flatter l’ego d’un programmeur. :-)

Tout d’abord un écran plus grand permet d’afficher plus grand : cela signifie moins de fatigue oculaire et donc une plus grande capacité de travail. Comme dans beaucoup de métiers (malheureusement serais-je tenté d’ajouter) un programmeur passe la journée devant un écran, à réaliser des tâches qui demandent une forte concentration. Réduire toute source de fatigue périphérique permet de mieux se focaliser sur sa tache.

Ensuite un écran plus grand permet d’afficher simultanément plus de choses, notamment plus d’applications. Un programmeur passe typiquement sa journée à manipuler un nombre élevé d’entre elles: son éditeur, le programme qu’il est en train de développer, la sortie ou les logs du programme, l’outil de debug, le terminal (quand ce n’est pas une demi douzaine d’instances de ce dernier), l’explorateur de fichiers, la documentation, le navigateur web… Il ne travaille bien entendu pas avec tous en même temps, ce qui serait d’ailleurs contre productif étant donné que l’on se concentre mieux sur une chose à la fois, mais couramment avec deux ou trois en parallèle. Suivre à la fois éditeur, programme, sortie et debug est classique par exemple. Plus l’écran est grand, plus il permet de mettre ces applications côte à côte et moins il est nécessaire de jongler entre les fenêtres de ces programmes.

Enfin un écran plus grand permet d’afficher plus de texte. Parmi tous l’éditeur est sans doute l’outil que le programmeur utilise le plus, puisque son travail consiste en résumé à y écrire, mais aussi lire, du code. Bien qu’il soit de bonne pratique de travailler sur du code concis – fonctions courtes, fichiers courts – il n’est pas rare de travailler sur des fichiers de quelques centaines de lignes. Un tel fichier ne peut être affiché dans son intégralité, et ce serait vain du fait de la quantité trop importante d’informations assenée. Afficher une partie conséquente du fichier permet néanmoins de donner du contexte visuel facilitant la localisation d’éléments et d’éviter de devoir défiler en permanence. De plus quelque soit le projet, pour une tâche donnée, il est courant de devoir manipuler simultanément au moins deux et souvent trois fichiers différents, quand ce n’est pas beaucoup plus. Avec un grand écran il est possible d’afficher simultanément plusieurs fichiers tout en gardant ce contexte visuel. Il n’est alors plus nécessaire de jongler entre ces fichiers à chaque fois que l’on cherche une information, mais simplement de déplacer le regard.

Même le plus doué des jongleurs de raccourcis clavier avec une configuration de gestionnaire de fenêtre soignée aux petits oignons ne tient pas la comparaison en terme de vitesse face à quelqu’un à qui il suffit de déplacer le regard.

En conclusion le coût d’un écran de taille décente, ou même de plusieurs d’entre eux, est vraiment risible devant le gain en productivité pour un programmeur qui doit passer l’essentiel de son temps dessus. Si vous n’êtes pas convaincu, je vous invite à lire d’autres arguments et exemples qui me donnent même l’impression d’être encore très modéré.

Une parenthèse sur l'iPad d'Apple et pourquoi il va cartonner

La semaine dernière Apple ouvrait sa messe tant attendue par beaucoup, notamment la communauté des fans et celles des enthousiastes du tactile : le Keynote. Cela devait mettre fin aux rumeurs galopantes sur la sortie d’une tablette tactile par Apple, révéler ses caractéristiques, son apparence, son nom et son prix. À l’issue de ces révélations, beaucoup ont été déçu et j’en fais partie. Pourtant je suis persuadé que l’iPad va être un énorme succès commercial et même dominer le marché.

Tout d’abord pourquoi une telle déception ? Personne n’attendait de l’iPad qu’il brille dans le noir ou qu’il ait un affichage tout droit sorti de film de science fiction. Mais à le voir, on peut trouver que c’est un produit qui est en retard sur son marché : des tablettes tactiles, il en existe déjà, et celle-ci n’apporte rien de nouveau techniquement. Rien à voir avec l’iPod qui ou le Mac Book Air, qui lors de leur sortie se plaçaient très au dessus de l’existant. D’autre part le design est très décevant : un vulgaire iPhone en plus grand. Il me semble même comporter des erreurs grossières : un clavier tactile alors que l’on sait que cela ne marche que mal, une forme courbée qui empêche de le poser sur une table pour travailler, une interface logiciel d’iPhone, qui si elle est très bien pour un PDA, semble inadaptée à un format de cette taille. Enfin, on s’y attendait, c’est un système complètement fermé dont Apple a le secret.

Je ne compte par contre pas l’absence de caméra, pourtant très critiquée, comme un réel défaut. Cela me semble en effet être une fonctionnalité somme toute mineure : il faut laisser les habitudes se faire avant que faire de la visioconférence avec cette tablette se présente comme un besoin.

Mais alors pourquoi si je lui trouve tous ces défauts, et surtout si j’estime que la concurrence fait déjà mieux techniquement, est-ce que je suis convaincu de son succès ? Parce que c’est Apple ? Pas vraiment. Certes Apple a une force de frappe commerciale et un don pour donner envie d’acheter ses produits qui ont déjà fait leurs preuves. Mais dire que cela va marcher parce que d’habitude c’est le cas est sans intérêt. Non, la vraie raison, le point qui va faire toute la différence, d’après moi, c’est la communauté de développeurs iPhone.

Les interfaces tactiles sont quelque chose de relativement nouveau dans les produits grand public. Les éditeurs ont un énorme manque d’expérience avec ce type d’interface utilisateur, et d’une façon générale une certaine réticence à s’adapter à tout ce qui est nouveau (je pense notamment aux nombreux jeux sur Wii et sur iPhone qui ne tirent aucunement partie de leurs nouveaux types d’interactions et qui ne sont que de vulgaires portages de gameplay classiques). L’écosystème des applications sur tablettes a donc toutes les chances d’être un joyeux bordel parfaitement inutilisable, très hétérogène et avec des interactions très pauvres.

Or le système d’AppStore tord le cou d’emblée à ces deux problèmes. En effet Apple fournit un SDK, émet des recommandations strictes et contrôle toute application avant d’en permettre la mise sur l’AppStore, ce qui règle le problème de l’hétérogénéité. Mais surtout, surtout, ce SDK est le même que celui qu’utilisent les développeurs iPhone depuis deux ans. Cela signifie qu’alors que la tablette n’est pas encore commercialisée, il existe déjà une énorme communauté de développeurs qui savent déjà ou presque développer pour l’iPad. Elle est là la différence.

Comparez cela aux diverses tablettes tournant sous Windows Seven ou autre…

WordPress et les captcha

Ce blog qui était épargné jusqu’ici a apparemment été récemment découvert par une machine à spam. Un bot s’entête en effet depuis quelques jours à me dire que mon bref article sur les interfaces du futur est génial, que c’est une bonne idée, qu’il devrait essayer, et autres compliments vides de sens, en anglais évidemment. Avec deux ou trois tentatives quotidiennes, ça reste néanmoins limité, sans commune mesure avec les centaines que des blogs plus importants subissent. Mais en grand fainéant cela suffit à me fatiguer au point de chercher une solution.

Celle qui me vient à l’esprit en premier est l’utilisation d’un captcha. Non pas une image d’un texte vu à travers un fond de bouteille de vodka préalablement vidée, mais juste une question absolument triviale, dont l’effet à déjà fait ses preuves à mes yeux. J’avais en effet déjà implémenté une telle fonction sur le forum de l’ancien site de Prologin avec la question « Combien font deux et deux ? », à laquelle il était possible de répondre en chiffres ou en lettres (ainsi que « 42 », à la demande de quelques candidats). Ce bout de code s’était révélé autrement plus efficace que le module Akismet, à l’effet très discutable, puisque l’on n’avait plus jamais eu le moindre problème depuis lors.

Néanmoins, plutôt que d’aller faire rentrer ça à la hache et au marteau comme précédemment, je me suis dit que quelqu’un avait déjà dû le coder sous forme de module, et qu’une petite recherche serait le plus simple. À défaut de m’avoir encore permis de trouver exactement ce que je cherche, elle aura été très instructive.

Tout d’abord il est partout conseillé d’utiliser Akismet, mais ayant constaté son échec sur le forum de Prologin, c’est la première chose que j’ai désactivée en mettant ce blog en ligne. De plus, sur un site plus important, je ne serais pas surpris que le traitement impliqué ait un coût.

Viennent ensuite les captcha à base d’images brouillées. Cette solution me semble poser quatre gros inconvénients.
Exemple de captcha

  • Tout d’abord elle est pénible : ce type de système me gène en tant qu’utilisateur, et j’imagine que c’est le cas de beaucoup d’autres, même sans aller jusqu’à des extrêmes comme ce grand gagnant (j’ai testé aussi, et je vous recommande de le faire, c’est proprement hallucinant : l’inscription au forum de pompiers.fr). La raison en est simple : il s’agit de chiffres et lettres aléatoires, qui n’ont donc aucun sens, et nécessitent de ce fait une certaine concentration.
  • De plus ces images sont souvent difficilement lisibles, comme le résume très démonstrativement cet article.
  • Ensuite la méthode manque d’accessibilité. Accessibilité, ce n’est pas un mot à la mode à sortir quand on n’a plus d’argument contre des technos qui permettent de faire des sites kikoolol avec des trucs qui clignottent. J’ai un ami qui utilise un clavier braille pour aller sur Internet : pour lui, l’accessibilité, c’est ce qui sépare le net auquel il a accès du reste.
  • Enfin, cette solution s’avère finalement peu efficace face aux progrès de la reconnaissance de forme. En janvier une équipe russe publiait en effet avec fracas un article de recherche traitant de reconnaissance de captcha, et annonçait un taux de réussite de 35% sur les images générées à l’époque par le site Yahoo!, ce qui est amplement suffisant pour en ruiner l’effet. D’ailleurs, sans recourir à ces approches techniques, d’autres spammeurs font lire les images par des utilisateurs en les mettant sur des sites à fort trafic, comme par exemple des sites pornographiques.

Au cours de cette recherche, j’ai également vu passer une méthode à base de son. Cette approche me semble être encore pire que la précédente, aussi je ne vais pas m’étendre plus.

Afin de se débarrasser de la gène occasionnée, certains modules tels que WP Captcha-Free ou WP-SpamFree utilisent le Javascript ou les cookies pour automatiser la reconnaissance du type de visiteur. C’est un moindre mal, mais imposer ces fonctions me gène, toujours pour des raisons d’accessibilité.

Enfin on arrive au méthodes textuelles. Les méthodes dites mathématiques (« arithmétiques » corrigeront les plus rigoureux) semblent être les plus populaires, en témoignent les citations fréquentes de Math Comment Spam Protection Plugin par exemple. Les méthodes textuelles on l’avantage de ne plus poser le problème de l’accessibilité, du moins quand elles restent raisonnables. Le lien que j’ai déjà cité donne quelques exemples d’abus qui en plus d’être tristement risibles, sont parfaitement inefficaces. Reconnaître une expression dans un texte et en retourner le résultat est en effet du domaine du trivial, et demander de calculer la deuxième sur deux ne fait que réduire le taux de réussite d’un bot à 50%. Aussi pénible et peu efficace est remarquable.

À mon avis l’efficacité d’un simple texte pour un captcha réside dans l’analyse sémantique qu’elle nécessite. « Quel fruit pousse sur un pommier ? » est une question simple, ne demandant aucune réflexion, mais qui requiert un traitement du langage qui nous met à l’abri pour cinq à dix ans au moins. WP-Gatekeeper fait partie des modules reposant sur cette technique. N’en ayant pas encore trouvé d’autres de ce genre, mon choix n’est cependant pas encore arrêté. Toute suggestion est d’ailleurs bienvenue. :-)

Pour finir, voici un article en anglais où l’auteur semble avoir constaté lui aussi une grande efficacité pour un bout de code écrit rapidement.

Le paradoxe de l'unixien technophile

Prenons un informaticien du monde Unix : sauf exception, ce sera également le plus souvent un technophile facilement enthousiaste en matière d’innovation technologique. Ceci dit il aura probablement également un regard beaucoup plus critique, ne reconnaissant à une nouveauté un caractère novateur que beaucoup plus difficilement qu’un publicitaire par exemple. :-)

Prenons quelque chose de vraiment novateur justement. L’iPhone est d’un point de vue ergonomie sans doute parmi les plus aboutis aujourd’hui (et peut-être le plus lors de sa sortie) : son interface tactile (multitouch, mais à quoi bon préciser ?) est naturelle et intuitive au possible. Attraper des choses, feuilleter des pages ou des photos du bout de doigts, avoir un affichage qui s’adapte à l’orientation de l’écran : c’est ce que l’on veut vraiment, ce que l’on attend même. Ce type d’interaction traîne dans les conférences d’IHM depuis plus de dix ans, et enfin quelqu’un a eu le courage de mettre sur le marché.

Mettez cet objet dans les mains du sujet, et observez sa réaction. Manifestement, il est content. Mais pour faire son bonheur, permettez-lui en plus de faire ceci :

Shell zsh dans un iPhone

Soudain, il retrouve ses marques : il peut faire du ssh, rediriger des ls des sed et des grep. Revenu des années en arrière, il est comblé, il se sent rassuré, il est aux anges, il jubile, il peut frimer et poster un billet sur son blog en parlant de lui à la troisième personne.

Dessine-moi une photo

C’est avec près de deux ans de retard que je viens de découvrir retrievr, un site qui propose de parcourir des photos du site Flickr en dessinant grossièrement ce que l’on cherche.

Bien que l’interface soit assez basique, après quelques tests j’ai pu obtenir très rapidement des photos de chat, d’oeil, de coucher de Soleil, d’éclipse solaire, de tournesol, et de bouche. J’avoue par contre avoir peiné à obtenir une photo de paysage de colline verdoyante, et n’avoir trouvé aucune photo de Jupiter. La majorité des images ne correspondent d’ailleurs généralement pas à ce que l’on cherche, mais force est de constater que ce que l’on cherche s’y trouve en quelques coups de pinceau (la recherche se faisant à mesure que l’on dessine). Cela dépend sans doute aussi du talent artistique de chacun. ;-)

Mais outre la facilité à trouver des sujets en particulier, les autres images renvoyées sont souvent très pertinentes. Enfin que le tout fonctionne en temps interactif dans une interface web est impressionnant je trouve.

Apparemment le fonctionnement semble reposer sur une base d’images déjà analysées, mais ce serait vraiment intéressant de voir un tel outil indexer des images au fur et à mesure de leur arrivée par flux de syndication. Le fait de pouvoir (enfin) rechercher des images par apparence plutôt que par tag est en effet vraiment agréable.

En tout cas voilà encore un bon moyen de perdre son temps. :-)