« So yeah, I’m fucking busy. »

Dans sa dernière newsletter envoyée hier, Louis CK s’excuse longuement d’envoyer beaucoup plus de newsletters récemment pour promouvoir sa nouvelle série. J’ai beaucoup aimé ce paragraphe.

Vous vous demandez peut-être, ou avez envie de me demander, mais à l’intérieur de vous même, « Pourquoi est-ce que tu ne laisses pas les gens se désinscrire d’une liste dédiée aux e-mails de Horace and Pete ? ». Et bien, le fait est que j’ai demandé à mes gens du web de créer des options de catégories pour mes listes d’e-mails. Et pour être juste avec eux, ils ont fait exactement ça. Et ils m’ont envoyé un e-mail il y a quelques jours, me montrant ces options et me demandent de les tester et de les valider. Et je n’ai pas regardé. Parce que je suis très occupé en ce moment à faire plein de choses comme, par exemple, emmener mes enfants à l’école le matin, aller les chercher plus tard, demander poliment au chien de ne pas mâcher des choses, construire un abri anti-Trump comme tout le monde, créer et payer pour une série télévisée et vous la distribuer directement. Donc oui, putain, je suis occupé. Désolé d’être vulgaire.

J’ai arrêté de compter le nombre de projets qui ont glissé à cause de clients trop occupés pour répondre. Mais Louis CK illustre parfaitement à quel point répondre à des « gens du web » n’est pas une priorité. Et c’est peut-être aussi bien comme ça.

La technique des « Fab Four » pour créer des e‑mails responsive sans media queries

Je pense avoir trouvé une nouvelle façon de créer des e‑mails responsive, sans media queries. La solution implique la fonction CSS calc(), et les trois propriétés width, min-width ou max-width.

Ou comme je me plais à les appeler une fois toutes réunies : les « Fab Four » (en CSS).

calc() & width & min-width & max-width.

Lire la suite de « La technique des « Fab Four » pour créer des e‑mails responsive sans media queries »

Cet article est une archive du blog précédemment hébergé sur emails.hteumeuleu.fr.

La dette d’idées

Vu sur Hacker News, le concept de « dette d’idées » présenté par Jessica Abel.

La dette d’idées est quand vous passez trop de temps à vous représenter à quoi un projet va ressembler, trop de temps à penser à quel point ça va être génial de l’avoir terminé et livré au monde entier, trop de temps à imaginer à quel point vous aurez l’air cool, à quel point tout le monde va vous demander, combien d’argent vous allez vous faire. Et beaucoup trop peu de temps à faire le projet.

C’est tout moi, ça. J’ai des tas d’idées de projets, d’articles, de choses vers lesquelles j’aimerais me lancer. Mais je passe une bonne partie de mon temps à rêvasser et imaginer les suites de ces idées une fois lancées plutôt que n’en réaliser ne serait-ce qu’une seule.

Parfois même, j’en parle à des gens, peut-être en espérant avoir des retours me motivant davantage. Je me suis rendu compte après ma conférence à Paris Web en 2014 que j’avais déjà parlé de l’idée de cette conférence à quelqu’un en 2012. C’est dans ce cas plutôt satisfaisant de se rendre compte qu’on a réussi à passer à l’action, même s’il a fallu du temps.

Et j’aime vraiment l’écho que l’expression « dette d’idées » fait à l’expression de « dette technique ». La façon dont je vois les choses, la dette technique nous freine dans le présent à cause du passé. La dette d’idées nous freine dans le présent à cause du futur.

Two product principles often forgotten

J’ai enfin lu cet article gardé dans mes favoris depuis le mois dernier sur le design de produit et le design itératif. La conclusion est très bien :

Vous ne pouvez pas devenir bon dans quelque chose sans avoir la liberté d’y être mauvais pour commencer. Si vous croyez que chaque idée que vous présentez doit avoir l’air géniale, ne soyez pas surpris si vous n’en avez que très peu. Si vous en avez très peu, ne soyez pas surpris si vous en choisissez une mauvaise. Quand vous choisissez une mauvaise idée, l’itération ne la rendra pas bonne, ça la rendra juste achevée.

Snowball Surprise: Shaking the Email

Un exemple d’animation un peu kitsch mais amusante chez FreshInbox : comment « secouer » un e-mail en ajoutant une animation sur le conteneur principal d’un e‑mail.

Cet article est une archive du blog précédemment hébergé sur emails.hteumeuleu.fr.

Gmail App on Android tries to shrink your email with ‘munged’ classes

Le mois dernier, le blog Mosaico a fait un travail formidable de recherche dans le code source d’Android. L’auteur a découvert ce qui supposément peut être associé au comportement de Gmail forçant le redimensionnement d’e-mails.

