Chaque article de ce blog a une petite figurine de Mr. Grummel assise dans la marge. Fais défiler régulièrement et il hoche la tête en rythme. Arrête de faire défiler pendant une trentaine de secondes et il s'assoupit, des lettres de ronflement flottant à côté de lui. Fais défiler assez vite, assez longtemps, et il arrête de hocher la tête et paraît agacé à la place. Rien de tout ça n'est une décoration ajoutée après coup — c'est un seul écouteur de défilement qui fait un calcul sur ta position de scroll et l'horloge, et qui fait correspondre quatre résultats simples à une classe d'humeur.
Les deux seuls chiffres qu'il possède vraiment
Chaque événement de défilement transmet deux choses à l'écouteur : la distance parcourue par la page depuis le dernier événement, et le temps écoulé. Divise l'un par l'autre et tu obtiens une vitesse, en pixels par seconde. C'est tout le capteur. Il ne sait pas où sont tes yeux, si tu es sur ce paragraphe ou trois plus loin, ni même si tu lis vraiment ou si tu gardes la page immobile en pensant à autre chose — il sait seulement à quelle vitesse le document a défilé sous une fenêtre fixe, ce qui n'est qu'un indicateur indirect de l'attention, rien de plus.
De ce seul chiffre découlent trois comportements. Fais défiler normalement et il hoche la tête un instant après chaque événement, se calmant après neuf dixièmes de seconde sans nouveau défilement — assez pour donner l'impression de « suivre » sans sursauter à chaque pixel. Arrête totalement de faire défiler et, après trente secondes de silence, il s'endort ; refais défiler et il se réveille en sursaut, son humeur basculant brièvement vers la surprise avant de revenir à son sévère habituel. Dépasse une vitesse d'environ 1500 pixels par seconde et maintiens-la pendant plus d'une demi-seconde, et il interprète ça comme du survol plutôt que de la lecture — les hochements de tête s'arrêtent, il devient agacé, et ce verdict tient deux secondes et demie avant d'être prêt à se reconsidérer, si bien qu'un seul geste de défilement nerveux ne peut pas le faire basculer d'avant en arrière à chaque image.
La seule récompense construite par-dessus
Il y a un second élément, plus simple, qui repose sur le même composant : un observateur d'intersection qui surveille l'appel à l'action final de l'article, celui juste en dessous du dernier paragraphe. Dès que quarante pour cent de ce bloc entre dans le champ de vision, pour la première fois, il livre un petit temps d'approbation — pas pour avoir fini l'article, à proprement parler, puisque le capteur ne peut pas le confirmer, mais parce que la page a défilé assez loin pour que la fin soit maintenant à l'écran. C'est un indicateur indirect qui repose sur un autre indicateur indirect, et on pense que c'est une façon honnête de le décrire plutôt qu'un reproche à lui faire.
Ce dont on n'est pas encore sûrs
La vitesse de défilement est un signal réellement faible pour distinguer « survoler » de « lire ». Quelqu'un qui fait défiler un trackpad par habitude tout en réfléchissant intensément au paragraphe précédent sera signalé exactement comme quelqu'un qui survole réellement la page, et il n'y a aucun moyen pour un capteur basé uniquement sur la vitesse de faire la différence entre les deux. On a construit ça comme un petit détail de personnalité honnête, pas comme une métrique d'engagement à laquelle qui que ce soit devrait faire confiance — si cette page commence un jour à prendre des décisions basées sur ce que le compagnon de lecture « pense » qu'un visiteur a fait, ce serait une affirmation bien plus grande que ce que le capteur peut réellement soutenir.
Rien de tout ça ne fait partie du programme — c'est une note sur la construction de cette page de blog, pas quelque chose sur quoi l'appli t'interroge. Si la distance sur le temps et les écouteurs d'événements sont le genre de chose que tu préférerais qu'on t'interroge dessus plutôt que d'en lire, le sujet Informatique de l'appli couvre les briques de base plus simples en dessous, en commençant par Programmation.