Dans certains cas, Gmail va ajouter une classe .munged (en anglais selon Wikipedia, « une série de changements potentiellement destructifs ou irrévocables ») à toutes les <table> et <td>. Cette classe va appliquer un width:auto !important;, causant les dommages qu’on peut imaginer.

Cet article est une archive du blog précédemment hébergé sur emails.hteumeuleu.fr.

Super Mail Forward, cinq mois après

J’ai publié une traduction en anglais de mon retour sur la création de Super Mail Forward, un e-mail transférable évolutif. Cinq mois après, il y a deux changements principaux.

AOL a corrigé le bug de remplacement des images en background dans une balise <style>. J’ai donc trouvé une autre bidouille pour activer des styles sur AOL. Ou plus précisément, pour ne pas que des styles s’activent sur AOL. En fait, une balise <style> contenant une image de fond à l’URL non supportée (par exemple background:url('#');) sera totalement supprimée. Dans l’exemple suivant, ces styles s’appliqueront donc partout (ou presque), sauf sur AOL.

<style type="text/css">
   .step1 { background:url('#'); }
   .step1 .W { background:#fff!important; }
   .step1 .X { background:#f8d81f!important; }
   .step1 .Y { background:#d89f37!important; }
   .step1 .Z { background:#000!important; }
</style>

Microsoft a commencé à remplacer Outlook.com par le même webmail qu’Office 365 (aussi appelé Outlook Web App). Ce webmail ne supporte pas les sélecteurs d’attributs. Pour cibler des styles uniquement sur ce webmail, on peut donc écrire le sélecteur suivant…

<style type="text/css">
   [owa] .toto { … }
</style>

…qui sera interprété comme :

<style type="text/css">
   .rps_123a .x_toto { … }
</style>

Cet article est une archive du blog précédemment hébergé sur emails.hteumeuleu.fr.

La publicité n’est pas le modèle économique du Web

Aujourd’hui, Brendan Eich (co-fondateur de Mozilla et créateur de JavaScript) a présenté sa nouvelle société et un nouveau navigateur basé sur Chromium : Brave. Et j’ai tiqué en lisant une partie de son annonce.

Tout le monde parle du blocage de publicité. Les bloqueurs peuvent rendre l’expérience utilisateur du Web bien meilleure. Mais comme l’a noté Marco Arment, ça ne semble pas juste pour de nombreuses personnes. C’est comme du parasitisme, ou même comme le début d’une guerre. Vous ne cliquez peut-être jamais sur une publicité, mais même réaliser l’affichage d’une publicité peut avoir une petite valeur. Avec suffisamment de personnes qui bloquent des publicités, le modèle de financement principal du Web est en péril.

Selon moi, la publicité n’est pas le modèle économique du Web. À vrai dire, je pense que le Web n’a pas de modèle économique. Dire que la publicité est le modèle économique du Web, c’est comme dire que la prostitution est le modèle économique de l’Amour.

Cependant, certaines sociétés ont effectivement fait le choix de la publicité comme principal modèle économique sur le Web. C’est le cas notamment de certains sites de presse, dont le financement tient désormais à un énième article sur Nabilla, Apple, ou je ne sais quel sujet qui va pouvoir générer un maximum de pages vues. D’autres ont toutefois eu le courage de dire merde à la pub.

Ça va faire près de vingt ans que j’ai accès au Web. Et quasiment autant de temps que j’écris, partage, et publie gratuitement du contenu en ligne. Je n’ai pas vraiment de modèle économique dans tout ça. Je le fais parce que ça me plaît. Je le fais parce que j’apprends du retour des autres. Je m’enrichis, mais pas financièrement. Et ça vaut largement la quarantaine d’euros annuelle en hébergement que me coûte ce présent blog.

Et je crois que depuis le début, ce qui m’a toujours plu dans le Web, c’est de lire le blog de monsieur et madame tout le monde. De lire une page écrite par quelqu’un il y a des années. C’est ce « petit tricot universel », comme le dit si bien Marie Guillaumet, auquel chacun peut participer, que ce soit à travers un tweet, un article, une vidéo, une chanson…

Je fais le rapprochement de tout ça avec ce dernier article de Mike Monteiro sur les quinze ans de Wikipedia.

Un bourdon ne peut pas voler.

On m’a énoncé ce fait par les soeurs de Saint Joseph en grandissant à l’école catholique. Comme de nombreux autres enfants. C’est dit comme un témoignage de Dieu au dessus de la science. Selon l’histoire, les scientifiques et experts en aérodynamisme se sont rassemblés, ont fait des calculs et ont réalisé qu’avec sa masse et son envergure, un bourdon n’était pas capable de générer la poussée nécessaire pour s’élever. En d’autres termes : un bourdon ne peut pas voler. Il est trop gros et ses ailes sont trop petites.

Wikipedia ne peut pas exister.

Une collection du savoir humain. Rassemblée par les humains. Pour les humains. À travers le monde. De manière décentralisée. Une organisation à but non lucratif auto-policée fondée par la bonté des autres. Impartiale. Et construite sur un wiki. Où chaque décision est infiniment débattue en comité. En d’autres termes: Wikipedia ne peut pas exister. C’est trop ouvert et ça ne rapporte pas d’argent.

Sauf que ça existe. Et ça existe depuis quinze ans. Quinze merveilleuses années d’humains rassemblant l’histoire de tout ce que l’on sait, de sorte à ce que d’autres humains ne l’oublient pas. Quinze ans de gestion de notre mémoire collective. Quinze ans où l’on s’assure que l’on puisse raconter nos propres histoires. Quinze ans où votre voie a autant d’importance que celle d’un autre. Quinze ans où le peuple rassemble l’histoire du peuple. 28% de la planète vivant aujourd’hui n’ont jamais connu un monde sans Wikipedia.

C’est l’histoire de Twitch Plays Pokemon encore et encore.

Il y a une réplique dans Scrubs où le Dr. Cox dit :

Je suis sur pratiquement sûr que si on enlevait tout le porno sur internet, il ne resterait plus qu’un seul site web, et il s’appellerait « Qu’on nous ramène le porno ! ».

Je suis pratiquement sûr que si on enlevait toute la publicité du Web, il resterait plein de sites très bien.

Le système d’identification de Spotify sur PS3

Hier soir, je me suis connecté pour la première fois à Spotify sur ma poussiéreuse PS3, pour voir. Et à ma grande surprise, le système d’identification est plutôt bien pensé. En plus d’un traditionnel formulaire identifiant / mot de passe, l’application présente par défaut l’écran suivant.

(capture d'écran via jmdgame.fr)

(capture d’écran via jmdgame.fr)

On ouvre Spotify sur son smartphone, on lance un morceau, on choisit de le lire sur sa PS3 dans la liste des appareils distants. Et c’est parti.

C’est rapide et ça fonctionne bien. En particulier pour une console où les gestionnaires de mot de passe sont inexistants, et où la moindre saisie au clavier virtuel est un enfer.

Les utilisateurs de l’Apple Watch découvrent un autre moyen d’avoir les mains libres

Lu en fin d’année dernière sur le Wall Street Journal :

M. Forrest, un manager chez Freebirds World Burrito à Thousand Oaks, en Californie, était en train de couper de la viande quand le minuteur de sa montre a commencé à vibrer et sonner. Avec ses mains recouvertes de jus de viande, M. Forrest a flairé une solution :il a arrêté l’alarme avec son nez.

« Ça marche vraiment », déclare M. Forrest. « Parfois il faut faire ce qu’il faut. »

L’illustration de l’article est vraiment chouette.

Utiliser l'Apple Watch avec son nez

Biais de confirmation

Lu sur le New York Times, « A Quick Puzzle to Test Your Problem Solving », un article interactif sur le biais de confirmation (qui reprend un exemple que j’avais lu il y a quelques mois sur le blog de DrLoser).

Un petit jeu permet de comprendre la politique gouvernementale, l’Amérique des entreprises, et pourquoi personne n’aime avoir tort.

Voici comment ça fonctionne :
Nous avons choisi une règle que certaines suites de trois chiffres respectent, et d’autres pas. Le but est de trouver quelle est la règle.

Nous commencerons par vous dire que la séquence 2, 4, 8 respecte cette règle.

Maintenant c’est à votre tour.

J’adore la façon dont le New York Times a rendu cet article interactif et dynamique avec un formulaire en tout début et les résultats intégrés dans une phrase un peu plus loin.

Exemple d'article interactif sur le site du New York TImes

Ces explications dans le reste de l’article m’interpellent.

Ce puzzle met en avant une sorte particulière de biais de confirmation qui hante les entreprises, gouvernements et individus chaque jour :la tendance du yes-man (et yes-woman). Il est plus probable que nous pensions à des situations positives que négatives, à pourquoi quelque chose pourrait bien se passer plutôt que mal, et à des questions dont la réponse est oui plutôt que non.

Parfois, la réticence à penser négativement n’a rien à voir avec des opinions politiques ou une peur consciente de s’entendre dire « non ». Souvent, les gens ne pensent même pas à poser des questions qui pourraient produire une réponse négative en cherchant à résoudre un problème — comme celle-ci. Au lieu de ça, ils réduisent l’univers possible de questions à celles qui pourraient potentiellement produire un « oui ».

C’est ma hantise en tant que concepteur web : m’assurer que je pose les bonnes questions, et surtout ne pas me satisfaire de voir un client acquiescer à mes propositions.

The Website Obesity Crisis

La dernière conférence de Maciej Cegłowski, « The Website Obesity Crisis », est pleine de citation et d’exemples bons à partager.

Voici un article didactique sur les bonnes pratiques pour augmenter sa performance en ligne qui pèse 3,1 Mo.

Cet article mentionne que Google était capable d’augmenter l’engagement utilisateur dans Google Maps en réduisant le poids des pages de 100 Ko à 80 Ko.

Vous vous souvenez quand Google Maps, la web app la plus sophistiquée de son époque, était trente-cinq fois plus petite qu’un article d’actualité moderne ?

Ou encore :

Les gens ont inventé des mesures créatives pour se persuader que leurs sites mélasses se chargent vite.

Google en a une populaire appelée SpeedIndex. (Vous savez que ça vient de Google quand ils balancent une intégrale dans la définition comme si de rien n’était.)

Mais surtout, j’adore sa pyramide alimentaire du Web.

Les nutritionnistes étaient à fond sur ce concept de pyramide alimentaire. Je pense qu’on a besoin d’une pour le web, pour se rappeler ce à quoi un site sain devrait ressembler.

Voici ce que je recommande pour un site équilibré en 2015 :

  • Une base solide de texte qui vaille la peine d’être lu, formaté avec une bonne dose de balises.
  • Quelques images, avec modération, pour illustrer le design visuel.
  • Un gros morceau de CSS.
  • Et puis, avec parcimonie et seulement si besoin, du JavaScript.

La pyramide alimentaire du Web

Photoshop, copier-coller et les caractères invisibles ETX

Code and Send a publié un court article très intéressant sur les caractères invisibles ETX qui peuvent apparaître quand on copie-colle du texte depuis Photoshop. Ce caractère est ajouté par Photoshop lorsqu’on fait un saut de ligne avec MAJ+Entrée. Pour éviter ça, Code and Send a créé Detergent.io, un petit outil en ligne pour nettoyer du texte copié depuis Photoshop ou Word et destiné à être intégré dans un e‑mail.

Cet article est une archive du blog précédemment hébergé sur emails.hteumeuleu.fr.

Outlook.com ne préfixe pas les classes correspondant à des noms de balises

Comme la plupart des webmails, Outlook.com ajoute un préfixe aux noms de classes de nos e‑mails. Ainsi, une classe test sera transformée en ecxtest. Il y a quelques mois, j’avais remarqué cependant que ce préfixage ne s’appliquait pas sur certains noms de classes, comme par exemple button, menu, label ou nav.

Dans la troisième édition de son excellentissime Email Development Newsletter, Julie Ng évoque également ce bug qu’elle a rencontré en utilisant des classes head, header ou footer. Il n’en a pas fallu plus pour que je fasse le rapprochement et comprenne ce qu’il se passe. Tous ces mots-clés ne sont pas des noms pris au hasard, mais des noms de balises HTML.

Ni une, ni deux, je suis allé récupéré la liste des éléments HTML sur MDN, et j’ai envoyé le test suivant sur Outlook.com.

<style type="text/css">
	.html, .base, .head, .link, .meta, .style, .title, .address, .article, .body, .footer, .header, .h1, .h2, .h3, .h4, .h5, .h6, .hgroup, .nav, .section, .blockquote, .dd, .div, .dl, .dt, .figcaption, .figure, .hr, .li, .main, .ol, .p, .pre, .ul, .a, .abbr, .b, .bdi, .bdo, .br, .cite, .code, .data, .dfn, .em, .i, .kbd, .mark, .q, .rp, .rt, .ruby, .s, .samp, .small, .span, .strong, .sub, .sup, .time, .u, .var, .wbr, .area, .audio, .img, .map, .track, .video, .embed, .iframe, .object, .param, .source, .canvas, .noscript, .script, .del, .ins, .caption, .col, .colgroup, .table, .tbody, .td, .tfoot, .th, .thead, .tr, .button, .datalist, .fieldset, .form, .input, .keygen, .label, .legend, .meter, .optgroup, .option, .output, .progress, .select, .textarea, .details, .dialog, .menu, .menuitem, .summary, .content, .decorator, .element, .shadow, .template, .acronym, .applet, .basefont, .big, .blink, .center, .dir, .frame, .frameset, .isindex, .listing, .noembed, .plaintext, .spacer, .strike, .tt, .xmp {
		padding:1em 1.5em;
		color:#fff;
		background:#2ecc40;
	}
</style>
<div class="html base head link meta style title address article body footer header h1 h2 h3 h4 h5 h6 hgroup nav section blockquote dd div dl dt figcaption figure hr li main ol p pre ul a abbr b bdi bdo br cite code data dfn em i kbd mark q rp rt ruby s samp small span strong sub sup time u var wbr area audio img map track video embed iframe object param source canvas noscript script del ins caption col colgroup table tbody td tfoot th thead tr button datalist fieldset form input keygen label legend meter optgroup option output progress select textarea details dialog menu menuitem summary content decorator element shadow template acronym applet basefont big blink center dir frame frameset isindex listing noembed plaintext spacer strike tt xmp"></div>

Ce code est transformé par le code suivant :

<style type="text/css">
	.ExternalClass .ecxhtml, .ExternalClass .ecxbase, .ExternalClass .ecxhead, .ExternalClass .ecxlink, .ExternalClass .ecxmeta, .ExternalClass .ecxstyle, .ExternalClass .ecxtitle, .ExternalClass .ecxaddress, .ExternalClass .ecxarticle, .ExternalClass .ecxbody, .ExternalClass .ecxfooter, .ExternalClass .ecxheader, .ExternalClass .ecxh1, .ExternalClass .ecxh2, .ExternalClass .ecxh3, .ExternalClass .ecxh4, .ExternalClass .ecxh5, .ExternalClass .ecxh6, .ExternalClass .ecxhgroup, .ExternalClass .ecxnav, .ExternalClass .ecxsection, .ExternalClass .ecxblockquote, .ExternalClass .ecxdd, .ExternalClass .ecxdiv, .ExternalClass .ecxdl, .ExternalClass .ecxdt, .ExternalClass .ecxfigcaption, .ExternalClass .ecxfigure, .ExternalClass .ecxhr, .ExternalClass .ecxli, .ExternalClass .ecxmain, .ExternalClass .ecxol, .ExternalClass .ecxp, .ExternalClass .ecxpre, .ExternalClass .ecxul, .ExternalClass .ecxa, .ExternalClass .ecxabbr, .ExternalClass .ecxb, .ExternalClass .ecxbdi, .ExternalClass .ecxbdo, .ExternalClass .ecxbr, .ExternalClass .ecxcite, .ExternalClass .ecxcode, .ExternalClass .ecxdata, .ExternalClass .ecxdfn, .ExternalClass .ecxem, .ExternalClass .ecxi, .ExternalClass .ecxkbd, .ExternalClass .ecxmark, .ExternalClass .ecxq, .ExternalClass .ecxrp, .ExternalClass .ecxrt, .ExternalClass .ecxruby, .ExternalClass .ecxs, .ExternalClass .ecxsamp, .ExternalClass .ecxsmall, .ExternalClass .ecxspan, .ExternalClass .ecxstrong, .ExternalClass .ecxsub, .ExternalClass .ecxsup, .ExternalClass .ecxtime, .ExternalClass .ecxu, .ExternalClass .ecxvar, .ExternalClass .ecxwbr, .ExternalClass .ecxarea, .ExternalClass .ecxaudio, .ExternalClass .ecximg, .ExternalClass .ecxmap, .ExternalClass .ecxtrack, .ExternalClass .ecxvideo, .ExternalClass .ecxembed, .ExternalClass .ecxiframe, .ExternalClass .ecxobject, .ExternalClass .ecxparam, .ExternalClass .ecxsource, .ExternalClass .ecxcanvas, .ExternalClass .ecxnoscript, .ExternalClass .ecxscript, .ExternalClass .ecxdel, .ExternalClass .ecxins, .ExternalClass .ecxcaption, .ExternalClass .ecxcol, .ExternalClass .ecxcolgroup, .ExternalClass .ecxtable, .ExternalClass .ecxtbody, .ExternalClass .ecxtd, .ExternalClass .ecxtfoot, .ExternalClass .ecxth, .ExternalClass .ecxthead, .ExternalClass .ecxtr, .ExternalClass .ecxbutton, .ExternalClass .ecxdatalist, .ExternalClass .ecxfieldset, .ExternalClass .ecxform, .ExternalClass .ecxinput, .ExternalClass .ecxkeygen, .ExternalClass .ecxlabel, .ExternalClass .ecxlegend, .ExternalClass .ecxmeter, .ExternalClass .ecxoptgroup, .ExternalClass .ecxoption, .ExternalClass .ecxoutput, .ExternalClass .ecxprogress, .ExternalClass .ecxselect, .ExternalClass .ecxtextarea, .ExternalClass .ecxdetails, .ExternalClass .ecxdialog, .ExternalClass .ecxmenu, .ExternalClass .ecxmenuitem, .ExternalClass .ecxsummary, .ExternalClass .ecxcontent, .ExternalClass .ecxdecorator, .ExternalClass .ecxelement, .ExternalClass .ecxshadow, .ExternalClass .ecxtemplate, .ExternalClass .ecxacronym, .ExternalClass .ecxapplet, .ExternalClass .ecxbasefont, .ExternalClass .ecxbig, .ExternalClass .ecxblink, .ExternalClass .ecxcenter, .ExternalClass .ecxdir, .ExternalClass .ecxframe, .ExternalClass .ecxframeset, .ExternalClass .ecxisindex, .ExternalClass .ecxlisting, .ExternalClass .ecxnoembed, .ExternalClass .ecxplaintext, .ExternalClass .ecxspacer, .ExternalClass .ecxtt, .ExternalClass .ecxxmp {
		padding:1em 1.5em;
		color:#fff;
		background:#2ecc40;
	}
</style>
<div class="html base head link meta style title address article body footer header h1 h2 h3 h4 h5 h6 hgroup nav section blockquote dd div dl dt figcaption figure hr li ecxmain ol p pre ul a abbr b bdi bdo br cite code ecxdata dfn em i kbd mark q rp rt ruby s samp small span strong sub sup time u var wbr area audio img map track video embed iframe object param source canvas noscript script del ins caption col colgroup table tbody td tfoot th thead tr button datalist fieldset form input keygen label legend meter optgroup option output progress select textarea details ecxdialog menu ecxmenuitem summary ecxcontent ecxdecorator ecxelement ecxshadow ecxtemplate acronym applet basefont big blink center dir frame frameset isindex listing ecxnoembed plaintext spacer strike tt xmp"></div>

Tous les sélecteurs CSS sont bien préfixés par .ExternalClass .ecx. Par contre, les noms de classe dans le code HTML ne sont eux pas préfixés par ecx, rendant le sélecteur précédent caduque. Seuls quelques noms d’éléments HTML semblent échapper à ce bug (comme main, data, dialog, menuitem, content, decorator, element, shadow, template and noembed).

Par précaution, il est donc plus prudent de ne jamais utiliser de nom de balise HTML comme nom de classe.

Cet article est une archive du blog précédemment hébergé sur emails.hteumeuleu.fr.

Un e-mail interactif de PRET A MANGER

Un e-mail interactif par PRET A MANGERVu sur Twitter : un e-mail interactif avec des smoothies par PRET A MANGER. J’adore le rendu avec les animations (faites en sprites). Mais quel dommage que le tout soit déclenché par une media query utilisant -webkit-min-device-pixel-ratio, ne fonctionnant alors que sur Chrome, Safari ou Opera.

Cet article est une archive du blog précédemment hébergé sur emails.hteumeuleu.fr.

Outlook pour iOS et Android

La semaine dernière, Microsoft a mis à jour son application Outlook pour iOS et Android, incluant des fonctions de calendrier et tuant au passage l’application Sunrise. Mais la vraie nouveauté, de mon point de vue, est que l’application iOS est actuellement neuvième des applications gratuites les plus téléchargées sur l’App Store (contre trente-cinquième pour Gmail).

Ne sous-estimons pas les applications mail tierces sur mobile.

Cet article est une archive du blog précédemment hébergé sur emails.hteumeuleu.fr.

The Little Printf

Je suis tombé hier soir via reddit sur ce fantastique compte-rendu d’une conférence de Fred Hébert, « The Little Printf ». C’est beau, c’est poétique, et ça énonce assez joliment des vérités sur les différentes facettes du métier de développeur. Je pourrais citer l’histoire dans son intégralité. Mais voici mes deux extraits favoris.

Quand (chapitre 7), le Petit Printf rencontre un développeur super fier de connaître tous les derniers frameworks à la mode :

— Quels problèmes est-ce que tu résous avec tous ces frameworks ?

— Oh, je m’assure que nous n’utilisons pas quelque chose qui ne va pas avoir du succès, comme ça cette société ne parie pas sur des technologies qui n’ont pas d’avenir. C’est un travail très important, car si tu ne fais pas ça, tu ne pourras trouver personne à embaucher à part des vieux barbus grisonnants en retard, alors que tu veux des fonceurs autonomes qui sont aussi des adopteurs précoces, dit le monsieur.

— C’est amusant, répondit notre ami.

— C’est très difficile ! Dans le monde des startups, si tu veux les meilleurs joueurs, tu dois utiliser les bonnes technologies pour les attirer ! Sinon tu restes coincé avec des retardataires rigides. Personne ne veut être un retardataire rigide.

Le Petit Printf s’exclama : « Non, ce n’est pas ce que je voulais dire », et puis il ajouta « Je trouve ça amusant que les outils sont censés résoudre des problèmes pour nous, mais pour toi, les outils eux-mêmes sont devenus un problème. »

Et pendant que l’homme resta là en silence (sur son nouveau bureau trop cool avec tapis de course), le Petit Printf sauta hors de la pièce.

Chapitre 10, le Petit Printf rencontre un architecte logiciel.

— Ton système est très impressionnant. Est-ce qu’il est rapide ?

— Je ne saurais pas te dire, dit l’architecte. Il devrait, cependant.

— Et comment est le code alors, est-ce qu’il est bon ?

— Je ne saurais pas te dire.

— Est-ce que les utilisateurs en sont contents ?

— Je ne pourrais pas te dire non plus, j’en ai bien peur.

— Mais tu es un architecte logiciel !

— Exactement ! Mais je ne suis pas un développeur. Ce n’est pas l’architecte qui va écrire les modules et les classes, assembler les bibliothèques. L’architecte logiciel est bien trop important pour faire le tour et toucher du code. Mais il parle avec les programmeurs et développeurs, leur pose des questions, leur fournit des conseils. Et si le problème a l’air suffisamment intéressant, l’architecte prend en charge le planning.

— Et pourquoi ça ?

— Parce que nous avons plus d’expérience. Nous en savons plus sur les systèmes et ce qui fonctionne et ce qui ne fonctionne pas. Les développeurs peuvent être une extension de notre savoir pour produire des bons systèmes !

— Mais comment sais-tu si les choses se passent bien sans jamais être impliqué dans le code ?

— Nous faisons confiance aux développeurs.

— Donc vous leur faites confiance pour implémenter vos idées correctement, mais pas assez pour qu’ils trouvent leurs propres idées ?

L’architecte logiciel était visiblement secoué par ce commentaire. « Je suppose que j’ai été un peu déconnecté, admet-il finalement. Le problème est qu’au bout d’un moment, on vous demande tellement de travailler sur des idées que vous n’avez plus de bon moyen de les faire tester ou vérifier. » Il fixa le sol, pensif. «Parfois un architecte logiciel ne fait ni de l’architecture, ni du logiciel, il semblerait.»

Le Petit Printf quitta la pièce, et achevant ainsi sa visite, quitte le bâtiment.

Cette histoire est géniale et vous devriez la lire.

Quelques tests d’accessibilité sur Fnac.com

Samedi dernier, j’ai eu la chance de participer à l’atelier « Tester l’accessibilité de son site Web avec NVDA » présenté par Denis Boudreau à Paris Web. Après une présentation très intéressante (où j’ai appris notamment qu’il y avait 39 000 000 de non-voyants dans le monde, mais seulement 22 000 utilisateurs de NVDA), les participants ont été invités à faire des tests à l’aide d’un lecteur d’écran sur le site de la Fnac par petits groupes. Je me suis donc retrouvé à faire la connaissance de @ouik_web et @joellechong avec qui nous avons testés les formulaires de la création de compte du site. N’ayant pas de PC sous la main, nous avons fait des tests avec VoiceOver sous OS X. Et j’ai trouvé nos trouvailles particulièrement intéressantes. En voici un compte-rendu.

Afin de créer un compte, nous avons sélectionné le lien « Me connecter » du header du site. Celui-ci ouvre un sous-menu qui contient un lien « Créer mon compte ». En cliquant sur ce lien, on arrive sur la page suivante.

Première étape de la création de compte sur Fnac.com

  • Le premier point surprenant, c’est que cette page contient également un formulaire d’identification (alors que je viens pourtant explicitement de cliquer sur un lien « Créer mon compte »). Et le problème, c’est que cette colonne d’identification se trouve en premier dans le code HTML. Avec un lecteur d’écran, on doit donc traverser toute cette zone avant d’atteindre le formulaire de création de compte qui nous intéresse.
  • Les étoiles après les libellés de chaque champ n’ont pas de libellés correspondants. En fait, même pour un utilisateur voyant, nulle part sur le reste de la page il n’y a d’indication de ce que à quoi correspondent ces étoiles. Est-ce que ce sont les champs obligatoires ? Est-ce que ce sont les champs facultatifs ?
  • Le lien « oublié ? » après le libellé « Mot de passe* » n’est pas très explicite. Si on navigue sur la page avec la touche tabulation, on tombe directement sur ce lien sans avoir aucune idée qu’il concerne le mot de passe.
  • Le champ d’adresse e-mail utilise un <input type="text" /> plutôt qu’un <input type="email" />. L’avantage, c’est qu’un lecteur d’écran pour restituer cette précision sur le type de contenu attendu, et c’est une aide précieuse sur des formulaires. La version mobile de la création de compte de la Fnac utilise bien un champ <input type="email" />.
  • La balise <title> de la page est vide. Dans ce cas, quand on prends le focus sur la fenêtre, VoiceOver va lire l’URL de la page. Je vous laisse imaginer l’horreur d’entendre https://secure.fnac.com/Account/Logon/Logon.aspx?LogonType=StandardCreation&PageAuth=X&pagepar=LogonType%3dStandardCreation%26PageRedir%3dhttp%253a%252f%252fwww4.fnac.com%252f&PageRedir=https%3a%2f%2fsecure.fnac.com%2fAccount%2fProfil%2fAccountInfos.aspx.
  • Avant le formulaire de création de compte, il y a un petit texte d’introduction « Bonjour cher inconnu, on ne se connait pas encore. Aucun problème, continuez c’est tout droit. » Les deux phrases sont chacune sur une ligne. Sauf qu’il n’y a pas de point à la fin de la première. VoiceOver lit donc les deux phrases d’une seule traite. C’est le genre de détails presque insignifiant visuellement, mais assez pénible quand on utilise un lecteur d’écran.
  • Sous le champ « Mot de passe », il y a une indication « 8 caracètres minimum dont au moins 1 chiffre et 1 lettre ». J’ai bien dit « caracètres ». C’est encore une fois une faute à côté de laquelle on peut facilement passer visuellement, mais qui saute aux oreilles en utilisant un lecteur d’écran.
  • Lorsqu’on valide le formulaire mais qu’il y a des erreurs, la page se recharge complètement, et on se retrouve à devoir renaviguer à travers toute la page. C’est assez déroutant, et un focus sur le message d’erreur aurait été le bienvenu.

Une fois ce formulaire dûment complété, on arrive sur la deuxième étape suivante.

Deuxième étape de la création de compte sur Fnac.com

On y retrouve plus ou moins les mêmes écueils, mais avec quelques suppléments :

  • Les titres « Mon compte » et « Vos données personnelles : identifiez-vous » sont tous les deux dans des balises <h2>. Il n’y a aucun titre de niveau <h1> sur la page. À l’écoute, on a l’impression de passer d’une section à une autre, plutôt que de rentrer dans le coeur de la page.
  • Les diminutifs de civilité « Mlle », « Mme » et « M » n’ont pas d’alternatives complètes. VoiceOver lit donc littéralement « Mleu », « AimeAimeEuh », et « Aime ».
  • Les <label> des champs Nom, Prénom et « Combien avez-vous d’enfants ? » ont bien un attribut for, mais celui-ci est vide. Quand on arrive dans ces champs, on n’a donc aucune idée d’où est-ce qu’on est. De la même manière, les deux listes déroulantes et le champ texte pour la date de naissance n’ont aucun label associés. On navigue donc de l’un à l’autre sans trop savoir où l’on est.

Et tout ça, ça ne concerne que les formulaires de la création de compte du site. Les autres groupes participant à cet atelier se sont concentrés sur d’autres points (textes, images, …) et ont répertorié tout autant de retours sur l’accessibilité du site. (J’ai surtout retenu que le lien « Mon panier » du header est totalement inaccessible, que ce soit en naviguant au clavier ou pour un lecteur d’écran, car il ne s’agit pas d’une balise <a> mais d’un ensemble de <div> dont le comportement est géré en JavaScript.)

Alors je ne cherche pas ici à jeter la pierre aux équipes responsables du site de la Fnac. Mais ce qui me fascine, c’est la facilité avec laquelle nous avons pu identifier des problèmes d’accessibilité importants, en quelques dizaines de minutes de tests, avec des outils à la portée de tout le monde. Je suis un adepte de la maxime « Si vous voyez quelque chose, dites quelque chose ». Et ça me chagrine de lire des tweets comme celui-ci. Alors j’espère que ces quelques retours ne tomberont pas dans l’oreille d’un sourd, et que la Fnac pourra mettre les moyens nécessaires pour améliorer l’accessibilité de son site.

 

A Hypocrite’s Guide to Public Speaking

Je l’ai tweetée le mois dernier, mais cette conférence m’est vraiment restée en tête. Une excellente présentation, tant sur le fond que la forme, sur l’appréhension de parler en public.

Message de service

On m’a fait remarqué à deux reprises hier que ça faisait un petit moment que je n’avais rien posté ici depuis un moment. C’est en partie parce que j’étais tout récemment aux chouettes conférences de Paris Web ou que j’organise la nouvelle édition de 24 jours de web. Mais aussi parce que j’ai consacré un peu plus de temps ces derniers mois à écrire sur mon blog consacré à l’intégration d’e-mails (notamment pour expliquer comment j’ai créé un e-mail qui se transforme en le transférant). Et je suis toujours bien vivant sur Twitter. Il faut juste que je trouve un peu plus de temps pour écrire sur ce blog sur pleins de sujets qui me restent en tête depuis un moment.