Planète Web Sémantique

March 07, 2015

Karl Dubost

Le geste simple du printemps

motifs de floraison et d'échassiers sur tissu Tsujido, Japon, 13 février 2015

La visite du petit animal m'enchante. Elle illumine l'après-midi. En quelques jours, j'ai réussi à me contenter d'un spectacle pareil. Prodigieux comme on se déshabitue vitre du barnum de la vie urbaine. Quand je pense à ce qu'il me fallait déployer d'activité, de rencontres de lectures et de visites pour venir à bout d'une journée parisienne. Et voilà que je reste gâteux devant l'oiseau. La vie de cabane est peut-être une régression. Mais s'il y avait progrès dans cette régression.

Sylvain Tesson, Dans les forêts de Sibérie.

J'ai ouvert le paquet. Un tissu rouge et rose de floraison de cerisiers et d'échassiers recouvrait la boîte. À l'intérieur de la boîte, de nombreuses friandises et chocolats étaient alignés. Demain, c'est la Saint-Valentin. Les femmes offrent des chocolats aux hommes. Amoureux, Amants, Collègues, Mari, Enfants, Père. Dans un mois, le geste sera retourné. Les protocoles définissent l'harmonie. Il ne s'agit pas de questionner le pourquoi, mais bien de réaliser avec élégance. Laisser place à la simplicité pour éteindre le feu de la complexité.

March 07, 2015 02:02 AM

L'esprit tordu

pin bonsai sur mousse Tsujido, Japon, 11 février 2015

Le passionnant spectacle de ce qui se passe par la fenêtre. Comment peut-on encore conserver une télé chez soi ?

Sylvain Tesson, Dans les forêts de Sibérie.

Nous l'avons appelé « くねちゃん » (kune-chan) à cause de la forme tordue, tourmentée de son tronc. J'aime sa forme et sa complexité. J'aime son inattendue souplesse. Ses fibres enroulent son esprit dans une danse vigoureuse. Les pieds enfouis dans la tendresse de la mousse.

March 07, 2015 01:40 AM

March 06, 2015

Eric van der Vlist

Le pied

[fr] Détail d’une statue du pont Mirabeau [en] Detail of a statue from the pont Mirabeau

by Eric van der Vlist at March 06, 2015 10:00 PM

David Larlet

Ivan Illich et Internet

La technique moderne permettrait aisément la mise en place d’un réseau d’appariement. L’utilisateur se contenterait d’indiquer son nom, son adresse et indiquerait l’activité pour laquelle il recherche un compagnon. Un simple tri sur ordinateur permettrait de lui transmettre la liste des personnes ayant manifesté un intérêt similaire. Comment se fait-il que l’on n’ait jamais mis en place un tel système sur une grande échelle, alors que le public dans son ensemble reconnaît bien volontiers la valeur de ces rencontres ?

Une société sans école, Ivan Illich, 1971

La première spécification formelle de TCP date de décembre 1974.

HTML, HTTP et les URL (les bases du World Wide Web) datent du début des années 1990.

Meetic date de 2001.

Les premiers MOOC en France apparaissent en 2012. J’apprends au passage qu’il faut dire FLOT (Formation en Ligne Ouverte à Tous) ou CLOM (Cours en Ligne Ouvert et Massif) en français… ainsi que la différenciation xMOOC vs. cMOOC.

40 ans pour concrétiser ce « réseau d’appariement ».

March 06, 2015 11:00 AM

March 05, 2015

Eric van der Vlist

Entrée du tunnel de la petite ceinture sous la rue Olivier de Serres

[fr] L’entrée du tunnel de la petite ceinture sous la rue Olivier de Serres. [en] Entrance of the tunnel of the petite ceinture under the rue Olivier de Serres[fr]

by Eric van der Vlist at March 05, 2015 03:52 PM

David Larlet

Américain social démocrate

Democratic socialist politics are my politics. I’m a socialist because I want to live in a just society. More than that, I want to live in a survivable society. The form of capitalism we live under does not present a viable future ecologically, economically, or socially. It is a system designed for the creation and preservation of capital, not human life. I’m a socialist because I believe that the wealth of society can best be harnessed through cooperation, not competition.

Jacobin (cache)

C’est la première fois que je croise un billet d’un blog relativement technique tenu par un américain qui fait l’apologie du socialisme. Alex Payne a un parcours intéressant.

March 05, 2015 11:00 AM

March 04, 2015

Eric van der Vlist

Première chambre de la cour d’appel de Paris

[fr] Plafond de la première chambre de la cour d’appel de Paris. [en] Ceiling of the first chamber of the court of appeal of Paris.

by Eric van der Vlist at March 04, 2015 06:23 PM

David Larlet

Performances, apps et frameworks JS

Billet comportant les liens de veille technologique présentés aux étudiants dans le cadre d’une routine de mes cours.

Given the fact that mobile performance is a huge priority for Google, this label isn’t a trivial feature. If you care about performance, user experience, and SEO, then you should care about this potential game-changer.

Google’s experimental new “slow” label could revolutionize how we tackle web performance (cache)

Performances web et référencement, on en parlait lors du dernier cours justement.

How we experience content via connected devices – laptops, phones, tablets, wearables – is undergoing a dramatic change. The idea of an app as an independent destination is becoming less important, and the idea of an app as a publishing tool, with related notifications that contain content and actions, is becoming more important. This will change what we design, and change our product strategy.

The End Of Apps As We Know Them (cache)

Ainsi que sa suite (cache), articles très intéressants à rapprocher de ce que fait Pebble Time avec sa notion de timeline.

Nobody can try all the popular options, but everybody wishes for consolidation and more wood behind fewer frameworks. As such, a lot of developers have fallen into a pattern: avoid learning a new framework until it seems like one is finally ascending to the throne as the widely popular, exceptionally capable, “won’t get you fired” choice for building JavaScript frameworks.

A JS framework on every table (cache)

Une explication possible de la diversité des frameworks JS et de la stratégie à adopter pour miser sur LE bon. Peut-être React ? Peut-être Riot ? Peut-être Mithril ? Peut-être un framework qui n’existe pas encore… le vôtre ?

Et sinon quand est-ce que l’on produit de l’utile ?

March 04, 2015 11:00 AM

★ Cours IUT : Animations Web

There’s no doubt that animating user interfaces is a rising trend. Risen enough that the emphasis is often put on the animation itself, rather than on improving the user experience through subtle and functional animation.

Invisible animation (cache)

Je démarre un nouveau cours sur les animations web. Mon principal objectif, au-delà de la technique, sera de faire réfléchir les étudiants à l’importance d’utiliser les animations à bon escient. Il y a trop de designers web qui se font plaisir avec des animations qui utilisent 100% du CPU pour aucun avantage fonctionnel. Et qui n’en ont même pas conscience…

Ce sera l’occasion d’explorer les animations et transitions CSS, les transformations et leurs parallaxes (cache) mais aussi des bibliothèques comme animate.css, move.js, chart.js ou vivus.js. Peut-être ira-t-on jusqu’à jouer avec requestAnimationFrame mais je ne suis pas sûr d’avoir suffisamment d’heures pour cela.

J’ai bien envie de leurs donner beaucoup d’outils et de voir ce qu’ils arrivent à en sortir d’utile (cache). Avec une évaluation sur un travail rendu cette fois. Je ne sais pas encore comment évaluer la pertinence sans utilisateurs mais ce sera l’occasion d’en discuter avec eux.

PS : à l’origine, ces heures de cours étaient destinées à enseigner Flash :-).

March 04, 2015 11:00 AM

March 03, 2015

Eric van der Vlist

La petite ceinture du 15ème

[fr] La Petite Ceinture du 15e est un espace vert aménagé sur l’emprise de l’ancienne ligne de Petite Ceinture, dans le 15e arrondissement de Paris, en France. [en] The Petite Ceinture du 15e[fr] is a green space built on the ligne … Continue reading

by Eric van der Vlist at March 03, 2015 06:27 PM

David Larlet

Aïkido verbal

L’Aïkido Verbal est un moyen pacifique et efficace de gérer les attaques verbales. Cet art s’est inspiré de la pratique et de la philosophie de l’aïkido martial, et permet de diriger une agression verbale vers un résultat positif et équilibré. Comme dans l’art martial, l’assaillant et le défenseur sont dits « partenaires » et non « adversaires ». Il n’y a donc pas à proprement parler d’affrontement, ni vainqueur ni vaincu.

La pratique de l’Aïkido Verbal consiste en trois étapes fondamentales :

  • Recevoir l’attaque avec un « Sourire Intérieur »,
  • Accompagner l’attaque (Irimi) jusqu’au point d’une déstabilisation,
  • Rééquilibrer l’échange par un technique permettant l’Ai-ki.

Gérer les conflits et attaques verbales de façon simple et efficace (cache)

Une corde de plus à mon arc de bienveillance pour développer les bases d’une communication consciente (cache).

March 03, 2015 11:00 AM

March 02, 2015

Eric van der Vlist

Les cormorans de l’île aux Cygnes

[fr] Les cormorans apprécient les grands arbres de l’île aux Cygnes. [en] Cormorants enjoying the big trees on the “île aux Cygnes“.

by Eric van der Vlist at March 02, 2015 06:39 PM

Karl Dubost

Accessibilité, Ouch

Route fuyant sur l'horizon entre les champs Bec-Thomas, France, 1er janvier 2015

Coupé de toutes communications, il déchiffre la langue des arbres. Libéré de la télévision, il découvre qu'une fenêtre est plus transparente qu'un écran. Sa cabane égaie la rive et pourvoit au confort. Un jour, on est las de parler de « décroissance » et d'amour de la nature. L'envie nous prend d'aligner nos actes et nos idées. Il est temps de quitter la ville et de tirer sur les discours le rideau des forêts.

Sylvain Tesson, Dans les forêts de Sibérie.

Aujourd’hui, c’est l’anniversaire des 10 ans de la loi du 11 février 2005 pour l'égalité des droits et des chances, la participation et la citoyenneté des personnes handicapées. C'est ainsi qu'Aurélien Levy démarre un billet essentiel sur l'état des lieux de l'accessibilité des sites Web de l'état et des collectivités territoriales. Le constat est amer.

Dix ans déjà et seulement 4% des sites Web ont réalisé ce geste essentiel alors que lui le nombre d'expert a augmenté. Je ne pense pas que ce soit lié uniquement à un manque de compétences, mais bien à un double jeu de complexité des systèmes et des agendas des agences Web. Les clients se laisseront attirer beaucoup plus par un effet d'animation réalisé en JavaScript et CSS plutôt qu'une solution universelle et accessible. Les budgets s'évaporent. Les sites sont complexes. Les systèmes non maintenus et parfois non maintenables. Et la prochaine agence Web viendra répéter exactement la même séquence. Aurélien est doux dans ce billet. En 2001, je m'étais rendu aux Journées de la communication à Hourtin afin de promouvoir l'accessibilité auprès de l'audience.

On y parlait déjà d'un retard et d'une vieille circulaire du premier ministre. Bien sûr l'adresse http://www.atica.pm.gouv.fr/mission/pm12101999_internet.shtml est inexistante. Ceci signifie déjà beaucoup. Se rappeler de ce billet sur la mémoire des sites institutionnels. À cette adresse donc, dans le passé, on pouvait y lire ceci :

2.1.2. Accessibilité

Les responsables des sites veilleront tout particulièrement à favoriser l'accessibilité de l'information à tous les internautes, notamment les personnes handicapées, non voyantes, malvoyantes ou malentendantes. Ils trouveront à cet effet sur le site de la MTIC, www.atica.gouv.fr/standard/accessibilite, un dossier relatif à ce sujet. Ils pourront utilement se référer aux recommandations de niveau 1 du W3C " Web content accessibility guidelines ", disponibles en français à la même adresse.

Premier Ministre, Circulaire relative aux sites internet des services et établissements publics de l'Etat - 7 octobre 1999.

Oui… 7 octobre 1999. Que ce soit Stéphane, Tristan, Laurent, François et de nombreuses autres personnes autour de la communauté OpenWeb, ils ont défendu l'accessibilité Web très tôt.

Je pense que l'accessibilité ne se réalisera pas sans une volonté de simplification et sans une exigence envers les professionnels qui participent aux échanges et à l'élaboration des sites Web.

March 02, 2015 01:55 PM

Simplicité du développement Web

Lampe rouge au dessus de caractères Meguro, Japon, 6 février 2015

Il faudrait ériger le conseil de Baden-Powell en principe : « Lorsqu'on quitte un lieu de bivouac, prendre soin de laisser deux choses. Premièrement : rien. Deuxièmement : ses remerciements. ». L'essentiel ? Ne pas peser trop à la surface du globe. Enfermé dans son cube de rondins, l'ermite ne souille pas la Terre.

Sylvain Tesson, Dans les forêts de Sibérie.

Une tendance récurrente chez les développeurs Web est de débuter avec un système simple attaché à leur domaine d'expertise.

Developing python application using minimalist frameworks has become frequent in the Python community, for no reasons not to speak here. I see this change as a professional development where developers want to choose what is best for your application, simply use what little hide a group (of pearls, or not) that is better.

Thiago Avelino, Where to start a project with bottle, Boilerplate.

Bien souvent, le geste a été motivé par une réaction à un système complexe. Ils utilisent donc un « framework minimaliste. » Il faut entendre par là une API simple. Certains se lancent dans la confection d'une architecture plus simple en tentant de se soustraire des librairies bancales. Werkzeug, par exemple, est un exemple d'architecture complexe mais avec une interface simple. C'est agréable à utiliser mais pas du tout plaisant à explorer pour le code. Même chose pour Bottle ou Flask qui incluent nombre de librairies python. Pour avoir corriger certains bugs dans les librairies HTTP de Python, tout n'y est pas très beau…

Cependant, je remarque aussi que le framework minimaliste s'accompagne au final d'une complexité d'ajout de framework dans les autres domaines. On commence avec une application Flask ou Bottle et ensuite s'ajoute la complexité énorme du côté JavaScript et CSS niant toute la simplicité qui avait été gagnée du côté backend. C'est bien dommage. Et j'ai toujours le son d'une fausse note quand je vois cela.

March 02, 2015 12:39 PM

Twitter, une érosion

Bouddha et mur humide Singapour, 18 janvier 2015

Je voulais régler un vieux contentieux avec le temps. J'avais trouvé dans la marche à pied matière à le ralentir. L'alchimie du voyage épaississait les secondes. Celles passées sur la route filaient moins vite que les autres. La frénésie s'empara de moi, il me fallait des horizons nouveaux. Je me passionnais pour les aéroports où tout invite à la sortie et au départ. Je rêvais de finir dans un terminal. Mes voyages commençaient comme des fuites et se finissaient en course-poursuite contre les heures.

Sylvain Tesson, Dans les forêts de Sibérie.

Il y a quelques jours, j'avais décidé de prendre un peu de distance avec le réseau social. Je ne suis plus que 37 comptes et pour la plupart peu actif. Mon dernier tweet courant est daté du 2 janvier 2015. Voilà donc plus d'un mois que je n'ai pas posté. Stéphane Deschamp, de même, a pris un peu de distance.

Fin du premier jour, je le confesse : j’ai regardé dix fois mon flux Twitter, je me suis contraint de ne pas y répondre. C’est un début.

Stéphane Deschamp, Une semaine sans twitter.

De même j'ai lu moins souvent, répondu à quelques messages directs (dm avant de trouver un autre canal). Je me suis aussi retenu de répondre. Ma prochaine étape va être de faire une sauvegarde locale de l'ensemble des messages que j'ai pu écrire. Et puis finalement, de vider le système et de laisser un dernier message. J'hésite entre un 410 Gone ou un 301 Permanent Redirect. Location: http://www.la-grange.net/karl/.

Je vais utiliser uniquement @mozwebcompat et @webcompat pour le travail de Web Compat. Pour le reste, je pense que nous perdons énormément de temps sur la transmission et trop peu sur l'introspection et la compréhension. Je corrige donc légèrement la trajectoire.

Ces journées interminables passèrent vite. Je songeais en quittant mon ami : « Voilà la vie qu'il me faut. » Il suffisait de demander à l'immobilité ce que le voyage ne m'apportait plus : la paix.

Sylvain Tesson, Dans les forêts de Sibérie.

Arbre bonsai dans de la mousse Tsujido, Japon, 9 février 2015

March 02, 2015 11:37 AM

David Larlet

Vieux, erreurs JS et Chrome

Billet comportant les liens de veille technologique présentés aux étudiants dans le cadre d’une routine de mes cours.

A lot of people in the tech industry talk about “changing the world” and “making people’s lives better.” But bad design is excluding whole sections of the population from the benefits of technology. If you’re a designer, you can help change that. By following some simple principles, you can create more inclusive products that work better for everyone, especially the people who need them the most.

Designing For The Elderly: Ways Older People Use Digital Technology Differently (cache)

Ne jamais négliger l’importance de la lisibilité et des interactions avec des utilisateurs qui peuvent être dans des situations de difficulté dues notamment à l’âge.

JavaScript has some of the most unhelpful errors I’ve seen, with the exception of the notorious Expected T_PAAMAYIM_NEKUDOTAYIM in PHP. With more familiarity the errors start to make more sense. Modern browsers also help, as they no longer give the completely useless errors they used to.

JavaScript Errors and How to Fix Them (cache)

Car il y a des erreurs qui restent incompréhensibles. Même avec des navigateurs modernes !

Thank you to all colleagues and to all online activities, and next time somebody asks you “have you tried Chrome?”, feel free to answer: “do you know anything about Web development?”, ‘cause it’s about the time to stop blaming customers and start looking at who’s being the real incompetent here.

It’s your duty to develop for the Web (cache)

Piqûre de rappel nécessaire sur l’importance de développer pour le Web et non pour un navigateur…

March 02, 2015 11:00 AM

★ Cours IUT : Candidature spontanée

Je suis le directeur technique du site lemonde.fr, vous avez 2 heures pour m’envoyer un email de candidature spontanée. Vous disposez de toutes les ressources et discussions qui vous semblent nécessaires.

C’est ainsi que débutait cette évaluation du cours sur le Web Mobile.

Motivations

Je souhaitais vérifier qu’ils arrivaient à mettre en valeur ce qu’ils avaient assimilé lors du cours. Leur faire prendre conscience aussi qu’ils pouvaient être très bons mais s’ils ne parviennent pas à obtenir un entretien cela ne sert pas à grand chose. Ayant 2 heures à tuer, je me suis prêté au jeu et j’ai rédigé ma propre candidature spontanée en me mettant à leur place/niveau de connaissances.

Ma réponse

Objet : Candidature spontanée pour améliorer LeMonde
Destinataire : Olivier Grange-Labat

Bonjour Olivier,

Je crée des sites web depuis 4 ans dont 2 ans à mon compte et je viens de valider une année de licence professionnelle dédiée à la création de sites internet. Cela m’a permis de me familiariser avec les notions de frameworks (Bootstrap et AngularJS) et de CMS (Wordpress). J’ai aussi eu l’occasion de développer en JavaScript et d’explorer les possibilités offertes par le web mobile.

Je souhaite intégrer votre équipe technique pour les challenges auxquels vous êtes confrontés au quotidien compte tenu des contraintes journalistiques et de votre popularité.

Je pense pouvoir vous apporter mes compétences et mon énergie dans trois domaines :

Performances

J’ai remarqué qu’il était possible (naïvement) d’améliorer les performances de votre site. Il y a actuellement plus de 200 requêtes effectuées au chargement de la page d’accueil, ce qui prend 30 secondes à charger totalement en 3G. C’est en deçà des standards actuels en terme de réactivité et cela s’explique de plusieurs manières :

  • les fichiers JavaScript (44) ne sont pas réunis ni compressés ;
  • les fichiers CSS (21) ne sont pas non plus optimisés.

Cela engendre des effets de bord comme le chargement de l’image des sprites CSS en double à la fois appelées par widgets.css et footer.css pour la page d’accueil.

  • beaucoup de fichiers n’ont pas des durées de cache satisfaisantes pour pouvoir réafficher la page sans effectuer de requêtes supplémentaires.

Il y a bien sûr les contraintes liées aux partenaires publicitaires mais d’autres fichiers dépendants du CDN pourraient être optimisés.

  • la taille totale des fichiers CSS (230KB) est importante.

Il serait possible de regrouper les styles propres à l’affichage du contenu au-dessus de la ligne de flottaison et de les intégrer directement dans le HTML pour ne charger les styles additionnels que de manière asynchrone ensuite.

Je suis motivé pour mettre en place un workflow de publication qui prenne en compte des métriques de performances afin d’améliorer incrémentalement la situation.

Lisibilité

J’ai reproduit la fonctionnalité de lecture Zen en une quinzaine de lignes de JavaScript (à coller dans la console du navigateur) :

var title = document.querySelector('article h1');
var content = document.getElementById('articleBody');
document.open();
document.write(title.outerHTML + content.outerHTML);
document.close();
title = document.querySelector('h1');
content = document.getElementById('articleBody');
title.style.textAlign = 'center';
title.style.fontSize = '40px';
title.style.color = '#555';
content.style.fontSize = '25px';
content.style.width = '30em';
content.style.lineHeight = '1.3';
content.style.margin = '0 auto';
content.style.color = '#07486C';

Mon objectif n’est pas ici de la remplacer compte-tenu du potentiel de conversion des lecteurs/clients qu’elle représente mais bien de l’améliorer et de la personaliser en fonction des capacités de la personne.

Je souhaite participer aux recherches ergonomiques et typographiques permettant d’améliorer la lisibilité du contenu du site.

Veille technologique

Je pratique une veille technologique au quotidien que je partage sur mon site/blog : https://larlet.fr/david/ . Je suis persuadé que de nombreuses expériences effectuées par l’équipe technique pourraient être partagées avec la communauté. C’est par exemple le cas pour l’équipe de M6 : http://tech.m6web.fr/ .

Je propose de mettre en place un espace de partage et d’échange avec la communauté qui permettrait de s’enrichir de retours externes et de pratiquer un recrutement passif.

Je suis disponible pour vous rencontrer dans vos locaux ou au cours d’un déjeuner. Vous pouvez également me contacter par téléphone au 06 84 93 58 23.

Cordialement,
David

Résultats

Je suis conscient de la difficulté de l’exercice, surtout réalisé en 2 heures, j’ai moi-même été pressé par le temps et dû proposer une solution JS pour le zen mode qui ne me satisfait pas et à relire le mail je pense que j’aurais changé le style mais c’est le jeu. Dans tous les échanges qui ont suivi, j’ai beaucoup insisté sur le fait qu’il s’agissait de mon point de vue et qu’il différait peut-être beaucoup de celui du directeur technique (Olivier si tu lis ces lignes…).

Une seule personne sur les 10 présentes a réussie a identifier le destinataire du mail. Les autres se sont principalement adressées aux ressources humaines. Cela a donné lieu à une discussion sur l’intérêt de connaître le destinataire et de suivre ses centres d’intérêts. Ici il fallait clairement parler de React :-).

La moitié des mails ont été des fichiers PDF joints (ou pire : du docx) comportant le CV et une lettre de candidature générique. Cela a permis de discuter de l’intérêt d’un CV et de l’importance de mettre sa candidature directement dans le corps du mail. Il a aussi été question de ratisser large vs. s’adresser à une personne et un projet. Problématique qu’ils ont déjà lors de leur recherche de stage.

Deux étudiants ont personnalisé la candidature mais sans aller assez loin et en donnant des informations et principes trop généralistes pour être pertinents (tenter d’apprendre ce qu’est le responsive design à un directeur technique de journal en ligne n’est à mon avis pas une bonne idée). Il faut savoir être force de proposition tout en restant humble.

Trois personnes ont fait des audits de performances et ont réutilisé ce que l’on avait vu en cours pour proposer leurs compétences de manière pertinente. C’est peu mais c’est déjà ça !

Globalement, je suis un peu déçu de ce qu’ils m’ont proposé mais je pense que la discussion qui a suivie leur a donné de la matière pour réfléchir et améliorer leur approche.

Évaluation

J’ai toujours beaucoup de mal avec la notation demandée. Après discussion, la note finale aura 3 origines :

  • une auto-évaluation portant sur leurs acquis puis sur l’exercice ;
  • une évaluation collective sur l’exercice ;
  • une évaluation de ma part sur l’exercice.

L’évaluation auto/collective à base de post-it fonctionne très bien et prend un quart d’heure pour 10 personnes.

March 02, 2015 11:00 AM

March 01, 2015

Eric van der Vlist

Parc de Sceaux

[fr] Pour les cyclistes, le Parc de Sceaux est à une dizaine de kilomètres de Paris par la coulée verte du sud parisien… [en] Cyclists will appreciate that the Parc de Sceaux is only about ten kilometers away from Paris … Continue reading

by Eric van der Vlist at March 01, 2015 08:10 PM

David Larlet

Inclusion explicite

So before we begin, I want to reinforce that you can program, that you can do math, that you can design car suspensions and fire suppression systems and spacecraft control software and distributed databases, regardless of what your classmates and media and even fellow engineers think. You don’t have to be white, you don’t have to be straight, you don’t have to be a man. You can grow up never having touched a computer and still become a skilled programmer. Yeah, it’s harder–and yeah, people will give you shit, but that’s not your fault and has nothing to do with your ability or your right to do what you love. All it takes to be a good engineer, scientist, or mathematician is your curiosity, your passion, the right teaching material, and putting in the hours.

There’s nothing in this guide that’s just for lesbian grandmas or just for mixed-race kids; bros, you’re welcome here too. There’s nothing dumbed down. We’re gonna go as deep into the ideas of programming as I know how to go, and we’re gonna do it with everyone on board.

No matter who you are or who people think you are, this guide is for you.

Clojure from the ground up: welcome (cache)

Toujours partagé entre l’implicite et l’explicite pour l’inclusion (qui diffère (cache) de l’intégration). Cela devrait être implicite mais en même temps ce n’est pas le cas, mais le rendre explicite ne fait qu’entretenir le problème, mais le taire c’est encore pire, mais c’est culpabilisant, mais c’est victimisant, mais

March 01, 2015 11:00 AM

Karl Dubost

Éditeur de texte semi-structurel

Essantage en bois laissant apparaître du torchis Kugenuma, Japon, 7 février 2015

Usage de la fenêtre : inviter la beauté à entrer et laisser l'inspiration sortir.

Sylvain Tesson, Dans les forêts de Sibérie.

Il y a 15 ans. Je pensais souvent que les éditeurs de texte HTML se répartissaient en deux catégories : le wysiwyg (Dreamweaver, Amaya, etc.) et les éditeurs de textes avec une barre de commandes de markup. Les uns cachaient la structure, les autres montraient une bouillie de balises colorées.

Les éditeurs wysiwyg ont plus ou moins disparu. Les éditeurs de markup existent toujours (sublime text, textmate, etc.) et c'est toujours de la bouillie, malgré les améliorations thématiques. Entre temps, les éditeurs de texte MarkDown sont apparus. Ils ont commencé eux aussi avec une bouillie de markup Markdown. Une bouillie plus simple puisque le format de MarkDown a été conçu pour que le texte soit lisible en texte seul. Et puis ces dernières d'énormes progrès ont été réalisés sur les interfaces de rendu. Deux stratégies : une fenêtre de rendu parallèle au markup synchronisé en temps réel ou un éditeur structurel stylisé. Il y a un réel travail de recherche ergonomique dans ces outils. Je pense à iA Writer et récemment Ulysses III.

Copie de l'interface Éditeur de texte Ulysses III

Ce qui me désole, c'est que la plupart des éditeurs de texte de markup HTML ne savent toujours pas gérer ce niveau d'ergonomie ou les balises s'effacent pour laisser la place à une interface ergonomique d'édition structurelle qui serait elle-même paramétrable avec les rendus de son choix. On approche de cette possibilité avec les thèmes, mais leurs options ne sont pas encore suffisantes.

March 01, 2015 08:33 AM

February 28, 2015

Gautier Poupeau

De quoi le Big Data est-il le nom ?

Comme l'a justement rappelé Manue sur le Figoblog, alors qu'il a atteint le ravin de la désillusion, le Big Data a désormais dépassé le stade du "buzzword". On peut aujourd'hui en voir les applications concrètes même si celles-ci restent souvent limitées, comme l'explique cette étude de Cap Gemini décryptée par ZDnet qui rappelle que seuls 13% des projets dits de Big Data sont entrés en production ou cet article très complet, "Le Big Data : un enjeu pour les industries créatives", paru sur le site INA Global qui, au-delà des exemples de réalisations, démontre les problèmes nombreux qu'ils restent à résoudre. Les espérances qui ont été placées dans cette évolution technologique doivent-elles être revues à la baisse ? Ou au contraire, est-ce le bon moment pour approfondir et développer les cas d'usage qui ont commencé à émerger ?

De fait, ces premières applications sont aujourd'hui suffisamment intéressantes pour justifier qu'on s'y intéresse de près et qu'on étudie les causes des échecs. Or, il apparaît qu'un des facteurs récurrents d'échec est la donnée elle-même (données de qualité insuffisante, mal agrégées...). Aurait-on oublié de s'intéresser à la donnée elle-même dans le Big Data ? Sans aller jusque là, il semble bien que la donnée, l'attention (pour ne pas dire curation...) qu'on y prête, sa compréhension n'aient pas totalement été au centre des préoccupations jusqu'à maintenant. Or, c'est précisément le rôle du professionnel de l'information. Mobilisant leurs compétences sur les données, ils doivent s'emparer du sujet pour faciliter son appréhension par les "directions métiers". Cela passe par une appropriation de la technologie : les professionnels de l'information ont aujourd'hui besoin de savoir ce qui se cache concrètement derrière ce terme de "Big Data". C'est que je me propose d'initier à travers ce billet.

<!--break-->

Pour entrer directement dans le vif du sujet, une définition et un exemple :

Pour en donner une définition très générale, le Big data désigne la capacité technologique à traiter de très grandes masses de données avec des infrastructures matérielles standards.

L'exemple le plus frappant de projet big data, c'est Watson, l'application d'IBM qui a gagné Jeopardy. Afin de répondre à des questions posées en langage naturel, cette application agrège tous les systèmes possibles et imaginables de traitement automatique de la langue, recherche d'information, représentation des connaissances, raisonnement automatique et de machine learning. Mais, son fonctionnement a nécessité d'imaginer une infrastructure spécifique pour stocker les données et répondre aux besoins de ressources machines nécessaires pour effectuer les traitements. Or, l'enjeu du Big data, c'est de réussir à mettre en place des usages aussi performants qu'un Watson mais avec des infrastructures standards.

Le Big Data répond donc à un double objectif :


Que le traitement soit parallèle et distribué ! Et le Big Data fut !

Qui n'a pas entendu parler d'Hadoop ? Ce nom est pratiquement devenu synonyme de Big Data mais peu de gens savent exactement de quoi il s'agit. En effet, une fois qu'on a lu de A à Z l'article de Wikipédia qui explique qu'Hadoop est un framework logiciel en Java dont le logo est un éléphant jaune à cause du doudou du fils de son créateur, on n'est guère plus avancé... Alors à quelles questions Hadoop répond-il en réalité ?

Les informaticiens sont partis d'une idée simple : face à un problème, pour réduire sa complexité, on va le découper en problèmes plus petits, chacun pouvant être traité en parallèle par un processeur différent. Tous les développeurs vous expliqueront que pour faire cela, il faut concevoir dès l'origine les traitements pour qu'ils puissent être parallélisés. C'est complexe, coûteux et nécessite des compétences très spécifiques.

C'est là que l'algorithme Map Reduce intervient : il simplifie l'implémentation de ce découpage d'un processus en plusieurs processus plus simples. Ainsi au lieu d'allouer un traitement à un seul processeur, Map Reduce va utiliser toute la puissance machine disponible dans le serveur en attribuant le processus de départ à plusieurs processeurs. En gros, si j'ai huit processeurs dans ma machine, je sépare mon processus en huit et je vais donc pouvoir effectuer mon traitement huit fois plus vite.

Huit processeurs c'est bien, mais que se passe-t-il si je veux en utiliser seize ou trente-deux ? Une fois qu'on est capable de répartir un processus sur plusieurs processeurs, l'étape suivante du passage à l'échelle consiste à être capable de distribuer la même opération sur plusieurs machines. On parle alors de clustering. Pour cela on "fait croire" au processus qu'il tourne sur une seule machine en lui fournissant une vue abstraite de l'infrastructure matérielle et en particulier du système de fichier. C'est le rôle de HDFS (Hadoop Distributed File System).

Hadoop est donc un framework de développement qui offre de base ces deux fonctions : le parallélisme avec Map Reduce et la distribution avec HDFS. Mais cela ne résout pas tout... En effet, il faut quand même réécrire les traitements informatiques dont on dispose déjà pour les rendre compatibles avec Map Reduce et les compétences en la matière sont encore rares.

A signaler que l'algorithme de Map Reduce, et, par conséquent, Hadoop sont aujourd'hui remis en cause, les utilisateurs se plaignent, entre autres, de sa latence qui en complique l'utilisation dans des environnement "temps réel". Spark, porté par la fondation Apache comme Hadoop, semble ainsi répondre mieux à cette problématique et remplace Map Reduce dans des cas de plus en plus nombreux (cf. par exemple le cas du framework de Machine Learning Apache Mahout).


Au delà du relationnel, vers l'infinité du NoSQL !

Pouvoir manipuler des données en masse, c'est bien, mais vient un moment où il faut les stocker ces données et dans le paradigme traditionnel des bases de données relationnelles, cet objectif devient relativement vite une gageure.

Pourquoi ?

Pour comprendre où se situe le problème, il est nécessaire de revenir sur la problématique de la montée en charge ou scalabilité. Il existe deux types de scalabilité :

  • la scalabilité verticale : la montée en charge est assurée par la montée en puissance d'une machine et donc de la capacité du système à l'exploiter  ;
  • la scalabilité horizontale : la montée en charge est assurée par l'ajout de machines et donc la capacité du système à répartir la charge et le stockage sur plusieurs machines. Ce type de scalabilité est théoriquement infini (dès qu'on manque de place, on rajoute une machine et hop ! le tour est joué. Bon dans les faits, ce n'est pas aussi simple...).

Le problème avec les bases de données relationnelles, c'est qu'intrinsèquement elles ne sont pas scalables horizontalement en raison de l'un de leurs principes fondateurs : ACID (atomicité, cohérence, durabilité, isolation) qui assure la fiabilité d'une transaction en garantissant la cohérence et l'intégrité des données.

Pour assurer la scalabilité horizontale (c'est-à-dire stocker les données sur un cluster de machines), il est nécessaire de relâcher les contraintes d'ACIDité, les contrôles d'intégrité étant potentiellement impossibles à réaliser en temps réel sur toutes les machines d'un cluster, au profit du principe BASE (Basically Available, Soft state, Eventual consistency). Il est basé sur le théorème CAP (dit théorème de Brewer) qui dit qu'il est impossible sur un système informatique de calcul distribué de garantir en même temps la cohérence, la disponibilité et la résistance au morcellement.

De fait, le Big Data exige donc l'abandon de la base de données relationnelle en tant que système de stockage des données, au profit de systèmes dans lesquels chaque donnée porte sa propre cohérence sans qu'il soit nécessaire de vérifier ses liens avec d'autres pendant les traitements (stockage, requêtage). C'est ce qu'on appelle le NoSQL. Bien évidemment, si ces modèles très simples sont plus souples, ils ne permettent pas dans la plupart des cas une structuration de l'information aussi fine que les bases de données relationnelles.

Il existe trois modèles de stockage dans l'univers NoSQL qui répondent à la problématique de la scalabilité horizontale :

  • le Key/Value store (base Clé/Valeur ou K/V store) : il consiste à stocker sur chaque ligne une paire atomique constituée d'un identifiant auquel est associé une donnée quelle que soit sa nature (exemples : Redis, Voldemort, Amazon DynamoDB, Tokyo Cabinet) ;
  • le Document store (base de donnée orientée document) qui est le modèle le plus familier aux professionnels de l'information, puisque c'est le principe des bases de données XML ou des moteurs de recherche. Chaque « atome » est un document indépendant et structuré de manière hiérarchique en XML ou Json (entendez le terme document dans la définition que j'en ai donné dans le billet : les carcans de la pensée hiérarchique et documentaire) et il est assez complexe d'exploiter des liens entre les documents (exemples : MongoDB, CouchDB voire ElasticSearch) ;
  • le column store (base de données orientée colonnes) : les données sont stockées sous forme de colonnes au lieu de les stocker sous forme de lignes, ce qui permet de stocker un très grand nombre de données dans une seule table. (exemples : HBase et Cassandra basés sur Hadoop, Google Big Table).

A signaler que pour en simplifier l'appropriation par les développeurs, le langage SQL est de plus en plus implémenté au-dessus des systèmes NoSQL. Ainsi, le logiciel Apache Drill offre une interface SQL à Hadoop. Le nouveau et l'ancien monde sont ainsi réconciliés ce qui a tendance à rassurer les DSI.

Parmi les solutions NoSQL, une quatrième famille est un peu à part : les graph databases (base de données orientée graphes). En effet, si, au contraire des précédentes, les bases de données de graphes présentent une structuration très fine de l'information de par l'utilisation du modèle de graphes (comme son nom l'indique), ce même modèle rend complexe la scalabilité horizontale.

Si vous êtes des lecteurs de ce blog (et pour les nouveaux, vous pouvez jeter un coup d'œil par ), vous vous doutez bien que, malgré leurs limites, j'ai un petit faible pour cette famille puisque les bases de données RDF (ou Triple store) sont un sous-ensemble des bases de données orientées "Graphe". Or, si j'en crois le buzz (ou encore) qui entoure actuellement les bases de données de graphes, je suis confiant quant à la résolution de ce problème. Ainsi, de très nombreuses solutions arrivent sur le marché avec la promesse de résoudre la problématique de la scalabilité horizontale. On peut citer les pionniers dans le domaine Neo4J, blazegraph, Virtuoso, AllegroGraph et les nouveaux venus : graphX, SparqlCity ou toutes les tentatives de construire des triples store sur des solutions NoSQL comme CumulusRDF. Même si, aujourd'hui, il est nécessaire de rester prudent avec ces technologies dans un environnement contraint au niveau des performances, l'intérêt est tel que les choses vont à coup sûr évoluer.

Si vous voulez en savoir plus sur les solutions NoSQL, je vous conseille cette présentation en anglais, SQL, NoSQL & Big Data in Data Architecture et celle-ci en français, Introduction NoSQL.


Abracadabra ! Et l'algorithme devient magie pour l'utilisateur !

L'analyse prédictive est aux usages ce que Hadoop est aux technologies : un symbole du Big Data. Et, pour cause, les résultats de tels systèmes peuvent être réellement bluffants et, à ce titre, l'usage qui en a été fait par l'équipe de campagne de Barack Obama pour sa réélection a marqué les esprits. Le système déployé par la Digital task Force d'Obama visait à identifier les quartiers susceptibles d'être réceptifs aux actions de porte-à-porte et le discours à y porter par les militants à partir de différents critères : l'analyse socio-démographique des différents quartiers (ou comment l'Open Data mis en place pendant le 1er mandat a permis de remporter le 2nd...), la corrélation prédictive des votes en fonction de l'analyse des votes précédents par zone géographique et la corrélation avec les sondages d'opinion ou études afin de connaître au plus près les thèmes de "bascule".

Mais, c'est bien évidemment dans le domaine du marketing que l'analyse prédictive est aujourd'hui le plus utilisée. A partir de l'analyse des traces laissées par les utilisateurs (clic, achat, paniers, temps resté sur une page, visionnage d'un média...), il est possible de prédire le comportement d'un internaute. Pour ce faire, tout comme dans l'exemple précédent, un modèle est mis au point à partir de motifs récurrents puis on soumet à ce modèle les nouvelles données pour en prédire la tendance ou le comportement futur. C'est ainsi que fonctionnent les systèmes de recommandations, de mises en avant, de similarité... Il est aussi possible aux sites Web de prédire le comportement d'achat d'un visiteur à partir de l'analyse de son parcours de visite et ainsi de le réorienter par une bannière pub ou une mise en avant spécifique.

Si auparavant l'analyse prédictive était l'apanage du monde de l'assurance (évaluation des risques) et de la finance (et on a vu la limite de certains modèles hasardeux pendant la crise financière...), l'analyse prédictive est maintenant utilisé pour des usages moins vénaux : prédiction du climat, diagnostic médical... Les technologies du Big Data ont peu à peu fait baisser le coût de déploiement de l'analyse prédictive et l'ont rendue accessible. Aujourd'hui avec des logiciels Open Source comme Prediction.io ou des solutions en SaaS comme Google Prediction API ou BigML, il est possible de déployer un tel système en quelques jours.

Parmi les systèmes d'analyse prédictive, on retrouve les systèmes d'apprentissage automatique ou machine learning. Leur objectif est de mettre en place un système permettant d'apprendre une tâche à la machine pour qu'elle puisse l'effectuer automatiquement. La mise au point des algorithmes d'apprentissage est bien souvent antérieur au Big Data. Mais, comme pour l'analyse prédictive, la simplification de la parallélisation et du clustering ont rendu possible l'usage de ces technologies à une très large échelle et donc leur coûts de déploiement avec des performances d'exploitation satisfaisantes.

Il existe deux catégories principales d'apprentissage automatique : les systèmes dits supervisés et non supervisés.

Le fonctionnement du premier cas est bien connu de tous puisque c'est le principe de base des anti-spam. Grâce à un algorithme dit bayésien, l'utilisateur apprend à la machine à détecter les spams en lui indiquant dans un premier temps la nature des différents mails d'un corpus d'exemple. D'une manière générale, l'apprentissage supervisé vise à déterminer la classe d'une donnée à partir d'exemples connus. Il est ainsi possible de mettre en place des systèmes qui classe automatiquement des documents dans des catégories (cf. dans Isidore la facette Disciplines) grâce à l'algorithme SVM (Support Vector Machine) qui se base sur la comparaison de vecteurs de motifs, dans le cas d'un texte, des vecteurs de mots. Ces technologies sont aussi au cœur des systèmes d'analyse d'images comme celui mis au point par le Département de la recherche de l'INA, Diginpix.

L'apprentissage non supervisé, quant à lui, se base uniquement sur des exemples de données sans classes ou étiquettes a priori pour effectuer du clustering de données, c'est-à-dire la création automatique d'ensembles cohérents de données. Les algorithmes tels que le LDA (Latent Dirichlet Allocation) permettent ainsi de déterminer des ensembles cohérents de documents au sein d'un corpus. Ce type d'apprentissage permet aussi de calculer des similarités entre des données.

Enfin, en matière d'exploitation des données, il est un domaine qui a retrouvé une nouvelle jeunesse grâce au Big Data : les statistiques et, avec elles, la Business Intelligence. Ainsi, que ce soit les acteurs historiques de la BI comme SAP ou les "pures players" du Big Data comme Cloudera avec Impala, tous conjuguent systèmes analytiques avec Big Data, ont adapté leur discours marketing à ce nouveau « buzzword » et leurs offres logicielles au nouvel environnement technologique. Et, pour cause, la donnée est maintenant nativement voire exclusivement numérique et les technologies sont matures et plus simples à déployer. Mais, les statistiques les plus traditionnelles ne sont pas en reste et on voit arriver sur le devant de la scène des suites logicielles anciennes comme le logiciel Open Source R bien connus des statisticiens. En effet, quoi de mieux que les statistiques pour appréhender des masses de données en les ramenant à des tendances chiffrées ou les représenter sous la forme de graphiques. C'est dans ce domaine que le Big Data rencontre les problématiques de la Data Visualisation ou dataviz.

Cette partie est la plus éloignée des compétences traditionnelles des professionnels de l'information. Elle a d'ailleurs vu émerger un nouveau profil très à la mode, le data scientist. Pour autant, associer un professionnel de l'information à un data scientist pourrait s'avérer un calcul gagnant tant leurs compétences sont complémentaires.


Si, finalement, ce n'était qu'une histoire de plomberie ?

L'exécution des algorithmes que nous venons d'évoquer nécessite de manipuler les données : récupération dans les systèmes de stockage, nettoyage, mise en cohérence, enrichissement et conversion des données, chargement dans les systèmes d'exploitation... Autant d'étapes qu'il est nécessaire d'implémenter pour disposer d'un système fonctionnel. Or, dans ce domaine, si l'industrialisation tant du développement que de l'environnement d'exécution n'est pas pensé en amont, le système d'information est peu à peu envahi par un empilement de scripts et de bouts de code qu'il s'avère difficile à maintenir et à réutiliser obligeant à réinventer la roue à chaque nouveau besoin et je ne vous parle pas de la supervision de tout ça, vos équipes de production vont rapidement vivre un cauchemar.

Or, on voit aujourd'hui des outils issus de mondes différents converger vers un objectif commun : industrialiser le développement et l'exécution de chaînes de traitement de données. Ils ont vocation à orchestrer des traitements simples, modulaires, de manière successive afin d'aboutir à un processus complexe et, pour ce faire, ils offrent, dans la plupart des cas, des interfaces graphiques de développement et de supervision des traitements. En outre, l'intérêt de ces outils réside dans leur extensibilité, puisqu'il est possible grâce à une API de créer des nouveaux modules et d'étendre ainsi les fonctionnalités proposées. Un non informaticien avec quelques connaissances de développement peut donc prendre en main facilement ces outils, je dirais même qu'ils constituent les outils de base du professionnel de l'information dans l'environnement du Big Data.

Les ETL (Extract, Transform, Load) sont la première famille d'outils de ce type. Ils viennent de la BI et ont à l'origine pour objectif de simplifier la récupération des données depuis les applicatifs du SI (souvent des bases de données relationnelles) pour alimenter des puits de données (data warehouse). Leur grande force réside donc dans leur capacité à extraire des données des différents types de bases de données, à les convertir et à les charger dans d'autres bases de données. Une interface graphique permet de construire la chaîne de traitement en articulant différents modules (ou node/component) atomiques ce qui simplifie la mise en œuvre. La plupart des ETL sont en train de s'adapter au monde du Big Data par l'ajout de connecteurs spécifiques pour interagir avec les bases NoSQL et par l'usage de Hadoop comme infrastructure de base à l'exécution des traitements. Par exemple, le logiciel Open Source Talend basé sur Eclipse propose une distribution spécifique Big Data : Talend Open Studio for Big Data. Il en va de même pour son concurrent libre : Pentaho Data Integration.

Les data pipeline dont le plus célèbre est Yahoo Pipes fonctionnent globalement sur le même principe (workflow de modules atomiques) mais sont plutôt issus du domaine des données semi et non structurées. De fait, là où les ETL sont très efficaces pour la manipulation de données issues de bases de données relationnelles, les systèmes de data pipeline sont plutôt adaptés aux flux XML et à l'exploitation de textes. De plus, ils intègrent nativement des modules d'enrichissement et d'exploitation de la donnée plus avancés couvrant toute la pile technologique du Big Data. Enfin, ils se présentent bien souvent sous la forme de plate-formes ou de "studios" qui intègrent à la fois le développement, l'exécution et la supervision au sein d'une même interface graphique. Dans ce domaine, on peut citer :

  • Antidot Information Factory de mon précédent employeur Antidot ;
  • Knime, un logiciel Open Source mis au point dans le domaine de la bio-informatique mais qui l'a largement dépassé et qui intègre de nombreux outils statistiques et différents algorithmes de machine learning par l'intégration de la bibliothèque Weka ;
  • Data science studio du français Dataiku dont l'objectif est d'offrir les moyens de rapidement traiter des données et de les utiliser dans des systèmes intégrés de machine learning.

Enfin, les systèmes de gestion de workflow comme Bonita peuvent aussi constituer des solutions en la matière. Issus du monde de la gestion des processus métier, le BPM (Business Process Management), ils se basent sur la modélisation des processus métiers (diagrammes de flux ou flow charts) pour outiller chaque étape au moyen d'une interface graphique. Si on considère le traitement de la donnée comme un processus métier, on peut utiliser ce type d'outil pour le modéliser et l'implémenter.


Et le professionnel de l'information dans tout ça ?

Le Big Data est au milieu du gué : comme le Web à la fin des années 1990, les technologies sont matures mais les usages peinent à atteindre les espoirs qu'on a mis en lui et les échecs sont nombreux. Or, ces derniers et l'absence de montée en puissance des usages sont dus en grande partie à des limites dans l'exploitation de la donnée et de sa richesse. Lorsqu'on voit ce qu'il est possible de faire avec quelques logs, données d'une pauvreté affligeante, on peut facilement imaginer ce qu'on pourrait obtenir en les corrélant avec les "données métiers". Or, c'est bien là que les professionnels de l'information ont un rôle à jouer de par leur connaissance de la donnée.

Ainsi, si les professionnels de l'information s'appropriaient cette technologie à un niveau suffisant pour en comprendre ce qu'il est possible d'offrir en s'appuyant sur les données disponibles, les possibilités s'en trouveraient démultipliées. C'est un travail que les data scientists ne peuvent effectuer seuls : ils doivent s'associer à des professionnels de l'information qui comprennent les modèles de données et les objets qu'elles décrivent. Avec le Big Data, le professionnel de l'information est plus que jamais à l'articulation entre les informaticiens et le métier. L'enjeu est de faire du Big Data une évolution dans les usages et pas seulement une évolution technologique.

Par contre, vous l'aurez compris : investir le domaine du Big Data implique la révision d'un très grand pan de votre système d'information (et encore je vous ai épargné le concept de "lac de données"), ce n'est donc pas un sujet à prendre à la légère d'autant qu'il s'avère crucial pour faire face aux enjeux de demain.

Merci à Manue de m'avoir aidé à accoucher de cette synthèse !

by got at February 28, 2015 07:10 PM

Karl Dubost

Trois petites choses dans les ruelles de Kugenuma

arbre visible dans la découpe d'un mur Kugenuma, Japon, 7 février 2015

Le camion n'est plus qu'un point. Je suis seul. Les montagnes m'apparaissent plus sévères. Le paysage se révèle, intense. Le pays me saute au visage. C'est fou ce que l'homme accapare l'attention de l'homme. La présence des autres affadit le monde. La solitude est cette conquête qui vous rend jouissance des choses.

Sylvain Tesson, Dans les forêts de Sibérie.

Qui du mur ou de l'arbre a existé le premier ? Ce n'est finalement pas si important. Cependant, le mur a été ouvert ou construit pour l'arbre. Les harmonies simples sont de vrais cadeaux de l'humanité. Le geste simple du respect de la beauté, de l'environnement et du partage.

tas de bois coupés et ficelés Kugenuma, Japon, 7 février 2015

Une personne a coupé le bois dans son jardin. Une personne va ramasser le bois dans la rue. Le bois a été coupé et ficelé en unités faciles à transporter. Une série d'actions asynchrones et pourtant il y a la conscience du travail entre deux individus, un respect silencieux, non verbal et non présent qui est transmis.

oranges sur un mur Kugenuma, Japon, 7 février 2015

Les oranges de février envahissent le ramage. L'oranger est dans une propriété derrière un mur dont l'arrête est à la hauteur de mes yeux. Une personne qui circulait dans cette ruelle a pris les deux oranges et les a placées sur le mur. Le chemin est dégagé. Personne ne marchera dessus. Les vélos n'écraseront pas les fruits. Le propriétaire n'aura pas à nettoyer la rue. Le propriétaire pourra récupérer le fruit pour le consommer.

Les petites choses du quotidien qui donne à vivre avec le sourire.

February 28, 2015 01:25 PM

Un calendrier plus pratique

Porte bleue usée avec ruban collant rouge Meguro, Japon, 6 février 2015

Les dernières flammes du poêle meurent vers 4 heures du matin. À l'aube, il gèle dans la pièce. Il faut se lever et allumer le feu : deux gestes qui célèbrent le passage de l'hominidé à l'homme. Je commence ma journée en soufflant sur les braises. Puis je me recouche le temps que la cabane prenne la température d'un œuf.

Sylvain Tesson, Dans les forêts de Sibérie.

Dans les applications de calendrier (à noter que ce sont des applications d'événements plus que de calendrier), j'aimerais

  • avoir la possibilité de mettre dans le calendrier la localisation par intervalle de temps avec une hiérarchie. Exemple : France, de 2014-12-12T19:20+01:00 au 2015-01-07T17:05+01:00.
  • pouvoir ajouter une redéfinition locale pour les intervalles en raffinant par exemple de telle heure à telle heure à cette endroit en héritant ou spécialisant les données du niveau hiérarchique supérieure.
  • supprimer tous les événements appartenant à cette catégorie entre ces deux événements. Par exemple, si j'ai habituellement un événement récurrent comme une activité sportive mais que j'ai une semaine de travail spéciale. Ces événements pourraient être déclarés invalides.
  • supprimer tous les événements situés dans cette aire géographique lorsque nous sommes dans une autre aire géographique. Même principe que précédemment.

February 28, 2015 01:20 PM

David Larlet

Lois de la robotique

Les 3 lois de la robotique par Asimov :

  1. Un robot ne peut porter atteinte à un être humain, ni, en restant passif, permettre qu’un être humain soit exposé au danger.
  2. Un robot doit obéir aux ordres qui lui sont donnés par un être humain, sauf si de tels ordres entrent en conflit avec la Première loi.
  3. Un robot doit protéger son existence tant que cette protection n’entre pas en conflit avec la Première ou la Deuxième loi.

Que se passe-t-il lorsque l’on remplace « Un robot » par « Le code d’un développeur » ?

  1. Le code d’un développeur ne peut porter atteinte à un être humain, ni, en restant passif, permettre qu’un être humain soit exposé au danger.
  2. Le code d’un développeur doit obéir aux ordres qui lui sont donnés par un être humain, sauf si de tels ordres entrent en conflit avec la Première loi.
  3. Le code d’un développeur doit protéger son existence tant que cette protection n’entre pas en conflit avec la Première ou la Deuxième loi.

La première loi rend le développement de drones impossible, la deuxième le trading haute fréquence impossible, la troisième la surveillance de masse impossible. Je ne résiste pas à réécrire la loi zéro également :

Le code d’un développeur ne peut pas faire de mal à l’humanité, ni, par son inaction, permettre que l’humanité soit blessée.

Une profession sans éthique (cache) n’est qu’une armée de robots. Sans lois.

February 28, 2015 11:00 AM

Karl Dubost

Les bookmarklets en danger

Pieds de vache Singapour, 16 janvier 2015

La cabane mesure trois mètres sur trois. Un poêle en fonte assure le chauffage. Il deviendra mon ami. J'accepte les ronflements de compagnon-là. Le poêle est l'axe du monde. Autour de lui, tout s'organise. C'est un petit dieu qui possède sa vie propre.

Sylvain Tesson, Dans les forêts de Sibérie.

J'utilise quelques « bookmarklets, » ces petits bouts de code JavaScript que l'on place dans la barre de signets du navigateur pour effectuer une tâche simple et rapide. L'un de ceux que j'utilise le plus souvent est un petit script pour extraire un texte sélectionné d'une page Web et envoyer un mail comprenant la référence, la date, etc. Ma version actuelle du script est :

var q = '';
if (document.selection) {
    q = document.selection.createRange().text;
} else if (window.getSelection()) {
    q = window.getSelection().toString();
}

function wraptext(text, textwidth) {
    c = text.split('');
    var textfmt = '';
    var linelength = 0;
    var word = '';
    for (i = 0; i < c.length; i++) {
        if (c[i] == ' ' || c[i] == '\n') {
            if (linelength > textwidth) {
                textfmt = textfmt + '\n' + word + c[i];
                linelength = c[i] == ' ' ? word.length + 1 : 0;
            } else {
                textfmt = textfmt + word + c[i];
                linelength = c[i] == ' ' ? linelength + 1 : 0;
            }
            word = '';
        } else {
            word = word + c[i];
            linelength++;
        }
    }
    return textfmt;
}
var textfmt = wraptext(q, 50);
location.href = 'mailto:?SUBJECT=' + encodeURIComponent(document.title) + '&BODY=' + escape('\n\nOn ') + new Date(document.lastModified).toUTCString() + escape('\nIn ') + encodeURIComponent(document.title) + escape('\nAt ') + encodeURIComponent(location.href) + escape('\n\n') + encodeURIComponent(textfmt) + escape('\n');

Sur le projet webcompat.com, nous avons une touche magique 'g' qui permet de passer de la page du bug sur webcompat vers la page équivalente sur GitHub. Un des problèmes est que bien sûr on ne peut pas programmer le serveur de GitHub pour faire le mouvement inverse. Je voulais résoudre ce problème par un simple bookmarklet qui me redirigerait vers le bug sur webcompat. J'ai codé ce petit bout de script très simple.

l=document.location;
if(l.origin==='https://github.com'){
  githubPathname=l.pathname;
  pathArray=githubPathname.split('/');
  webcompatLocation='https://webcompat.com/'+pathArray[3]+'/'+pathArray[4];
  document.location.href=webcompatLocation;
}
else{
  alert('not%20github%20here');
}

Cela ne fonctionne et pour une raison très simple. Content Security Policy a imposé de nouvelles restrictions sur l'exécution de JavaScript sur les pages Web. Bien que la spécification note explicitement qu'il est possible dans certains cas de permettre de se dérober aux contraintes, y compris pour les bookmarklets.

Note: User agents may allow users to modify or bypass policy enforcement through user preferences, bookmarklets, third-party additions to the user agent, and other such mechanisms.

W3C, Content Security Policy Level 2.

Ce n'est toujours pas le cas pour Firefox (au moins). Ce bug malheureusement ne trouve pas de développeurs pour le corriger, peut-être trop d'implications dans le modèle global de sécurité de Firefox. Ceci dit, cela devient un problème de plus en plus important en termes d'ergonomie et de simples bricolages des sites Web. Comme le dit très bien cet article de Brian Donohue, ce changement tue une partie de la convivialité et de la « hackabilité » (bidouillage) du Web qui le rende amusant à utiliser.

Devoir créer une extension différente pour chaque navigateur n'est pas une solution. C'est même une négation de l'universalité du Web. Dommage.

February 28, 2015 09:25 AM

February 27, 2015

David Larlet

Méthodologie vs. compétences

Moreover, Tim’s initial team were the earliest of early adopters hand-picked by Tim himself. They were the very people that would develop high quality software naturally anyway. The only role the MDD had was in helping the team to gel, and once they had they looked like an impossibly productive team. Tim misidentified the source of this productivity as being the result of his methodology, rather than his competence of himself and his team.

[…]

Don’t fall in to Tim’s trap. Great developers create great software not because they follow the strictures of some methodology but because they are truly great, gifted artisans.

Meditation Driven Development (cache)

C’est l’éternel débat entre inné et acquis, don et persévérance, chance et travail, idée du siècle et LEAN. On peut aisément critiquer une méthode (cache) pour les illusions qu’elle donne, mais on a parfois aussi besoin de certaines illusions pour progresser et se mettre en marche puis s’en affranchir.

Les meilleurs joueurs d’échecs sont aujourd’hui des équipes combinant un humain et un ordinateur. La méthode est un partenaire.

February 27, 2015 11:00 AM

February 26, 2015

David Larlet

Big data et profilage

Dans le domaine de la téléphonie, SFR dispose d’un outil lui permettant de détecter les « churners » (clients qui envisagent de résilier leur abonnement) grâce à l’étude de l’activité des internautes sur le Web : nombre de pages consultées, durée de chaque visite, mots clés saisis dans les moteurs de recherche, etc. Cette analyse permet à l’opérateur de détecter plus de 81 % des profils concernés par une potentielle résiliation. Contactés en amont de leur désabonnement, 75 % des clients finissent par rester chez SFR.

Marketing prédictif : une révolution porté par le big et le smart data (cache)

Je serais curieux de savoir si ces données sont collectées par SFR sur son réseau à l’insu du client. Neutralité du net ?

February 26, 2015 11:00 AM

February 25, 2015

Gautier Poupeau

La donnée en elle-même n'a plus de valeur marchande et alors ?

Au cours des quatre années que j'ai passées chez Antidot (2010-2014), j'ai assisté à des changements profonds dans la manière de penser la monétisation des données. Un constat s'est peu à peu imposé : la donnée elle-même perd de sa valeur marchande et toutes les organisations dont le modèle économique repose peu ou prou sur la vente de données prennent peu à peu conscience de l'obligation d'inventer de nouveaux modes de rémunération. C'est un changement long et complexe auquel les producteurs de contenus dans leur ensemble doivent faire face et il suffit pour s'en convaincre de voir les déboires que vit la presse. Chacun est à la recherche du ou des services, la seule source actuelle de monétisation acceptée par le consommateur, qui lui permettront de survivre à ces bouleversements, mais, dans la plupart des cas, force est de constater que le chiffre d'affaires qu'ils génèrent ne compense pas la baisse des revenus constatée par ailleurs.

Attention, loin de moi l'idée de me plaindre et de regretter le temps passé, d'autant qu'il faut bien le dire : certains producteurs de contenus s'étaient constitué de véritables rentes qu'ils exploitaient pour un service limité et évoluant peu voire pas. Après tout, cela donne l'occasion de redistribuer les cartes. Pourtant, il existe un point crucial qu'il ne faut pas mettre de côté : même si la donnée n'a plus de valeur marchande en soi, sa création représente toujours un coût. Or, la tentation est grande à l'heure des économies pour un manager dont les yeux seraient uniquement rivés sur le chiffre d'effectuer une coupe drastique dans cette activité si consommatrice de ressources.

Cette décision aurait des conséquences terribles. Au niveau de l'organisation elle-même, elle marque le début de sa lente descente aux enfers, car elle constitue une rupture dans la vocation même de l'organisation. Et de manière plus générale, cela déstabilise l'ensemble de l'écosystème de services qui s'est construit autour des données produites par cette organisation. Et c'est finalement là que réside le paradoxe : alors que nous sommes dans une situation où nous avons de plus en plus besoin de données de qualité pour construire de nouveaux services, nous allons faire face à une pénurie car nous n'aurons plus les moyens de les produire.

Puisque la donnée est la richesse de l'organisation, la base sur laquelle de futurs services peuvent être construits, c'est elle qui doit faire l'objet de toutes les attentions. Ainsi, plutôt que de réduire l'activité de production elle-même, il est nécessaire d'investir pour revoir les processus de production et d'exploitation.

Comment alors réduire les coûts pour s'assurer d'une donnée de qualité et créer de nouveaux usages ?

<!--break-->

1- Libérer et lier toutes les données internes

Est-il nécessaire de revenir sur la valeur que constitue la mise en relation de toutes les données d'une organisation ? Ceux d'entre vous qui me suivent depuis plusieurs années m'ont certainement maintes fois lu, vu ou entendu discourir sur cette question (et pour les autres, quelques présentations pour rattraper le retard : Linked Enterprise Data : disposer d'une vue consolidée des données, Wikidata, quand Wikipedia s'intéresse aux données, Relier, réutiliser, partager : l'apport du Web de données avec Emmanuelle Bermès). Il me semble que c'est la base même de toute réflexion sur la production et l'exploitation des données car cette démarche permet de mettre en cohérence, de rationaliser et de casser les silos de données existants et ce faisant permet la mise en place d'une gouvernance des données et d'indicateurs à même de piloter les activités autour des données (donc y compris maîtriser les coûts liés à cette activité).

Par honnêteté, je me dois de faire mention d'un point important : je ne suis plus aussi sûr de la place centrale des technologies du Web sémantique dans cette démarche, du moins pas dans les proportions où je pouvais l'exposer. Et j'avoue être assez d'accord avec la position que Phil Archer a exposée à SemWeb.pro 2014, rappelée par Manue dans ce billet : attribuer des URIs, penser en graphe et faire du JSON-LD.

De plus, en liant les données issues des différents silos, elles sont libérées de leurs usages initiaux. En effet, en séparant les données de leurs usages applicatifs d'origine, les conditions (c'est à dire la métastabilité) sont réunies pour l'innovation et donc l'émergence de nouveaux usages. Et, une fois mis en place ce processus de libération en interne, il est assez simple techniquement d'en faire profiter l'extérieur par le déploiement d'une stratégie d'open data et d'open API dont les éléments dépendront autant de la nature des données que des objectifs que l'organisation souhaite atteindre par cette ouverture.

Par ailleurs, il existe tout un pan de données dont l'utilité a été démontrée ces dernières années. En effet, s'il y a une chose à retenir des premières années du Big Data (<teasing>qui fera l'objet du prochain billet</teasing>) au niveau des usages, c'est l'énorme potentiel et valeur des traces des utilisateurs. Les logs et les traces laissés par les utilisateurs et/ou produits automatiquement par leur comportement sur un site Web sont autant d'indicateurs qui peuvent enrichir les données "historiques" : systèmes de recommandations, de mise en avant, de similarité, prédiction du comportement, palmarès, liste, hit-parade.... Autant de possibilités ouvertes par l'exploitation de cette masse d'informations.

Dès 2010, Christian Fauré avait expliqué l'importance de ces deux points dans le billet les enjeux d'une bibliothèque sur le Web démontrant leur apport dans l'appréhension des ressources de l'organisation par l'internaute. Il parlait alors "d'orages sémantiques" construits à partir du Web analytic, du text mining, du data mining, des technologies d'indexation et des données structurées en RDF... J'avoue qu'il m'aura fallu quatre ans pour percevoir les enjeux exposés dans ce billet et appréhender les moyens techniques d'y parvenir <teasing>mais j'y reviendrai dans le prochain billet</teasing>.

2- Optimiser les processus de production eux-mêmes

Lorsqu'on aborde les processus de production, la révision des IHM vient évidemment à l'esprit en premier. En effet, la complexité des interfaces est bien souvent proportionnelle à la complexité/richesse des données produites. De plus, ces IHM sont bien souvent anciennes, leur modification étant redoutée car elle pourrait induire une baisse de la productivité et demande aussi un accompagnement au changement qui peut être long et difficile. Peut-être est-il alors possible de penser à un juste milieu et de les modifier par petites touches. Dans cette perspective, les modes d'organisation dits agiles ou itératifs comme la méthode Scrum constituent une bonne solution. Non seulement, ils rapprochent étroitement le métier et les forces de développement au sein d'une task force mais en plus ils impliquent des changements réguliers et en nombre limité ce qui simplifie l'acceptation du changement. Ainsi, les IHM peuvent évoluer par petites touches : système d'auto-suggestion, aide à la saisie, révision des petits défauts ergonmiques...

La révision des IHM constitue aussi un bon moyen pour identifier les tâches manuelles qui pourraient être automatisées. En effet, au fur et à mesure des années, les utilisateurs ont développé des stratégies (parfois très complexes) pour contourner une limitation de l'application ou exécuter des tâches récurrentes. Ils n'ont parfois pas conscience que ces tâches pourraient facilement et rapidement être automatisées. Inversement, la DSI a parfois tendance à railler les solutions mises au point par les utilisateurs et n'a pas conscience que l'ajout de telle ou telle fonctionnalité demandée depuis des années et toujours remise à l'année suivante constituerait une économie substantielle en raison de la répétition de la tâche. Le dialogue, l'écoute doivent donc être de rigueur au même niveau qu'un calcul de ROI pour ces petites tâches.

Dans le même ordre d'idée, la DSI a bien souvent tendance à présenter les systèmes automatiques comme la réponse miracle pour baisser les coûts ce qui a bien entendu pour conséquence de crisper les producteurs de données qui voient leur légitimité et leur compétence remises en cause par des robots. Au-delà des positions caricaturales des uns et des autres, les systèmes automatiques peuvent aider à fluidifier et à simplifier le travail, en le rendant plus efficace et/ou en le déplaçant vers des tâches finalement plus intéressantes (les systèmes automatiques pour fonctionner correctement doivent reposer sur des données de qualité dont la mise au point doit être l'objet de toutes les attentions). Il ne faut donc pas hésiter à proposer des systèmes d'extraction automatique, de classifications, de rapprochements ou des systèmes de règles... dans la mesure où ils sont présentés comme des assistants et non comme des remplaçants.

Enfin, dans certains cas, le crowdsourcing peut représenter un moyen de démultiplier les forces de production. Pour autant, une communauté ne se décrète pas, elle se construit et s'entretient par une animation régulière issue de l'organisation. Il existe plus d'échecs que de réussites en la matière et aucune recette miracle. Le recours au crowdsourcing doit donc être évalué au regard de la communauté potentielle, de l'intérêt que cela représente et des moyens d'animer et de modérer la communauté. Enfin, comme pour les systèmes automatiques, il ne faut éviter de présenter le crowdsourcing comme un moyen de remplacer les ressources et compétences internes mais plutôt le considérer comme une solution permettant de compléter ou de produire des données impossibles à produire en interne.

3- Récupérer et agréger des données externes

Les organisations ont dans de nombreux cas centralisé en interne la production de toutes les données. Or, force est de constater que d'autres organisations ont pour vocation de produire et maintenir certaines de ces données. Il existe ainsi des référentiels "universels" (liste des communes/régions/départements, codes postaux/INSEE, référentiels de personnes, référentiels d'organisations, statistiques diverses et variées, liste d'adresses...) dont la maintenance n'a peut-être que peu de sens au sein d'une organisation. La récupération automatique de ces données permettrait non seulement de supprimer le coût de maintenance interne mais aussi d'offrir peut-être des données plus complètes et à jour.

C'est dans ce domaine, à mon avis, que l'Open Data est le plus intéressant. En effet, s'il n'est pas impossible de contractualiser la récupération de données entre différentes organisations, la libération des données permet non seulement de simplifier de manière incomparable le processus de réutilisation (après tout il n'y a qu'à se servir) mais la présence des jeux de données libérés dans un annuaire permet d'en faire connaître l'existence auprès de tous.

Ainsi, l'Open Data peut certes concourir dans une certaine mesure à l'innovation des usages par les données, mais il est, à mes yeux, surtout un moyen de permettre des économies d'échelle substantielles par le fait qu'il permet de mettre en place un écosystème de données réutilisables et ainsi d'éviter aux organisations de maintenir certains données qui ne sont pas leur cœur de métier. C'est dans cette perspective que les notions d'interopérabilité et de confiance sont cruciales dans le processus de libération des données.

Last but not least, la récupération de données externes peut aussi enrichir les données de l'organisation. Cela ouvre la voie à l'émergence de nouveaux usages (géolocalisation grâce aux coordonnées géographiques, renseignements complémentaires sur une personne....) et à la création automatique de liens hypertextes entre les sites Web pour proposer des parcours thématiques inter-organisations (la logique institutionnelle n'a pas cours sur le Web, espace commun et unique de navigation...).

by got at February 25, 2015 11:59 AM

David Larlet

Offline et discussions

C’est vraiment pas éloigné de ce que je cherche à faire, et l’idée du prefetch des liens fait rêver… En ajoutant les serviceworkers ou un genre de build on est « presque » (manque le push) sur quelque chose qui pourrait faire du commentaire décentralisé ?

Footnotes to sidenotes par 0gust1

Tiens ça faisait longtemps que l’on n’avait pas remis les commentaires décentralisés (cache) sur le tapis :-). Et pourtant 0gust1 a tout a fait raison, les technologies autour de l’offline (cache) permettent enfin d’avoir des graphes locaux qui pourraient s’assimiler à des discussions décentralisées. À quel rang faut-il cacher le Web ? Faut-il cacher les media ? À quel moment invalider/rafraîchir le cache ? Est-ce un graphe vivant ou un instantané ? Autant de questions que je me pose depuis que j’ai commencé à mettre les liens en cache

February 25, 2015 11:00 AM

February 24, 2015

David Larlet

SNCM et prix dynamiques

What worries many industry observers is a company charging different prices based on an individual’s characteristics or buying history. There is strong evidence this occurs regularly. And while it’s important to note that such practices can be imposed offline in the bricks-and-mortar environment as well, the Internet has driven such capabilities into the stratosphere.

Do travel deals change based on your browsing history? (cache)

Le site de la SNCM pratique systématiquement des prix dynamiques (augmentation du prix à chaque visite), il s’agit d’un dark pattern. Pour s’en prémunir, une fenêtre de navigation privée semble contourner le profilage efficacement. Il se trouve que c’est la seule compagnie pour la Corse au départ de Marseille. À quand un CapitaineBateau ? Et une règlementation adaptée…

February 24, 2015 11:00 AM

★ Livre et email

Construire durant des mois un texte et le publier en ligne ne fait pas de nous des auteurs numériques. Publier des livres papier ne fait pas de nous des auteurs traditionnels. Le Send se joue sur le Net, puis se moque du support. Il est action writing. Le Send est propre au Net comme le Slam est propre à la scène. Ils participent tous deux de la même urgence.

La Send génération : Pecha Kucha remix (cache)

C’est cette urgence que j’ai perdue/gagnée avec mes réflexions quotidiennes. Là où j’avais l’impatience de publier un tweet, je retrouve la sérénité de ne publier qu’une seule note, choisie avec soin, parfois/souvent rédigée à l’avance. Ne pas céder à l’émotion, à la réponse facile, à la blague foireuse. Imaginez si vous vous contraigniez à ne publier qu’une seule chose par jour. Quelle serait-elle ?

Il y a peut-être un truc à inventer pour accompagner le processus de montée en statut symbolique, une maison d’édition Full Web, qui ne sorte pas du format web (i.e. pas de papier, pas d’epub, du web, rien que du web), mais qui accompagne les auteurs à fond (ce qui suppose d’avoir des chargés d’édition bien casse-couilles) pour avoir un fond à très haute exigence.

Quand le web aura-t-il le même statut symbolique que le livre ? (cache)

Je me suis inscrit récemment à la liste de diffusion A Drip Of JavaScript qui propose gratuitement des articles sur JavaScript et ne publie ceux-ci sous forme d’archives que quelques mois plus tard. J’imagine une liste dont l’inscription serait payante et qui serait le vecteur de publication d’un livre, chapitre par chapitre. Avec des discussions entre abonnés et auteur(s) au fil des publications, enrichissant l’œuvre initiale. Avec des archives publiées à terme également. Est-ce que vous avez déjà croisé ce format ?

J’ai déjà le nom : Livremail. Facile mais efficace.

February 24, 2015 11:00 AM

February 23, 2015

Karl Dubost

La publicité sur le Web

Vue de New-York Times Square avec zonage publicitaire New-York, États-Unis, décembre 2014

Soixante-dix ans de matérialisme historique ont anéanti tout sens esthétique chez le Russe. D'où vient le mauvais goût ? Pourquoi y a-t-il du lino plutôt que rien ? Comment le kitch s'est il emparé du monde ? La ruée des peuples vers le laid fut le principal phénomène de la mondialisation.

Sylvain Tesson, Dans les forêts de Sibérie.

New-York, Times Square sur Google Street View en décembre 2014. Il serait aisé de changer son nom. Je propose « Money Square Meters » tant la publicité inonde les surfaces. Une casquette avec une visière et le profil peut peut-être nous permettre d'éviter de la regarder. Il y aura bien un jour, ils en mettront imprimé sur le trottoir.

Je parcourais de vieilles photographies ce soir. Notamment une photo que j'ai prise à Times Square, il y a un peu plus de 22 ans. Octobre 1992, le week-end des festivités de « Columbus Day, » c'était la première fois que j'allais à New-York et je pense la première fois que je mettais les pieds aux États-Unis. Il y avait moins d'une trentaine de sites Web dans le monde. Tim les ajoutait sur une des pages Web du CERN.

Ne vous faites pas piéger quand on vous dit que le Web ne pourrait pas exister sans la publicité. C'est un mensonge. Le Web a existé avant que la publicité y fasse son entrée. Tout comme dans les villes, il n'y a pas toujours eu tant de gavage jusqu'à la nausée. Les publicitaires s'installent là où il y a des paires de globes prêts à absorber la laideur. La machine à laver le cerveau est en marche. Il vous faut acheter pour vous conformer aux modèles exposés. La répétition fait le reste.

La première résistance est ne de pas accepter le status quo. La seconde résistance est d'apprendre à bloquer les publicités des sites Web. Et si certains sites disparaissent, c'est qu'ils n'avaient pas sû trouver leur marché en dehors de la publicité. Ce n'est pas si grave.

Vue de New-York Times Square New-York, États-Unis, 10 octobre 1992

February 23, 2015 01:51 PM

David Larlet

Rétribuer les auteurs

Et me voilà surpris, bêtement, de lire que vous n’achetez pas la musique que vous écoutez par ailleurs (lorsque celle-ci est payante et non librement et gratuitement distribuée par l’artiste lui-même). Je pense que l’étonnement que je ressens en lisant ça vient de trois choses :

  1. l’habitude que j’ai d’acheter ce qui relève de la création artistique (cinéma, musique, livres etc.) qui, pour moi, permet d’exprimer l’amour que je porte à l’art et la façon que j’ai de considérer une oeuvre comme quelque chose de « précieux »
  2. l’habitude que j’ai d’être d’accord avec vos réflexions, en général
  3. plus viscérale, le fait que je sois moi-même musicien et la tristesse que me procure le fait que l’idée selon laquelle la musique n’a pas besoin d’être achetée est de plus en plus répandue, même parmi des gens qui semblent avoir un sens éthique fort, même parmi des gens que je trouve intelligents, car leur pensée est souvent le produit d’une réflexion (sans que je considère cette opinion comme une marque de bêtise, par ailleurs)

Je suis, cela dit, content que ces habitudes aient été brisées, car cela permet d’ouvrir le dialogue : pouvez-vous m’expliquer pourquoi vous ne payez pas votre musique ? Quelles réflexions vous ont porté à faire ce choix ?

Anthony Delaby en réaction à Acheter de la musique

Merci Anthony d’avoir pris le temps de réagir et d’accepter une réponse publique. Il se trouve que j’aimerais rémunérer les auteurs, vraiment. C’est d’ailleurs ce que j’ai fait pour The Civil Wars a posteriori après avoir apprécié leur musique et vu qu’ils proposaient les titres en téléchargement/achat sur leur site en FLAC. Je viens de voir que ça n’a plus l’air d’être le cas et cela m’attriste…

En fait, je suis prêt à rémunérer chaque auteur que je croise sans intermédiaires et j’irais même plus loin en disant que je suis prêt à faire des dons directs aux auteurs s’ils proposaient cela sur leurs sites. Malheureusement ce n’est pas le cas et je ne souhaite pas alimenter une chaîne d’intermédiaires que je trouve obsolète.

Ma bibliothèque est précieuse et je porte une très haute estime aux différents auteurs qui la composent, la musique fait partie de mon quotidien et m’apporte beaucoup. J’aimerais pouvoir rendre une partie de ce plaisir que j’ai d’une manière ou d’une autre mais c’est souvent difficile. Quelles pistes ?

Réactions à chaud sur IRC : aller aux concerts, acheter des goodies, s’inspirer de ce que fait Louis CK.

February 23, 2015 11:00 AM

February 22, 2015

Karl Dubost

Indépendance des archives

Stores de bambous en face d'une maison chinoise Singapour, 18 janvier 2015

Quinze sortes de ketchup. À cause de choses pareilles, j'ai eu envie de quitter ce monde.

Sylvain Tesson, Dans les forêts de Sibérie.

Tiré à 2000 exemplaires. 3eme édition. Disponibilité dans les bibliothèques. La résistance des livres des siècles passés ne tient pas à leur qualité. Les étagères de bibliothèques sont tout aussi pleines de romans insipides que de chef-d'œuvres. Cette résistance est inscrite dans la duplication et la distribution à large échelle. Un tremblement de terre au Japon, une autre copie a survécu à la Jamaïque. D'ailleurs les œuvres originales, feuillets, manuscripts et autres feuilles raturées ne sont que très rarement disponibles. Nous ne manipulons que des copies. La copie réalise la survie de l'œuvre. L'Internet Archive est essentielle, mais c'est peu. Nous sommes passés de 1 à 2. Les initiatives, comme celle de David, deviennent alors essentielles. Réalisez des copies locales des documents que vous avez aimés. Ce sera peut-être utile pour vous. Mais plus encore, ce sera peut-être utile pour quelqu'un plus tard ailleurs.

February 22, 2015 12:56 PM

La vague chaude

Surfeurs dans les vagues Fujisawa, Japon, 31 janvier 2015

Il faut que je trouve la force de repousser le chat. Se lever de son lit demande une énergie formidable. Surtout pour changer de vie. Cette envie de faire demi-tour lorsqu'on est au bord de saisir ce que l'on désire. Certains hommes font volte-face au moment crucial. J'ai peur d'appartenir à cette espèce.

Sylvain Tesson, Dans les forêts de Sibérie.

Constat de températures
heureIntérieurExtérieur
07h002℃−0.5℃
08h006℃1.9℃

La nuit a été froide. Le corps hésite à sortir de la couette. L'esprit pourtant ordonne l'improbable. Un bras suit l'autre. L'objectif est de se détendre. Dès que l'on se crispe, la morsure prend prise sur le corps. Le bonnet jusqu'aux oreilles, le thermomètre annonce triomphant la température intérieure 2℃. La douche presque brûlante devient une attention délicate. Le corps encore chaud, on s'habille rapidement. Pas d'hésitations sur la couleur, la forme, peut-être sur le matériau. Laine.

Un peu plus tard, blotti dans son manteau, on admire les surfeurs attendrent la vague paresseuse. À chaque occasion, ils tentent de fuir l'océan. Mais toujours, inlassablement, le pied sur le sol sous la vague, il retourne vers le large. Quelle indécision. Quelle rythme dans la permanence, tous les matins, ils vont bûcher la vague avant le roulis du train pour aller bosser. Ces jours-ci l'aube se déclare autour de 5h et le soleil se lève autour de 6h30. Je suspecte l'océan d'être plus chaud que la température extérieure.

February 22, 2015 11:58 AM

David Larlet

Acheter de la musique

J’ai une bibliothèque musicale en FLAC. Mais je ne vais pas m’étendre sur ma snobdiohilie pour autant. J’ai tout téléchargé en utilisant des sites de téléchargement non légaux. Le fait de se limiter aux albums disponibles en FLAC est un bon filtre, malheureusement il y a des albums que j’apprécie vraiment et qui ne sont pas disponibles. Je me suis donc mis en quête d’un site de téléchargement légal en FLAC.

Stéphane m’a conseillé Qobuz qui propose soit du téléchargement soit du streaming en 16 ou 24 bits (cache). J’ai suivi un moment leurs actualités et ça m’a motivé pour franchir le pas et acheter de la musique ce que je n’avais pas fait depuis au moins 10 ans…

Le processus d’achat est plutôt classique, c’est au moment du téléchargement que j’ai eu 2 surprises :

  • je m’attendais à un simple lien, voire un lien BitTorrent, et il a fallu que je télécharge un logiciel non validé par Apple qui a planté 5 fois avant que je puisse récupérer l’intégralité des titres. Ce qui m’a pris quelques heures pour 4 albums (ce qui me prend d’habitude 20 minutes max).
  • les fichiers sont des .m4a et non des .flac, rien de bloquant pour pouvoir les lire sur mes différents périphériques mais c’est manque de cohérence avec le reste de ma bibliothèque. Le nommage des fichiers est vraiment particulier aussi et m’a demandé de tout reprendre.

Est-ce que je suis prêt à racheter de la musique ? Peut-être dans 10 ans :-).

February 22, 2015 11:00 AM

Karl Dubost

La citrouille salée

Citrouille dans les vagues Enoshima, Japon, 31 janvier 2015

Au fond de la taïga, je me suis métamorphosé. L'immobilité m'a apporté ce que le voyage ne me procurait plus. Le génie du lieu m'a aidé à apprivoiser le temps. Mon ermitage est devenu le laboratoire de ces transformations.

Sylvain Tesson, Dans les forêts de Sibérie.

fleur de citrouilleUne citrouille (カボチャ) verte ouverte dans les flots bleus sombres du Pacifique près d'Enoshima aura provoqué le sourire commun et le désir des saveurs.

Le voyage s'invite lui aussi discrètement. Chaque oscillation en pétales blancs annonce le printemps et l'envie des îles. Là-bas, il y a Oshima, au large, sur l'horizon. Il faudra un jour prendre le bateau depuis Atami et aller passer une nuit ou deux sur l'île.

Partir. Les pas sont une mémoire.

February 22, 2015 08:40 AM

February 21, 2015

David Larlet

Google et polices

So what exactly is the problem? The problem is this provides Google Inc. – a company listed on the stock exchange whose core business is trading metadata – yet another “tracking station”. User access can be tracked by gathering at least the header data of the connection request. This also includes cookies from the Google domain. Google learns that someone has an Administrator or Editor account for a certain website, and has a relationship to that site. But not only Google. Other websites also use Google web fonts; some of them in their themes and some regular users. Furthermore certain websites integrate Google Adsense and use Google Analytics.

Google Webfonts, The Spy Inside? (cache)

Alternatives aux polices Google :

  • les polices systèmes
  • les polices libres de droits et hébergées
  • les polices achetées et hébergées

February 21, 2015 11:00 AM

February 20, 2015

David Larlet

Gymkhana et cibles

Les citoyens dans le phare, les développeurs sur le bateau

Pour imaginer des applications innovantes, le citoyen est un réservoir d’idées brutes. Cette matière première est malheureusement mal exploitée, la collaboration avec les développeurs, directe ou par des intermédiaires, étant souvent infructueuse. C’est criant dans les sociétés où des années de silos ont érigé des barrières entre les utilisateurs ou leurs mandataires et les équipes de développement. Ils s’observent, chacun dans sa tourelle, par meurtrières interposées : les uns construisent des outils techniques difficilement utilisables, les autres formulent des solutions qui ne reflètent pas leurs besoins réels.

On trouve aujourd’hui des développeurs citoyens qui, conscients de ce fossé, veulent devenir des artisans : plutôt que de faire consommer, ils souhaitent enchanter les utilisateurs avec leurs réalisations. Que ces artisans développeurs et citoyens usagers trouvent ensemble un espéranto, voilà notre credo.

Gymkhana, introduction (cache)

Stéphane collabore avec Claude sur Gymkhana depuis maintenant quelques mois. Cet ensemble d’ateliers s’adresse à toutes les structures qui ont du mal à être pertinentes pour les citoyens. Je me demande dans quelle mesure cela pourrait être utilisé pour faire se rencontrer des entreprises et leurs utilisateurs… ou des dirigeants avec leurs employés.

February 20, 2015 11:00 AM

February 19, 2015

David Larlet

Polices et performances

By referencing our fonts using CSS @font-face and using font loading APIs to load and enable them when ready, we’ve found our fastest page load yet (complete in 600 milliseconds on wifi!) while retaining the progressive font rendering we desired.

Font Loading Revisited with Font Events (cache)

À force de rajouter des polices dans ma feuille de style (5 à ce jour…) elle commençait à être énorme et leurs ajouts sous forme de data URI s’avérait être beaucoup moins pertinent. Même en gagnant sur la latence en n’ayant qu’un seul fichier, la page ne commençait à s’afficher qu’une fois la CSS complètement chargée. Soit après 4,5 secondes sur une connexion 3G pour un article !

En explorant les Font Load Events (cache) j’ai pu réduire ce temps de moitié pour la même taille de téléchargement. C’est un gain vraiment énorme en terme de ressenti qui ne change rien au poids ou au temps de chargement du document complet. Il n’y a que la police pour le code que je charge directement avec @font-face car ainsi le navigateur ne la charge que s’il y a ces éléments présents dans la page (et normalement le code arrive plus bas dans la lecture).

L’inconvénient principal est au rafraichissement de la page car on s’aperçoit que le chargement des polices est fait en JavaScript mais l’usage d’InstantClick rend ce rafraichissement moins courant. L’autre problème est de dépendre de JavaScript pour afficher des polices qui pourraient être chargées nativement de manière optimisée…

February 19, 2015 11:00 AM

February 18, 2015

David Larlet

Redesign incrémental

Never make radical changes when minimal adjustments will suffice. Too many websites undergo a major overhaul unnecessarily. While legitimate reasons exist for engaging in a redesign, the reality is that many problems you need to solve are isolated and can be fixed with smaller, incremental approaches. Look at the metrics rather than guess what needs to be changed. Allow data to help you determine the extent of the problem and apply the least amount of change necessary to solve it. Radical changes have a higher chance of inadvertently breaking something critical for users.

Radical Redesign or Incremental Change? (cache)

J’ai commencé un redesign avec plusieurs objectifs :

  • jouer avec les véritables (cache) small caps ;
  • davantage mettre en avant le stream et l’activité pro ;
  • simplifier la CSS et m’amuser avec le responsive pour les en-têtes et pieds de pages ;
  • améliorer les contrastes et la lisibilité ;
  • retirer le bruit (partages sociaux et support de webmention) ;
  • me challenger en retirant tous les id, class et images décoratives.

La peinture est fraîche et le restera :-).

February 18, 2015 11:00 AM

★ Compagnons du dev

Cette présentation m’a refait penser aux diverses idées que j’ai autour d’autre façons possibles de "travailler" dans le Web. Celles-ci ne sont finalement que des adaptations de choses existantes dans le domaine culturel mais j’en profite pour les partager.

Imaginer d’autres façons de collaborer (cache)

On parle de compagnonnage depuis très longtemps au sein de scopyleft. Aller voir ce qui se fait ailleurs pour s’enrichir de leurs différences est dans notre culture. Pour autant, on n’a jamais tenté d’officialiser la chose. Par manque de temps ou peut-être pour que tout cela reste léger, pour ne pas tomber dans le corporatisme déjà bien prononcé dans notre domaine. Stéphane est actuellement en tournée en France et Vincent aux États-Unis. Les rencontres se font sur un coup de fil ou un tweet, parfois juste par chance en croisant la bonne personne.

Les institutions éducatives (si elles sont réellement nécessaires) seront amenées à prendre l’aspect de centres ouverts à tous, où chacun puisse trouver ce qu’il recherche.

Une société sans école, Ivan Illich

Loïc nous invite à proposer d’autres formes de collaboration :

Co-working éphémère

C’est ce qui est exploré avec Dev Open Sud, l’idée de se retrouver dans un lieu donné pour une période fixe mais relativement courte. Partager et créer, ensemble ou pas, pour du business ou pas, tard le soir ou pas.

Les inscriptions sont ouvertes et le budget est réajusté en fonction des dépenses réelles sur place (ce qui est suffisamment rare pour être signalé).

Camps d’exploration

On prend une techno récente, on prend un lieu et un long week-end. Pas forcément déconnecté comme un /dev/fort mais relativement isolé. L’objectif est de produire un truc utile en utilisant la technologie retenue avec des personnes de différents niveaux et horizons.

J’en lancerais bien un premier sur ReactJS mais ça demande un peu de logistique.

Randonnée technique

Le concept n’est pas nouveau mais je pense qu’il gagnerait à s’appliquer en itinérance. La réflexion pourrait s’orienter vers la limitation des ressources et ce que l’on est capable de transmettre une fois déconnecté. Travailler sur le mobile et l’immobile, sur l’action et la réflexion, sur les contraintes et le bien-être, sur la solidarité et la survie.

Je rêve d’un Tour du Mont-Blanc sur ce principe.

Tout cela me rappelle la notion de nomadisme coopératif (cache) dont avait parlé Patricia Vendramin lors de Lift France.

February 18, 2015 11:00 AM

February 17, 2015

David Larlet

Écologie et contrôle

Par ailleurs, la « pétrolisation » permet de contourner les mouvements ouvriers, là où le charbon donnait aux mineurs le pouvoir d’interrompre le flux énergétique. À partir des années 1880, les grandes grèves minières ont contribué à l’extension du suffrage universel et à l’adoption des lois d’assurance sociale. Beaucoup plus intensif en capital qu’en travail, le pétrole est plus facile à surveiller. Son extraction requiert une grande variété de métiers et des effectifs très fluctuants, ce qui complique le contrôle ouvrier de la production — tout comme sa fluidité : pipelines et tankers réduisent les ruptures de charges. Structuré dans un réseau énergétique international, le capitalisme, dorénavant global, devient moins vulnérable aux revendications des travailleurs nationaux.

La longue marche de la crise écologique, Manuel d’histoire critique

Ce manuel édité par le Monde Diplomatique (cache) est vraiment une pépite. J’ai (re)découvert pas mal de choses qui étaient restées floues durant mes cours d’Histoire.

Remplacez « énergie » par « information », « ouvriers » par « développeurs » et vous comprendrez mieux mes réflexions sur la complexité des frameworks web. Nous devrions utiliser notre pouvoir à bon escient avant d’en être démunis…

February 17, 2015 11:00 AM

Karl Dubost

Shonan, une racine

Île de Enoshima avec Fuji sur coucher de soleil Fujisawa, Japon, 31 janvier 2015

Il vit, ce géant des collines !
Mais avant de paraître au jour,
Il se creuse avec ses racines
Des fondements comme une tour.

Alphonse de Lamartine, Le chêne, suite de Jehova.

La racine ne sait pas le sol. Elle est là. Elle pousse le grain de la terre. Et puis un jour, il devient difficile de l'arracher. Elle n'a pas choisi le sol. Mais si ce dernier est adéquat, elle s'y épanouira.

Je vis le long de Shonan.

February 17, 2015 07:15 AM

February 16, 2015

David Larlet

Sites obèses, support CSS et contrastes

Billet comportant les liens de veille technologique présentés aux étudiants dans le cadre d’une routine de mes cours.

I’m not trying to argue that the Majora’s Mask website is well developed. I haven’t looked under the hood. The point I want to make is that it might, just might, be acceptable to build a website over 1MB. There seems to be a prevailing rhetoric within our industry that if a website exceeds this magic number, it’s a failure.

When can a website be over 1mb? (cache)

Histoire de remettre le couvert sur les performances web.

Montrer l’existence de Can I use et Do I use qui permettent de se faire une idée a priori ou a posteriori du support par les divers navigateurs des fonctionnalités utilisées pour son site.

Enfin, Contrast Rebellion tombe à point après avoir sensibilisé les étudiants aux problématiques de lisibilité lors du dernier cours. À ce sujet, je n’ai pas trouvé mieux que Contrast Ratio pour vérifier rapidement un site de manière pertinente. Vous avez d’autres outils ?

Merci à Erick et Anthony de m’avoir tous les deux proposé Contrast Finder par email pendant le cours !

February 16, 2015 11:00 AM

★ Cours IUT : Frameworks Web

By now, the purpose of web frameworks should be clear: to hide the boilerplate and infrastructural code related to handling HTTP requests and responses. Just how much is hidden depends on the framework. Django and Flask represent two extremes. Django includes something for every situation, almost to its detriment. Flask bills itself as a "micro-framework" and handles the bare minimum of web application functionality, relying on third-party packages to do some of the less common web framework tasks.

Remember, though, that at the end of the day, Python web frameworks all work the same way: they receive HTTP requests, dispatch code that generates HTML, and creates an HTTP response with that content. In fact, all major server-side frameworks work in this way (excluding JavaScript frameworks). Hopefully, you’re now equipped to choose between frameworks as you understand their purpose.

What is a Web Framework? (cache)

Ce cours était une introduction aux frameworks web. Au départ on devait faire du PHP en essayant Laravel mais quand j’ai vu la complexité qu’il y avait dans ce framework (générer un projet de test c’est 18 Mo ?!) et le manque de documentation j’ai vraiment douté. Du coup on a commencé par (re)voir les bases avec les concepts (routing, controllers, models, ORM, views, templating, middlewares, etc) avant d’opter pour un framework JavaScript : SailsJS. Qui demandait l’installation de NodeJS ainsi que ses multiples dépendances. Autant dire qu’en environnement hostile (connexion plus que limitée) il est compliqué d’arriver à la première ligne de code pour tous…

Une fois les quelques machines coopérantes partagées, on a pu plonger dans le code et essayer de comprendre comment faire des choses simples à partir du gabarit de projet. Or l’exemple proposé ne sert qu’une page statique par défaut ! Il faut parcourir l’énorme arborescence générée pour trouver où placer les fichiers pour les controllers ou les templates ce qui est n’est vraiment pas intuitif pour un débutant qui essaye de comprendre les concepts sous-jacents. SailsJS nous aura au moins permis de discuter de la dualité framework front-end/back-end et de l’importance des données et des URLs en allant même vers du offline-first (cache). Au final j’aurais mieux fait de partir sur ExpressJS ou Flask. Cela ne résout pas le problème des dépendances pour autant.

C’est le moment où j’ai envie d’écrire mon propre framework. Portable. Copiable. Documenté. Hackable. Simple. Un générateur de sites statiques en somme :-p. L’enseignement est vraiment en train de m’ouvrir les yeux sur la complexité inutile créée par nos métiers. Complexité qui re-crée une pyramide de pouvoir et donc de contrôle. Au même titre que l’énergie.

February 16, 2015 11:00 AM

February 15, 2015

David Larlet

Signalétique wifi

Les accès wifi se multiplient et malheureusement les restrictions qui vont avec aussi. Il faudrait avoir une signalétique pour détailler ce qui est appelé wifi par les établissements :

  • niveau de sécurité
  • ports bloqués
  • sites bloqués
  • usages interdits
  • portails captifs
  • garanties de débit
  • garanties de disponibilité
  • etc

Du coup je me suis renseigné sur les accès nomades/4G et il y a des routeurs qui ne nécessitent pas de posséder un smartphone. Je vais tester ça.

February 15, 2015 11:00 AM

February 14, 2015

David Larlet

Tournure anglaise

We were told to surf the web, but in the end, the web serf’d us. Yet there’s a worse fate than digital serfdom, as Snowden’s ongoing NSA revelations suggest. This isn’t simply about the commodification of all human kinesis, it’s the psychological colonialism that makes the commodification possible.

DATAcide (cache)

Il y a des formules qui perdent leur beauté lors d’une traduction. Ce texte est magnifique.

February 14, 2015 11:00 AM

★ Remember the Future

À tous ceux qui veulent apprendre, il faut donner accès aux ressources existantes, et ce, à n’importe quelle époque de leur existence. Il faut ensuite que ceux qui désirent partager leurs connaissances puissent rencontrer toute autre personne qui souhaite les acquérir. Enfin, il s’agit de permettre aux porteurs d’idées nouvelles, à ceux qui veulent affronter l’opinion publique, de se faire entendre.

Une société sans école, Ivan Illich

Texte rédigé dans le cadre d’un jeu sérieux qui consistait à « imaginer scopyleft en 2016 ». C’est une exercice que nous avions déjà réalisé à la création et qui permet la fantaisie tout en vérifiant l’alignement sur le cap à suivre par la discussion qu’il génère.

Scopyleft est devenu un réseau de personnes qui partagent les mêmes valeurs et qui se rencontrent plus ou moins ponctuellement autour de motivations communes. Les membres sont mobiles, découvrent de nouvelles pratiques, partagent leurs expériences avec le réseau. Scopyleft n’est plus/pas un gage de qualité mais une recherche constante de pertinence grâce à la collaboration.

2015 aura été l’année de la remotitude (sic) avec des explorations de territoires plus ou moins lointains. Vincent est devenu californien, Stéphane arpente les lieux innovants de France et d’Europe, David est tombé en amour avec le Québec. Cela nous a permis de travailler à distance et de réussir à organiser des événements/formations/sprints en s’hébergeant tour à tour.

Depuis peu, d’autres personnes sont intéressées par l’approche réseau et nous font des propositions pour connecter leurs propres cercles et étendre notre rayon d’action à des domaines comme la permaculture (cache) ou le sport. Les pratiques apprises nous permettent d’aider d’autres communautés ouvertes à la bienveillance et moins techniques.

Suite à des problèmes de trésorerie, nous avons trouvé d’autres moyens de financement. Nous organisons beaucoup de micro-événements payants qui réunissent une douzaine de personnes et qui apportent de la valeur sur le long terme. Nous accompagnons également des équipes dans leur changement de culture. Nous avons pivoté d’une expertise technique à de la facilitation sociale.

Nous codons maintenant uniquement pour le plaisir. On s’organise une semaine de sprint par trimestre pour jouer avec les technologies et produire de l’inutile, du futile et de la joie. Ces moments sont partagés avec la communauté qui est de plus en plus nombreuse à nous rejoindre.

February 14, 2015 11:00 AM

February 13, 2015

David Larlet

Offline-next et service workers

Rich offline experiences, periodic background syncs, push notifications— functionality that would normally require a native application—are coming to the web. Service workers provide the technical foundation that all these features will rely on.

Introduction to Service Worker (cache)

Je suis tombé hier sur un lien faisant part d’une expérience d’affichage des liens (cache) ou plutôt de non affichage. C’est une problématique à laquelle je réfléchis depuis pas mal de temps et je trouve leur solution élégante. Je pense qu’elle pourrait être généralisée avec un simple script JavaScript qui récupère le title d’un lien et le met en aside en fonction de la taille de la fenêtre.

Et puis ma réflexion se poursuit sur la possibilité de récupérer ces liens afin d’améliorer les performances via un prefetch et pourquoi ne pas les stocker pour un usage hors-ligne. Anthony me propose de regarder du côté des Services Workers, ce qui répond parfaitement à mon besoin (il y a des builds Firefox dédiés). Peut-être l’occasion de coder un petit truc pour rendre ce site un peu plus portable ?

February 13, 2015 11:00 AM

February 12, 2015

David Larlet

Python et namedtuples

Many functional programming articles teach abstract functional techniques. That is, composition, pipelining, higher order functions. This one is different. It shows examples of imperative, unfunctional code that people write every day and translates these examples to a functional style.

A practical introduction to functional programming (cache)

Dans les épisodes précédents, on a vu comment récupérer des billets voisins et parcourir des fichiers markdown. Il est temps de combiner les deux. Mais avant cela, commençons par gérer des objets par l’intermédiaire des namedtuples qui facilitent l’accès aux attributs :

Post = namedtuple('Post', ['content', 'author', 'date'])
def populate_post(content, metadata):
    # Divers traitements.
    return Post(title=title, date=date_, content=content)

Cette méthode va nous permettre de générer des posts à partir du contenu et des métadonnées de notre fichier markdown. On va ensuite vouloir récupérer une liste ordonnée par date :

def collection():
    """Retrieve all posts sorted by date desc."""
    posts = []
    for file_path in each_markdown_from(POSTS_PATH):
        content, metadata = parse_markdown(file_path)
        post = populate_post(content, metadata)
        posts.append(post)
    return sorted(posts, key=attrgetter('date'), reverse=True)

C’est cette liste dont on peut utiliser les voisins pour la génération du fichier HTML final :

for previous, post, next in neighborhood(collection(), last=thoughts):
    # On peut ici accéder à post.title, post.content, etc.

J’aurais pu rendre tout cela encore plus fonctionnel mais je préfère pouvoir vérifier facilement les étapes intermédiaires sans qu’il y ait trop d’imbrications incompréhensibles. C’est la fin de cette série, vous avez maintenant les outils pour créer votre propre moteur de blog statique !

February 12, 2015 11:00 AM

February 11, 2015

David Larlet

Veille techno, Flexbox et bonnes pratiques JS

Billet comportant les liens de veille technologique présentés aux étudiants dans le cadre d’une routine de mes cours.

J’ai tendance à attribuer de plus en plus d’importance aux retours d’utilisation plutôt qu’à l’aspect technique et fonctionnel de la techno.

Plutôt que de lire des tutoriels techniques, je préfère m’intéresser aux expériences des early adopters. Dans quels cas cette techno est-elle appropriée ou non ? Quels sont ses avantages et ses inconvénients ? Quelles sont ses forces et ses faiblesses ? Quels gains réels espérer, et à quelles galères s’attendre ?

Comment ne pas se laisser dévorer par la veille techno ? (cache)

Thibault nous parle de la veille avec son style inimitable. Parler de la veille dans sa propre veille, so meta.

I don’t blame people for finding Flexbox difficult to grasp. Most of the tutorials that exist on the web either show you a bunch of boxes that are completely abstract, or jump so far ahead that the only logical thing to do with Flexbox is to work backward from these magically simple layouts, and end up in a mountain of unmaintainable code. My own previous article was the former, I wrote it to understand Flexbox.

Experiment: Using Flexbox Today (cache)

Flexbox est dans notre backlog additionnel, l’occasion d’en reparler.

Au fil des formations, je remarque que de nombreuses bonnes pratiques que je signale en passant dans le code, par acquis de conscience, ne sont pas connues, ou pas comprises, ou juste surprenantes pour les stagiaires. C’est l’occasion de me souvenir que dans tous les domaines, ce qui peut paraître évident et « connu de tous » ne l’est pas forcément, et qu’il est toujours bon de remettre en lumière des savoirs dont on imagine, souvent à tort, qu’ils sont monnaie courante.

10 bonnes pratiques JavaScript (cache)

Pour faire suite au cours du lundi.

February 11, 2015 11:00 AM

★ Cours IUT : Performances Web

Le mobile first est l’héritier de la pensée « amélioration progressive » : délivrons très rapidement la promesse initiale, chargeons les fonctionnalité supplémentaires après et en fonction des capacités du client. Cela oblige à se poser la vraie question : quelles sont les priorités de chaque page ?

Cela s’intègre parfaitement avec un processus de conception moderne où designer et intégrateur web passent pas mal de temps l’un à côté de l’autre pour fignoler les maquettes sur les mobiles.

Le web mobile et la performance (cache)

Après avoir fait du JavaScript lors du dernier cours, on passe à quelque chose de plus léger avec les performances web. Vaste sujet. J’ai donné les grands principes lors du premier cours sur le web mobile et je leur ai demandé de venir avec un site d’exemple à analyser. J’ai pour ma part choisi celui de Bertrand Billard car il y a presque tous les éléments réunis pour montrer ce qu’il ne faut pas faire (à moins que vous ne souhaitiez faire subir un ironman à votre navigateur, huhu).

Premier outil indispensable, l’onglet réseau des outils du navigateur. Il permet de voir tout ce qu’il se passe pour votre configuration. (Mal)heureusement, beaucoup de vos utilisateurs n’ont pas la chance d’avoir une machine/connexion aussi performante (cache). Second outil, WebPageTest qui donne d’autres informations et qui permet de choisir le navigateur et la connexion.

Ces deux outils devraient suffire à alimenter la discussion pour un cours de 4 heures. Il sera question de compression, de workflows, de mesures, de minification, de chemin critique, de latence, de polices, de requêtes tierces, d’expérience utilisateur, de bande passante, de cache, de sprites, de rendu, de stratégie, etc. Ce sera l’occasion de leur présenter le livre d’Éric sur la performance web qui donne les directives suivantes :

  1. Réduire le nombre de requêtes HTTP
  2. Réduire le poids des composants
  3. Améliorer la parallélisation des téléchargements
  4. Améliorer le ressenti utilisateur
  5. Améliorer l’applicatif et les temps de traitement

On terminera peut-être avec quelques outils comme lazyload, picturefill, fastclick ou instantclick que j’ai mis en place sur ce site. Mais je ne veux pas non plus tomber dans la micro-optimisation, il s’agit plutôt de connaître les grands principes ET surtout de les appliquer.

February 11, 2015 11:00 AM

February 10, 2015

David Larlet

Hypermedia et histoire

Hypermedia is not a new concept, it has been around in various forms since the 1960s.  However, in the past seven years there has been a significant resurgence of interest in the concept.  This blog post contains my reflections on the past few years, where we currently are and where we might be headed in the use of hypermedia for building distributed applications.

Hypermedia, past, present and future (cache)

Article très complet sur l’historique et les enjeux autour de l’hypermedia, il manque peut-être la dimension politique dans tout ça.

February 10, 2015 11:00 AM

★ L’oiseau bleu

J’ai découvert ton site via un tweet de Bastien Jaillot : un article nommé La non demande de devis. Article inspirant, tout comme d’autres posts. J’ai pris plaisir à te lire.

De ce fait, je m’abonne à toi sur Twitter ; Bêtement, puisque dans la seconde qui suit, je n’en vois qu’un. C’est dommage que tu n’utilises pas ce canal, même si via ton site on sent ta réticence envers ce réseau. Je raterais peut-être quelque chose à l’avenir. Je n’ai pas toujours le temps d’aller fouiner sur les sites. Twitter est mon RSS. A tort ou à raison. Le jour où ces pubs ciblées seront gênantes, je changerai peut être mon fusil d’épaule.

Richard PASQUIOU

Mon retrait de Twitter après plus de cinq années est militant. J’ai mis plus d’un an à me désintoxiquer et je suis même passé par une cure de 3 semaines sans grand effet. Depuis le premier janvier, je publie quotidiennement pour le plaisir. Sans aucune contrepartie, sans aucune réexploitation, juste un grand sentiment de liberté.

C’est un acte militant car je souhaite encourager les personnes comme Richard à réacquérir des outils décentralisés. Le confort et la popularité d’outils centralisés à la Twitter et consorts tuent le Web à petit feu. Je ne souhaite plus être un contributeur actif de sa destruction. Ce site est à l’image du Web que je veux voir grandir : des liens et des ressources distribuées. Des expériences et de l’acquisition de savoirs.

Je perds une partie de mon « lectorat » pressé ? Soit, j’ai le temps et mes écrits seront encore là dans quelques années. Je ne fais pas une course à l’audience. Quid de vos tweets ?

February 10, 2015 11:00 AM

February 09, 2015

Karl Dubost

Murmures

Horloge dans une rue Tsujido, Japon, 29 janvier 2015

You learn to make it long before you can spell it.

Wena Poon, Fideuà, Asia Literary Review, nº21, Autumn 2011.

La nuit avait enveloppé d'un cadre en feutre noir les routes de Tsujido. J'ai ralenti le pas. Peut-être voulais je parcourir l'asymptote du rêveur. Les rêveries n'ont pas d'horizon. Elles se subliment en boucles infinies. L'absence se murmure dans l'ombre. Le temps y sombre.

February 09, 2015 01:58 PM

L'essentiel d'une cuisine

3 hommes dans une cuisine Singapour, 16 janvier 2015

Il faut avoir un puits pour connaître la valeur de l'eau… Il faut faire pousser un arbre pour hésiter avant d'en abattre un autre… Il faut savourer les légumes de son jardin pour savoir à quels succédanés nous étions accoutumés… Il faut couper son bois pour retrouver devant sa cheminée la véritable sensation du confort… Il faut confectionner ses propres vêtements pour ne plus avoir envie de subir les caprices de la mode… Il aut regarder vivre les animaux et les insectes avant d'exterminer quelques soi-disant « nuisibles »… Il retrouver la santé du corps et de l'esprit pour réaliser le plaisir de vivre et celui d'aimer.

Jacques Massacrier, Savoir revivre.

La recherche d'un certain minimalisme se fait selon deux axes et deux motivations : un esthétisme ou une contrainte. La recherche esthétique du minimalisme ne nous met pas en péril. Elle est même le signe d'un luxe. Nous cherchons à réduire une courbe, une complexité. Nous optimisons une abondance afin de la rendre plus acceptable. Nous y recherchons en fait un plaisir visuel ou intellectuel, une sorte de confort, une ascèse. La contrainte du minimalisme s'inscrit dans l'économie des ressources, dans la survie. Il est impossible de dépasser une certaine limite souvent bien difficile à établir. Nous déployons alors des trésors d'ingéniosité pour nous accomoder de l'essentiel et de le maximiser afin d'en tirer un profit et un bien être. Nous optimisons un manque afin de le rendre plus acceptable.

À chacun de ses voyages, j'observe longuement ces cuisiniers préparant avec des gestes précis afin de servir des centaines de fois le même plat, chaque jour de l'année, souvent sans aucune interruption. Je remets en perspective mes propres explorations de minimalisme et, en toute humilité, je savoure chaque bouchée de ce plat avec respect.

February 09, 2015 01:31 PM

L'intimité d'une cour intérieure

Porte et cour d'un temple Singapour, 17 janvier 2015

Mettons nos connaissances en veilleuse, allons méditer sur l'opportunité de leur utilisation. Reconsidérons les éléments primordiaux de notre existence.

Jacques Massacrier, Savoir revivre.

La cour intérieure d'un bâtiment, ouverte sur le ciel, offre un espace de méditation merveilleux. Nous aimerions la pluie, son bruit, sa tonalité sur le quotidien. Et puis nous observerions les feuilles des plantes dans des grands pots de terre vernie aux couleurs végétales, ambres et or sombres. Mais aujourd'hui, c'est le soleil qui définit le volume et l'envie de l'ombre. L'encens accompagne le mouvement et retarde le regard.

Nous sommes ici dans notre verticale et presque à un bond, nous imaginons pouvoir retourner dans la cour intérieure de la maison bleue à Penang. La cour intérieure s'y vit selon deux modes, un élevé aérien entre ciel et sol, un terrien sur le pavé et dans l'intimité. Ces cours là sont l'éclosion du foyer.

Cour intérieure de maison Penang, Malaisie, 29 mai 2008

February 09, 2015 12:54 PM

David Larlet

Server-side, CSS et UX

Billet comportant les liens de veille technologique présentés aux étudiants dans le cadre d’une routine de mes cours.

Say what you will about server-rendered apps, the performance of your server is much more predictable, and more easily upgraded, than the many, many different device configurations of your users. Server-rendering is important to ensure that users who are not on the latest-and-greatest can see your content immediately when they click a link.

You’re Missing the Point of Server-Side Rendered JavaScript Apps (cache)

Ainsi que la réponse (cache) qui considère Angular comme étant le Bootstrap de JavaScript ♥ (merci la veille de Makina par Simon Georges). Pour aborder la génération de pages côté serveur.

An extensive CSS reference with all the important properties and info to learn CSS from the basics

CSS Reference

Plutôt bien fait et l’article sur Flexbox est relativement complet.

A login form with two fields, two buttons, and a link on it seems simple, right? Bog standard. It is, until you consider all the ways the simple act of logging in with those two fields can go wrong for the user. Let’s think.

The God Login (cache)

Ils sont intéressés par l’UI/UX donc c’est l’occasion d’engager la discussion.

February 09, 2015 11:00 AM

★ Cours IUT : Comprendre JavaScript

Code reviews are a perfect opportunity to continue learning and improving your coding style. I work with a team of experienced developers, so I don’t see many really glaring errors. But when I am called on to review third-party code, I’ve noticed certain bad practices crop up over and over again. Some of these may seem obvious, but hopefully there will be a useful tip or two here for JavaScript developers of every skill level. All examples are based on real production code I’ve reviewed, although (variable) names have been changed to protect the innocent.

Real-World JavaScript Anti-Patterns (Part One) (cache)

Le dernier cours a été difficile. Les étudiants voulaient essayer AngularJS sans avoir fait préalablement de JavaScript, ce qui s’est soldé par un échec pour faire un petit exercice suite au tutoriel. Après discussion, on a enchaîné sur un autre exercice uniquement JavaScript. Mais un peu trop compliqué, second échec de la matinée et moral en berne avant de se quitter. C’était malgré tout une bonne chose. Expérimenter l’échec fait partie de l’apprentissage, je pense qu’ils sont maintenant davantage conscients de leurs limites. Et ils sont frustrés de ne pas pouvoir essayer AngularJS par leur manque de connaissance, pas par le choix arbitraire du prof. Ça leur a donné envie de comprendre JavaScript.

J’avais commencé lors du cours sur JavaScript avec l’autre partie de la classe à accumuler des scripts à leur faire comprendre/commenter/enrichir. Je me suis résolu à en faire un dépôt sur Github qui pourrait être réutilisé. J’essaye de commenter au maximum et ça me permet de comprendre moi aussi pas mal de choses à ce langage. Vous pouvez participer avec votre propre expérience et corriger mes exemples en suivant les contraintes du README.

Les ressources qui m’ont été utiles pour reprendre JS de zéro ou presque :

La lecture de ces 3 séries m’a vraiment aidé à comprendre JavaScript, si vous en avez d’autres je suis preneur.

February 09, 2015 11:00 AM

February 08, 2015

David Larlet

Google et Open-Source

In general, Google has a massive set of awesome tools for everything from deployment to monitoring; and a broad codebase with libraries that can do everything under the sun. However, that means that when you go outside of the Google environment, you’re suddenly stuck a bit out in the cold — the tools that you use inside Google can’t be used outside, so you have to have a completely separate infrastructure (both literal infrastructure, and code infrastructure).

Learning new things (cache)

À comparer avec Facebook qui a libéré React et Flux. Et qui s’apprête à publier React Native (cache), GraphQL et Relay. Chacune de ces technologies lui donnant un avantage compétitif non négligeable.

February 08, 2015 11:00 AM

February 07, 2015

David Larlet

Historique de travail

We assume everything we publish online will be preserved. But websites that pay for writing are businesses. They get sold, forgotten and broken. Eventually, someone flips the switch and pulls it all down. Hosting charges are eliminated, and domain names slip quietly back into the pool. What’s left behind once the cache clears? As I found with that pitch at the end of 2014, my writing resume is now oddly incomplete and unverifiable.

All My Blogs Are Dead (cache)

C’est également le cas pour les développeurs web. La plupart des sites sur lesquels j’ai travaillé n’ont pas été archivés et ont tout simplement disparus.

February 07, 2015 11:00 AM

February 06, 2015

Karl Dubost

Danse l'éolienne

Éolienne Yokohama, Japon, 25 janvier 2015

What goes around comes around : this is what tradition says.

Chandrahas Choudhury, Captain, Asia Literary Review, nº21, Autumn 2011.

Elle était là-bas sur l'horizon. Elle brassait les rimes du vent. Je suis resté sur le pont quelques minutes à observer son Nanchu Soran. La zone portuaire et industrielle de Yokohama avait des rêveries de pêcheurs. L'éolienne racontait leur histoire.

horizon avec immeubles et port Yokohama, Japon, 25 janvier 2015

February 06, 2015 11:50 AM

La sérénité sécuritaire

Route et escalier Tsujido, Japon, 24 janvier 2015

One of the surprising effects of counter-colonialism is the current proliferation of Afghan restaurants in the United-States; […] If the history of food is anything to go by the world seems to be reverting to normal. After a brief period of Western supremacy, the direction of cultural exchange is again preponderantly from East to West.

Felipe Fernández-Armesto, History à la carte, Asia Literary Review, nº21, Autumn 2011.

La « sérénité sécuritaire » est une expression bancale. La peau frissonne. Nous ne savons pas si nous devrions retenir la chaleur du mot « sérénité » ou bien être glacés par le mot « sécurité. » Nous voulons pouvoir vivre au quotidien avec une certaine sérénité. La liberté de pouvoir agir, de penser sans être inquiet est essentielle à notre humanité. Nous sommes parfois confrontés à la violence. Selon les personnalités, nous nous recroquevillions, nous encaissons les coups, nous réagissons ou même nous détruisons l'autre par peur de la récidive. Ces deniers jours ont créé leur lot de souffrances, de peurs, de stigmatisations.

Une des tactiques politiques est de déstabiliser l'autre par des actes violents. L'enjeu n'est pas tant la violence dirigée contre la victime elle-même, mais de créer un environnement où tout le monde se perçoit en victime potentielle. Cette technique est employée dans de nombreux contextes. La peine de mort en est un exemple. Les châtiments corporelles pour un enfant en face d'une classe. La logique n'est pas tant d'éduquer le fautif que de définir, de préciser et d'incorporer la peur. C'est également la technique utiliser dans les actes d'un groupe politique envers un autre. Un attentat pratique de cette logique. Il se moque de la victime directe. Elle est presque un dommage collatéral. L'essentielle est la masse des autres qui sont témoins de cette violence.

Logo du magazine avec le titre La Gueule Ouverte

Et cela fonctionne admirablement bien. Nous voyons un à un nos gouvernements suite aux événements récents proposer des lois liberticides, de contrôle, de sécurité. Le discours est lui-même bien établi. Il s'agit de protéger notre modèle de démocratie, de préserver nos espaces de sérénité. Cependant, c'est exactement le contraire que nous créons. Les violents le savent. C'est exactement l'un de leurs buts. La déstabilisation de ces démocraties par leur renforcement sécuritaire. Au lieu d'encourager la sérénité, nous pratiquons le suicide démocratique. « Nous » car nous votons pour ces élus qui passent des lois nouvelles.

Un autre enjeu essentiel est que ces nouvelles lois et règles n'ont pas de péremption. Elles ne sont pas mises en place jusqu'à la réalisation d'un objectif mesurable. Non, elles sont passées et deviennent définitives, même lorsque le danger est passé. Plus grave, elles deviennent le véhicule pour des actions hors du contexte original. Elles deviennent des violences institutionnelles détruisant notre sérénité.

Résistez à la violence. Peu importe son origine et sa forme.

couverture du magazine avec une main et une fleur « On les emmerde, ça continue. » La Gueule Ouverte.

February 06, 2015 11:50 AM

David Larlet

Accompagnement, non-devis et produits essentiels

Eh bien, on a mis en œuvre un mode de fonctionnement, dans lequel le joueur n’est plus dans l’attente de consignes. Avant, on tirait l’écran, on passait la vidéo, et on disait : "Dans telle situation, toi, tu dois jouer comme ça". Et puis un jour, entre 2007 et 2008, avant de se lancer dans la préparation des JO de Pékin, j’en ai eu ma claque de faire le maître d’école.

Je leur ai dit : "Voyez cette situation, d’habitude, je vous disais comment vous deviez la jouer ; eh bien là, vous allez me dire comment vous souhaitez la jouer". L’idée pour moi était de passer du jeu de l’entraîneur au jeu de l’équipe. De ne plus avoir des joueurs assis, qui se défaussent en cas d’échec sur le staff, mais des joueurs debout, prenant leur responsabilité dans l’aventure collective.

Claude Onesta : "Le handball est un sport un peu à part" (cache)

J’ai mis en ligne une page sur l’accompagnement qui a demandé l’écriture d’une autre sur les non-demandes de devis et enfin sur les produits essentiels. Tous les retours sont les bienvenus avant que je rende ces pages plus visibles.

February 06, 2015 11:00 AM

Karl Dubost

La pétasite du Japon

Plateau de légumes Tsujido, Japon, 24 janvier 2015

Food is funny. It is at once the most conservative form of culture and — in some circumstances — the most permeable to alien influences.

Felipe Fernández-Armesto, History à la carte, Asia Literary Review, nº21, Autumn 2011.

Nous avons coupé les légumes. Nous avons déployé les bourgeons de pétasite du Japon. Il y avait l'envol du goût du printemps. Nous avons préparé la pâte à tempura et l'huile légère. Nous avons enduit les légumes et nous les avons fait frire. Les pétasites du Japon ont cette forte amertume. La sève éveille tous vos sens intensément. Il n'y a que le sel pour adoucir. Les portugais avaient-ils imaginé que les japonais fêteraient le printemps en friture.

Pétasite du Japon en bourgeon ouvert Tsujido, Japon, 24 janvier 2015

February 06, 2015 08:02 AM

Marché dans l'escalier

Légume et balance dans un escalier Singapour, 18 janvier 2015

La nourriture est omniprésente dans la vie des Vietnamiens. C'est par la cuisine que l'on exprime l'affection, l'amour, la tendresse. Ainsi ma mère ne dit pas « je t'aime », mais elle dépose la joue du poisson dans le bol de mon père qui à son tour la met dans mon bol, et moi dans celui de mon fils, qui, en bon petit-fils vietnamien, la remet dans le bol de mon père.

Kim Thúy, mãn.

Des bottes de poireaux, des gousses d'ail dans un grand sac rose, une balance, des sacs plastiques, il réalisait ses affaires sur les marches de l'escalier. Le chêne a besoin de la ronce pour devenir arbre. La ville a besoin du désordre pour exister. La ville respire dans ses non-lieux.

February 06, 2015 07:38 AM

L'or de l'enfance

Pièce de monnaie dorée Tsujido, Japon, 22 janvier 2015

Moi, je possédais l'éternité parce que le temps est infini quand on n'attend rien.

Kim Thúy, mãn.

Je ne me souviens plus. Elle m'a été donnée récemment. Imprévu, je l'ai remarquée quand j'ai vidé mes poches. Cinq yens, elle brillait. Unique au milieu des autres pièces, elle était le trésor. J'avais trouvé le chemin vers la grotte des quarante voleurs. C'est un bonheur aurifère que l'on choit au creux de la main. L'enfance rayonne avec chaleur.

February 06, 2015 07:17 AM

February 05, 2015

Eric van der Vlist

Dataset versioning

The first feature complete version of my MarkLogic persistence layer for Orbeon Form Runner is available but as far as I know nobody is using it yet and it’s still time to think about what will happen for new versions. … Continue reading

by Eric van der Vlist at February 05, 2015 03:06 PM

David Larlet

SNCF, retards et wifi

N’a-t-on pas besoin plutôt d’installer des prises qui fonctionnent dans tous les trains ? D’améliorer la maintenance de la signalisation pour éviter les retards ? De financer des formations du personnel à la communication de crise ?

Le wifi dans le TGV, une promesse depuis 2003, jamais tenue (cache)

Je me disais la dernière fois dans le train qu’en offrant le wifi lorsque le train est en retard ou arrêté il y aurait probablement moins de mécontentement.

February 05, 2015 11:00 AM

February 04, 2015

David Larlet

Des carottes et des poneys

Django Carrots est un atelier de programmation. Le temps d’un week-end, notre objectif est d’apprendre à des développeurs et développeuses, de niveau débutant à intermédiaire, les bases de la programmation en Python et de la création de sites Internet à l’aide de Django.

Atelier Django Carrots

Dommage que je ne sois pas sur Paris à ce moment là. J’aime ces initiatives non discriminantes.

February 04, 2015 11:00 AM

February 03, 2015

David Larlet

Markdown et Python

Suite des utilitaires utilisés pour générer ce site.

J’ai une arborescence de fichiers markdown que je transforme en fichiers HTML. Je commence donc par les récupérer :

def each_markdown_from(source_dir, file_name='index.md'):
    """Walk across the `source_dir` and return the md file path."""
    for root, dirnames, filenames in os.walk(source_dir):
        for filename in fnmatch.filter(filenames, file_name):
            yield os.path.join(root, filename)

Ce petit utilitaire parcoure un dossier et retourne le chemin d’accès s’il contient index.md. J’ai une seconde fonction qui me permet de parser un fichier markdown et de compiler le contenu avec ses méta-données :

def parse_markdown(file_path, extensions=None):
    """Parse an md file and returns its converted content and metadata."""
    if extensions is None:
        extensions = ['meta', 'codehilite']
    parser = markdown.Markdown(extensions=extensions)
    with codecs.open(file_path, 'r', 'utf-8') as source:
        content = parser.convert(source.read())
        return content, hasattr(parser, 'Meta') and parser.Meta or None

En combinant les deux, on obtient la boucle suivante :

for file_path in each_markdown_from(POSTS_PATH):
    content, metadata = parse_markdown(file_path)

Dans un prochain épisode, on verra comment utiliser les namedtuples à bon escient.

February 03, 2015 11:00 AM

February 02, 2015

David Larlet

Code, objectif et intelligence

Billet comportant les liens de veille technologique présentés aux étudiants dans le cadre d’une routine de mes cours.

Programming as it exists now forces us to model, but it does so in an unnatural way. And while teaching ourselves how to program will help us learn how to break systems down, it does so at the risk of focusing on the wrong things. We don’t want a generation of people forced to care about Unicode and UI toolkits. We want a generation of writers, biologists, and accountants that can leverage computers.

Coding is not the new literacy (cache)

J’aimerais bien avoir leur avis sur la pertinence de l’introduction du code à l’école.

And so, its purpose has become even more vague. People don’t know what a personal site is for anymore, so they go through the motions. They put the same things everyone else puts on there. A giant photo of a city. Something that says “Hi, I’m Dave.” Fancy scrolling effects. A bunch of social media icons. An unintelligible skills chart. A quickly neglected blog.

Asking why (cache)

Pour engager la discussion sur les portfolios classiques que je trouve relativement creux. Où est l’expérience ? Où sont les difficultés rencontrées ?

Les ingrédients les plus importants (l’équité de parole, l’empathie, la sur-représentation féminine) sont demeurés les facteurs décisifs (sur tous les autres) indépendamment du mode d’interaction employé. Les meilleures équipes étaient celles qui communiquaient beaucoup, d’une manière équitable et qui possédaient de bonnes compétences en compréhension des émotions des autres.

Pourquoi certaines équipes sont-elles plus intelligentes que les autres ? (cache)

Leur donner quelques pistes pour travailler ensemble sachant qu’ils préfèrent a priori se débrouiller seuls en cours.

February 02, 2015 11:00 AM

★ Cours IUT : Composants Web

Transmettre, apprendre : ces deux mots condensent le problème intellectuel de l’école aujourd’hui.
Ils indiquent d’abord un ordre de succession : apprendre a supplanté transmettre. La transformation fondamentale que l’école a connue au cours du dernier demi-siècle a constitué dans la substitution d’un système culturel centré sur la transmission à un système culturel centré sur l’acte d’apprendre, où tout est supposé se jouer entre l’individu et le savoir qu’il a le désir ou le besoin d’acquérir.
C’est cette révolution culturelle silencieuse qu’il s’agissait d’abord de comprendre.
Ses attendus pédagogiques sont archiconnus : l’école traditionnelle s’est trompée, elle a voulu transmettre des connaissances détenues par un maître en les inculquant à des élèves passifs. Cette pédagogie de l’imposition ne marche pas. Il faut lui substituer une pédagogie active faisant de l’enfant l’acteur de la construction de ses savoirs.

Transmettre, apprendre de Marie-Claude Blais, Marcel Gauchet et Dominique Ottavi

Je pensais qu’il suffirait de dépiler le backlog pour ce cours mais cela s’est avéré plus compliqué que prévu. Je suis en proie au doute depuis une semaine sur la position à adopter. Dérouler sur AngularJS comme demandé serait la solution de facilité mais j’ai l’impression qu’ils sont partis là-dessus par méconnaissance des alternatives (le marketing Google fonctionne assez bien). Du coup, je compte m’accorder une petite heure pour commencer sur les Web Components et sur les deux approches possibles (cache) avec d’autres détails plus techniques :

J’ai déjà écrit sur les web components et même expérimenté différentes approches pour une conférences. Cette extensibilité souffre de certaines critiques (cache) que je trouve parfaitement légitimes mais standardisée ou non la machine est en marche. Une bonne façon d’aborder également la discussion sous un angle politico-stratégique avec Google et Facebook pour rappeler l’importance du W3C. On débroussaillera aussi les différentes solutions sous l’angle de la performance, des mauvaises habitudes qu’ils pourraient apprendre avec AngularJS (cache) et des faux espoirs qu’ils pourraient avoir avec ReactJS (cache).

Une fois les bases posées, je compte leur laisser le choix de partir sur l’une des quatre solutions pour continuer et explorer les composants web. S’ils souhaitent ne faire finalement que du AngularJS sans approfondir spécifiquement les directives je suis d’accord aussi, à ce moment on explorera ensemble et je leur conseillerai pour la suite un livre sur le sujet écrit par des personnes de confiance qui n’hésitent pas à nous donner quelques astuces sur les directives et leurs tests (cache) justement.

Au niveau des petits items qui viennent compléter le backlog principal, ce sera l’occasion d’introduire Bootstrap avec notamment UI Bootstrap et React Bootstrap. L’un des participants à la formation m’a déjà fait part de son scepticisme vis-à-vis de Bootstrap en m’envoyant cet article (cache). Encore une discussion intéressante en perspective :-).

February 02, 2015 11:00 AM

February 01, 2015

David Larlet

Popularité, stress et décentralisation

Why does it all happen? I think the major problem lies in the fact that we became the consumers of high volume of information and we can’t process all of it. There is too much noise and we don’t have time to properly analyze the content we are served and check where it comes from. And our brains work faster, if we feed them with clear numbers. On the other hand, having a big number of followers is just tempting for authors.

Popularity-driven development (cache)

L’un des avantages de ne plus utiliser un service centralisé comme Twitter au profit de RSS/Atom est de ne plus pouvoir avoir de statistiques sur les lecteurs. Publier pour le plaisir de partager uniquement.

February 01, 2015 11:00 AM

Karl Dubost

Vivre ensemble

poteaux et herbes la nuit Tsujido, Japon, 9 septembre 2014

La porte de Mona n'était jamais fermée - non pour que son ami pût entrer le matin sans la réveiller, mais parce qu'elle était par la race de ces nomades du désert que le déclic d'une serrure angoisse : où qu'elle fut, elle plantait toujours sa tente en plein vent.

Julien Gracq, Brocéliande à Nebias.

La ville offre la proximité. Nos aspérités humaines créent l'émergence de la friction. Nous construisons des murs. Nous nous cachons derrière des rideaux. À être proches, nous tentons la distance. Le danger de la forêt nous a poussé ensemble. Les forêts ont disparu. Le danger est maintenant le voisin. Les parcs arborent les signes de restrictions de plus en plus nombreuses. Les voisins se plaignent du bruit. Les enfants ne peuvent plus courir. Nous avons créé ce monde où nous avons peur de nous exposer. Nous avons créé ce monde où ne supportons pas l'autre et ses propres habitudes. Et lorsque les enfants ne courent plus, il leur reste l'obésité.

February 01, 2015 06:39 AM

January 31, 2015

David Larlet

FinishUp Weekend

Join writers, designers, developers, photographers, engineers and other awesome people to finish what you’ve already started.

FinishUp Weekend

Je suis presque jaloux de ne pas avoir inventé ce concept. Les anti-hackathons ?

January 31, 2015 11:00 AM

Karl Dubost

Monsieur Pont de pierre

Vielles maisons le long de la rue dont enseigne Bridgestone Fujisawa, Japon, 9 septembre 2014

Telles vous cheminez, stoïques et sans plaintes,
A travers le chaos des vivantes cités,
Mères au coeur saignant, courtisanes ou saintes,
Dont autrefois les noms par tous étaient cités.

Charles Baudelaire, Les petites vieilles.

石橋さん. Monsieur Bridgestone a créé son entreprise en 1931 au Japon. Bridgestone est son nom : ishi 石 (pierre) et bashi 橋 (pont). Quelle est la portée de nos noms ? Quel destin donnons nous à notre patronyme ?

Dubost, soit de la forêt. Au Japon, 森 (forêt) et 野 (de). C'est la façon dont je signe ici.

January 31, 2015 05:47 AM

L'enfant et le train

Près de la gare vue d'en haut Fujisawa, Japon, 6 septembre 2014

Je tromperai l'enfant, car pensant m'embraser,
Tant de pleurs sortiront sur le feu qui m'enflamme
Qu'il noiera sa fournaise au lieu de l'arroser.

Théodore Agrippa d'Aubigné, Nos désirs sont d'amour la dévorante braise.

Le couple a placé l'enfant sur une barrière. Il s'agrippe au grillage. J'imagine ses doigts fermement sur le métal. Lui, il doit être complètement absorbé par les trains qui arrivent et qui partent. L'enfant a-t-il eu le goût du train ? Les parents ont-ils fait remarquer à l'enfant le train ? Comment détermine-t-on nos habitudes ? nos passions ? nos désirs ?

January 31, 2015 05:22 AM

JavaScript pour automatiser les tâches sur votre Mac

Graffiti et trottoir couvert Singapour, 18 janvier 2015

Dans cette enceinte, je pouvais me reposer, m'abandonner et abandonner les millions de détails du monde qui m'entourait.

Kim Thúy, mãn.

Mac OS X depuis très longtemps à la possibilité d'automatiser certaines tâches grâce à Automator. Le système s'appuie sur AppleScript et un dictionnaire d'API pour chaque application. Il est maintenant possible d'utiliser JavaScript comme langage principal pour contrôler son Mac.

Afin d'activer le vocabulaire JavaScript dans l'éditeur et les dictionnaires, il suffit de changer le langage par défaut :

Panneau de préférences Préférences de Script Editor

Cela permettra d'exposer les APIs JavaScript de chacune des applications, comme par exemple celui de l'application de courrier :

Interface du dictionnaire Dictionnaire de l'API JavaScript de Mail.app

Il est également possible de tester les fonctions à travers l'IDE de script du mac avec la commande suivante :

osascript -l JavaScript -i

vous permettant d'éxécuter comme vous le feriez avec un IDE pour Python.

Fenêtre du shell commandes JavaScript utilisant Mail.app

Les APIs sont hérités de AppleScript et donc parfois un peu obtuses mais ils devraient être possible facilement d'en réécrire certaines si elles sont souvent utilisées dans un programme.

Et donc pour commencer à explorer et mieux comprendre une liste d'articles et de documentation.

January 31, 2015 04:44 AM

Constat de départ

Sac en papier sur un lit Singapour, 20 janvier 2015

Maman m'a raconté que ce père, qui semblait sévère, avait demandé à être enterré avec un pot de céramique qu'il gardait précieusement dans son armoire. Ce pot contenait la terre qu'il avait prélevée dans la trace des pas de sa femme lorsqu'il l'avait aperçue la première fois. Il avait utilisé une feuille de platane pour soulever l'empreinte du pied en entier, d'un seul coup. Ses mains tremblaient parce qu'il avait failli ne jamais la trouver.

Kim Thúy, mãn.

7h02. Nous remplissons le sac. Chaque geste traduit l'habitude du déplacement léger. Les espaces ont été choisis et calibrés par l'usure du voyage. Nous tentons tout de même de trouver de nouvelles astuces pour réduire le poids et le volume. Cette fois-ci, je pars de Singapour avec un unique objet, un livre acheté à BooksActually. Nous prolongerons les sens par ce recueil de nouvelles sur la cuisine et la gastronomie de Singapour. Nous choisissons les ancres de nos futures nostalgies. Peut-être. Des traces de vie nous accompagnent dans nos départs.

January 31, 2015 03:59 AM

January 30, 2015

David Larlet

Langages d’apprentissage

It’s with all of this in mind that my recommended language for teaching beginners is now Javascript. I know, I know, it’s quirky and sometimes outright weird, but overall it’s decent and modern enough. More importantly it’s sitting on top of an unprecedentedly ubiquitous cross-platform toolkit for layout, typography, and rendering. Want to display UI elements, images, or text? Use HTML directly. Want to do graphics or animation? Use canvas.

Retiring Python as a Teaching Language (cache)

Je ne pense pas qu’il ne faille apprendre qu’un seul langage, bien au contraire. Apprendre Python pour découvrir la programmation et les algorithmes de bases est intéressant, apprendre C pour découvrir les notions de ressources bas niveau est intéressant, apprendre HTML/CSS/JS pour faire des interfaces est intéressant aussi. Évitons de partager nos propres œillères.

January 30, 2015 11:00 AM

January 29, 2015

Eric van der Vlist

First steps with MarkLogic

[Edited to take into account Dave Cassel’s comments] To get started with MarkLogic I have chosen to develop a persistence layer for Orbeon Form Runner. This is the kind of projects I like, small enough to be done in a … Continue reading

by Eric van der Vlist at January 29, 2015 07:15 PM

David Larlet

Concepteurs utilisateurs

Il faudrait que les concepteurs soient contraints d’utiliser leurs réalisations pendant quelques mois. Spéciales dédicaces aux architectes de la gare SNCF de Montpellier et de la Villa Méditerranée marseillaise.

January 29, 2015 11:00 AM

January 28, 2015

David Larlet

Merci pour votre attention

If you’re in the audience at a scientific conference, what do you really want? For me, that’s quite simple: understanding the papers that seem relevant to me. So as a speaker, focus not on what you want, but what the audience wants. Your personal goal is to get your message across to those researchers for whom it is relevant. Note in particular that attention is not a part of your goal. Sure, in order to understand a message, people will likely need to pay attention, but solely capturing (or stealing) that attention does not reach your goal. Furthermore, if people get your message without paying attention, that seems like a win–win situation. Therefore, instead of focusing on getting attention, focus on maximizing the use of the attention you get.

Thank you for your attention (cache)

Remarques intéressantes sur l’attention et la clôture d’une intervention.

January 28, 2015 11:00 AM

★ Prospective Python

J’ai retrouvé un vieux brouillon de mon intervention aux rencontres Django (novembre 2012) donné sous le titre « Pourquoi je ne veux plus utiliser Django ? ». Je le publie en l’état et je reviens dessus à la fin.

Titre clairement provocateur pour cette intervention aux rencontres Django de Toulouse qui est né d’un ressenti que j’ai depuis quelques mois/années. Je vais essayer de détailler les doutes que j’ai sur le futur de Django et Python. Je vois plusieurs défis majeurs pour les mois à venir :

Python 3

Python 3.0 est sorti il y a 4 ans quasiment jour pour jour (3 décembre). Qui l’utilise aujourd’hui ? Qui a un projet web en production qui repose sur cette version ? Très peu. Principalement car la rétro-compatibilité n’a pas été conservée pour cette version ce qui pose clairement des problèmes de mise à jour des bibliothèques sans lesquelles un projet ne peux pas se faire aussi rapidement qu’en 2.X. C’était un risque énorme qui a été pris et la communauté en paye le prix fort. Combien faudra-t-il encore d’années pour que cela change ? Quels sont les gains réels ? Qu’en est-il de Pypy ?

Et quitte à réapprendre une partie du langage, est-ce qu’il ne faudrait pas aller voir ce qui se fait ailleurs ?

Node.js

Node.js is a tumor on the programming community, in that not only is it completely braindead, but the people who use it go on to infect other people who can’t think for themselves, until eventually, every asshole I run into wants to tell me the gospel of event loops. — Ted Dziuba, Fibonacci’s lover

Phénomène de mode ou futur proche ? Il y a énormément de côtés plaisants à Node.js : notion de callbacks, promesse d’une validation des données partagée entre le client et le serveur, performances, etc. Par contre le manque de maturité est vite bloquant aussi : traceback incompréhensibles, outils insuffisants, manque de bonnes pratiques et de retours d’expériences, etc. Certains ont clairement fait le choix de s’engager dans cette voie mais ça me rappelle bien trop l’engouement autour de Ruby on Rails il y a quelques années auquel j’ai résisté et dont je me félicite aujourd’hui (ce n’est pas une critique de RoR sans lequel Django ne serait très certainement pas ce qu’il est aujourd’hui).

Flask

OH: "Microframework (n): A small amount of crap. See also Framework (n): A large amount of crap." — @nikita_ppv

Django se complexifie. Release après release. L’héritage des class-based views est assez symptomatique du problème (disclaimer : j’ai participé à ce sac de nœuds…) de la généralisation à outrance qui nuit au framework. Les alternatives comme Flask sont alléchantes mais il y a des frameworks basés sur Node.js qui arrivent aussi et qui apportent des réponses aux problématiques de temps-réel, ou plutôt…

Temps-humain

J’ai abandonné le terme temps-réel qui ne veut pas dire grand chose au profit de celui-ci qui repose sur la perception humaine de rapidité que l’on peut avoir avec une interface et qui me semble beaucoup plus proche de la réalité. Il est toujours relativement compliqué d’utiliser les websockets avec Django et même Python. Comment développer les applications interactives de demain ?

Et après ?

It’s so much easier to talk about how something sucks than to talk about how it could be awesome. Negativity is for the lazy. — @defunkt

Parlons d’avenir et de web. Il y a eu 2/3 évolutions ces dernières années dans les implémentations et leurs usages (car les standards existent depuis un moment) permettant d’introduire de nouveaux paradigmes dans le développement d’applications. Voici quelques exemples de pistes à explorer :

  • API-first : le modèle MVC a pris du plomb dans l’aile avec la multiplication des périphériques et des moyens de consommation des données, il faut repenser la gestion de la donnée ;
  • asynchronicité : certaines requêtes mettent plus de temps que d’autres mais ce qui importe c’est la perception qu’à le visiteur de la réactivité de votre application, il manque des outils permettant de gérer ces cas aux limites qui font pourtant parfois la valeur réelle de l’application ;
  • single page apps : de plus en plus de sites se développent en n’utilisant qu’une seule page, il y a même un livre dédié à ce concept, or les frameworks ont bien souvent un contrat unique de requête/réponse par page qui répond mal aux exigences d’une mise à jour partielle de page ;
  • mobilité : le web est dans de plus en plus de poches, à portée de doigts, avec une inégalité des accès au réseau en fonction de la localisation. Il faudrait que les frameworks soient adaptés à ces nouveaux usages avec du stockage local et de la synchronisation, avec des rendus adaptés aux vitesses de connexion, avec des concepts moins gourmands en énergie et en bande passante.

J’espère que ces pistes seront partie prenante des discussions relatives à Django 2.0 ou de nouveaux frameworks que j’espère en Python. Ces nouveaux paradigmes me redonneraient à coup sûr l’envie de développer en utilisant Django ;-).

Retour en 2015

Malheureusement, 2 ans plus tard, j’ai toujours les mêmes doutes sur le futur de Python/Django. J’expérimente avec ReactJS depuis maintenant un an. Relire ce tweet me fait sourire de naïveté :

ReactJS is to Web Components what microformats were to Semantic Web. And I can’t conclude anything from that.

Il y a une effervescence dans la communauté JavaScript qui serait grisante si elle ne cessait de réinventer la roue. Plusieurs fois. Mais force est de constater qu’il y a des pistes intéressantes dans ReactJS : ils ont justement « repensé la gestion de la donnée » avec Flux, ils permettent l’asynchronicité, on peut faire des SPA sans se prendre la tête, ils expérimentent avec la mobilité (React Native et GraphQL/Relay ont été annoncés ce jour). Autant d’approches que je n’ai pas vues dans la communauté Python. Je ne compte pas dire au revoir à Python (cache) car je prends toujours beaucoup de plaisir à coder avec mais je commence à me poser de sérieuses questions sur sa pertinence pour des projets Web réactifs (huhuhu).

January 28, 2015 11:00 AM

January 27, 2015

David Larlet

Systèmes réactifs

We believe that a coherent approach to systems architecture is needed, and we believe that all necessary aspects are already recognised individually: we want systems that are Responsive, Resilient, Elastic and Message Driven. We call these Reactive Systems.

The reactive manifesto (cache)

Je me demande dans quelle mesure ce type de système est atteignable sans introduire une trop grande complexité/intelligence.

January 27, 2015 11:00 AM

January 26, 2015

David Larlet

Menace commune

If killing large numbers of civilians does not have a military impact, then what, Wilson asks, is the purpose of keeping nuclear weapons? We know they are dangerous. If they turn out not to be strategically effective, then nuclear weapons are not trump cards, but time bombs beneath our feet.

Why did Japan surrender? (cache)

Les faits, aussi récents qu’anciens, nous montrent qu’il faut une menace commune pour que les peuples se soudent et œuvrent ensemble. Or nous en avons deux : le nucléaire et le changement climatique. Quelles chances pour l’Humanité ! L’Homme est semble-t-il aussi la première espèce terrestre qui peut sciemment décider de sa survie…

One answer to the Fermi paradox is that nobody makes it through — that climate change is fate, that nothing we do today matters because civilization inevitably leads to catastrophic planetary changes.

Is a Climate Disaster Inevitable? (cache)

January 26, 2015 11:00 AM

★ Cours IUT : Construction collaborative

Aider chaque élève à organiser ses connaissances et à progresser dans sa formation, à devenir compétent, c’est lui apprendre à créer des ensembles, des groupes, à prendre conscience de l’existence de patterns. La première activité cognitive, quelque soit le niveau scolaire ou la discipline, est de Trier-Classer-Ranger.

Faire toujours la même chose à bon escient, c’est être compétent. (cache)

On a débuté le cours avec un IceBreaker (mad, sad, glad) qui apporte beaucoup d’informations au final sur le caractère des participants dès le premier échange. J’ai ensuite formé trois colonnes sur le tableau en les invitant à venir les compléter avec des post-it :

  • Compétences
  • Expériences
  • Appétences

Des choses intéressantes sont sorties comme une forte envie de développer mais aussi de créer une agence web avec des compétences allant de monter un réseau à scrum en passant par Prestashop, Joomla ou Wordpress. Cette fois les niveaux semblent plus proches mais les horizons différents ce qui m’intéresse beaucoup en termes de partage de cultures et d’entraide.

J’ai ensuite proposé que l’on définisse ensemble ce que l’on mettait derrière Web Mobile avec trois nouvelles colonnes :

  • Web Mobile
  • ?
  • !Web Mobile

Cela a permis de discuter de pas mal de concepts, allant du paiement sans contact au streaming vidéo en passant par Objective-C ou PhoneGap. Cette tentative de définition était avant tout un prétexte à la discussion. J’ai pu expliquer certains des concepts qui n’étaient pas forcément maîtrisés par tous comme les API natives ou les latences réseaux. J’ai essayé d’encourager certains à expliquer aux autres ce qu’ils entendaient par les termes qu’ils énonçaient. Contrairement à mon positionnement de sachant lors du premier groupe, je souhaite plus aller vers de la facilitation et de la discussion cette fois-ci, j’estime qu’ils ont les bases suffisantes pour cela.

Une fois gagné en fluidité, on est passé à « ce que l’on veut faire ensemble », sans aucune contrainte de ma part. On a simplement listé ce dont ils avaient envie pour ce cours. J’ai donné une approximation des tailles relatives entre les cartes pour qu’ils puissent ensuite les classer par priorité descendante en connaissance de cause. Nous sommes arrivés au backlog suivant :

  1. AngularJS
  2. Performance Web
  3. PHP-MySQL
  4. Canvas
  5. NodeJS
  6. UI/UX

Avec une listes additionnelle de petits items à insérer au moment fortuit ou dans les temps-morts :

  1. AJAX/JSON
  2. Bootstrap
  3. Flexbox
  4. Veille techno
  5. Mobile-First
  6. SASS/LESS

Au final, ça n’a pas tout a fait à voir avec le Web Mobile (ni mes compétences !) mais l’expérience m’intéresse pour voir ce que cela produit en termes d’implication et de curiosité.

On a terminé par établir clairement les règles du jeu. S’il y a une seule chose que j’ai retenu de l’intervention de Dan Mezick c’est qu’il est important de définir des règles claires dès le début et il se trouve que j’ai toujours une profonde aversion pour les notes. En combinant les deux, j’ai proposé aux élèves d’établir leur propre système de notation. Leur choix s’est porté vers l’auto-évaluation (après avoir hésité sur un projet suivi qui demandait de regrouper l’ensemble des technologies quitte à produire un patchwork artificiel).

Ils repartent avec trois tâches à effectuer pour la fois prochaine :

  • je vais essayer de mettre en place une routine (voir lien en extrait) de veille technologique en leur proposant de revenir avec 3 liens par séance à commenter pour commencer le cours ;
  • j’ai expliqué pour chaque carte la matière avec laquelle il fallait arriver en cours (avoir lu le tutoriel d’AngularJS, avoir fait une pré-analyse des performances pour un site de leur choix, etc) ;
  • m’envoyer par email l’une de leurs réalisations.

January 26, 2015 11:00 AM

January 25, 2015

David Larlet

Voisinage en Python

J’ai besoin de connaître les articles précédents et suivants pour le blog et maintenant pour ces notes, je suis arrivé à la version suivante en Python qui produit un générateur à partir d’un itérable grâce au mot-clé yield :

def neighborhood(iterable, first=None, last=None):
    """
    Yield the (previous, current, next) items given an iterable.

    You can specify a `first` and/or `last` item for bounds.
    """
    iterator = iter(iterable)
    previous = first
    current = iterator.next()  # Throws StopIteration if empty.
    for next in iterator:
        yield (previous, current, next)
        previous = current
        current = next
    yield (previous, current, last)

Il me fallait surtout la possibilité de spécifier un premier/dernier item pour avoir un lien sur le premier article publié vers les pensées plus anciennes ou la première note vers les tweets archivés.

January 25, 2015 11:00 AM

★ Cours IUT : Web Mobile

The more I build for the web, the more the term ‘device-agnostic’ endears itself to me.

I used to think it merely dealt with basing responsive breakpoints on content rather than particular devices, but there’s more to devices than the size of their screens. A device-agnostic approach also takes into account infinite combinations of screen resolution, input method, browser capability, and connection speed. With such a wide range of possibilities, the sensible thing to do is to zero in on the harshest conditions (or toughest things to deliver) and build from there. Like cars designed to perform in extreme heat or on icy roads, websites should be built to face the reality of the web’s inherent variability. In my mind this approach addresses the following from the beginning:

  • Hostile browsers
  • Tiny screens
  • Slow connection speeds
  • Touch inputs

Device-Agnostic (cache)

Je démarre un cours intitulé Web Mobile avec une nouvelle classe demain, j’ai 28 heures réparties en matinées. La première séance de découverte sera l’occasion de définir ensemble ce que l’on entend par Web Mobile car je n’ai pas de définition, je ne suis même pas sûr que ça veuille vraiment dire quelque chose (mais bon c’est moi qui ait proposé le titre à la responsable alors mea culpa).

Je compte pour cela faire usage d’outils à base de sujets/concepts, de priorisation, de réajustement et de flux. Toute ressemblance avec des outils liés à l’agilité serait forcément fortuite. Ce n’est pas encore tout à fait clair pour moi et c’est une bonne chose, ce sont des outils que je souhaite inventer/adapter/tordre/jeter avec les participants. Mon objectif est qu’ils arrivent à exprimer leurs connaissances actuelles et leurs souhaits pour ce cours. Afin que l’on puisse ensuite décider ensemble de ce que l’on va traiter tout en réajustant en cours de route s’il le faut.

Il devrait y avoir une douzaine de personnes plus techniques que la dernière fois, ce qui donne une inertie de groupe moins importante. De quoi explorer de nouvelles façons de partager et de produire collectivement. On va forcément parler de mobile-first (cache) et de challenges pour les web designers (cache), je suis curieux et impatient de voir ce qu’ils vont me proposer en retour…

January 25, 2015 11:00 AM

Karl Dubost

Constat de vie

Immeubles et leurs environnements Singapour, 19 janvier 2015

Je lui avais envoyé le plan du métro, expliquant la vitesse du train qui s'enfonçait dans le noir des tunnels avec la précision d'une balle le long du canon parce que je préférais la lenteur de notre train, si lent que nous frôlions le quotidien des gens habitant tous près des rails.

Kim Thúy, mãn.

11h40. Les immeubles sont de quatre ou cinq étages. Les fenêtres y sont très nombreuses et couvrent parfois tout un mur. Les arbres et les zones végétales y sont abondantes. Des chemins parcourent l'ensemble des possibles randonnées d'un rêveur du soir. L'espace n'y est pas partagé, il est mutuel. Il est le lieu du sentiment. Les paroles s'y oublient, car on les répétera le lendemain et le jour suivant. L'ombre est vivante et chaleureuse. Des boutiques occupent le rez de chaussée de certains immeubles. Une grande halle au milieu de la cité accueille les couleurs des légumes, poissons et viandes. On imagine déjà quelles sont les règles d'accueil des autorités de Singapour. On ne peut pas habiter à Tiong Bahru, on ne peut qu'y vivre. Le regard du visiteur absorbe le quotidien.

Immeubles et leurs environnements Singapour, 19 janvier 2015

January 25, 2015 06:43 AM

Constat d'espace

Linges étendues sur des bambous en dehors d'un immeuble Singapour, 18 janvier 2015

Chaque recette était portée par une histoire.

Kim Thúy, mãn.

9h37. Singapour se définit selon deux axes. La longue verticalité de ses immeubles d'affaires et de résidence accompagne l'horizontalité droite des rues de maisons traditionnelles chinoises. Les deux axes incarnent deux temps, deux imaginations. La douleur dans le cou, immobile, on y découvre la modernité. Souplement, dans le déroulement du pas, on s'interroge sur le passé. Mais comme si les humains n'avaient pas tout perdu de leur horizontalité, ils hérissent la modernité de leur tradition, linge à tous les étages. Les lignes verticales ont même prévu l'abondance des lignes horizontales. Cette modernité là a bien compris qu'elle ne pouvait pas exister sans aménager son identité passée.

Linges étendues sur des bambous en dehors d'un immeuble Singapour, 18 janvier 2015

January 25, 2015 05:31 AM

Constat de goût

Dim sum et teh tarik sur une table Singapour, 17 janvier 2015

Beaucoup de secrets ont été confiés entre deux cuillérés de chè et beaucoup d'histoires d'amour ont vu le jour dans ces lieux souvent sans adresse.

Kim Thúy, mãn.

9h. Nous apprécions mieux les lieux que nous goûtons. L'ombre des cafés ouverts sur l'extérieur accompagne la rencontre d'un homme passionné. Il parle avec son corps, sa peau et ses dents qui s'agitent. Son geste est large et sec. Il dit l'Europe, Singapour, le Japon. Il dit les mots et l'économie. Il impressionne bien qu'il ne soit pas dangereux. Puis il part aussi subitement qu'il est apparu. Il reste alors le goût du teh tarik et des beignets de crevettes. Le croquant du beignet de crevettes exploque en de nombreuses saveurs salées. Le parfum sucré du teh tarik donne l'équilibre. L'homme est parti. Le goût lui a survécu.

January 25, 2015 05:10 AM

January 24, 2015

David Larlet

Luxe, espace et temps

This doesn’t mean I’ll be liveblogging a lot of ham-fisted attempts to turn “everything” off. But it does mean making mindful decisions about the quality of any input that I check repeatedly – as well as any “stuff” I produce. Everything. From news sources to entertainment programming, and from ephemeral web content down to each email message I decide to respond to. The shit has to go, inclusive.

Better - Merlin Mann (cache)

Je me suis rendu compte récemment qu’après avoir expérimenté le luxe de réduire mes besoins matériels, jeté ma télévision par la fenêtre©, foutu mon portable aux chiottes©, j’ai aujourd’hui le luxe d’avoir peu de contraintes d’espace et de temps. C’est une chance que j’apprécie chaque jour. Je suis avec intérêt les aventures de Thomas pour réduire son empreinte (cache).

January 24, 2015 11:00 AM

January 23, 2015

Karl Dubost

Constat d'humanité singulière

Homme à son balcon arrosant les fleurs Singapour, 16 janvier 2015

Julie m'a fait découvrir un lieu en dehors de mon quotidien afin que je voie l'horizon, afin que je désire l'horizon. Elle voulait que j'apprenne à respirer profondément et non plus seulement suffisamment

Kim Thúy, mãn.

Il aura fallu une homme à son balcon. Torse nu, le soleil sur sa peau, il prend soin de ses plantes. Il a le geste lent et affirmé de la sagesse.

Il aura fallu une femme accoudée à la cage d'escalier de son immeuble. Lointaine, sur les hauteurs, elle observe le monde avec tendresse. Imperceptible et pourtant son corps a cette élan tranquille de l'aube.

Dans les rues de Singapour, nos corps se réchauffent. Le teh tarik, le roti prata et les bouffées humides de la végétation vert sombre déploient nos sens olfactifs. L'humanité était pleine et convexe.

Femme au balcon d'un immeuble Singapour, 16 janvier 2015

January 23, 2015 12:22 PM

Une boutique atemporelle

Boutique de nettoyage patinée Tsujido, Japon, 15 janvier 2015

Beaucoup de livres en français et en anglais avaient été confisqués pendant les annnées de chaos politique. On ne connaîtrait jamais le sort de ces livres mais certains avaient survécu en pièces détachées. On ne saurait jamais par quel chemin étaient passées des pages entières pour se retrouver entre les mains de marchands qui les utilisaient pour envelopper un pain, une barbotte ou un bouquet de liserons d'eau… On ne pourrait jamais me dire pourquoi j'avais eu la chance de tomber sur ces trésors enfouis au milieu de tas de journaux jaunis. Maman me disait que ces pages étaient des fruits interdits tombés du ciel.

Kim Thúy, mãn.

Le temps a de nombreux visages. Cruel, sympathique, époustouflant, terrible, il se dévoile rarement où nous l'attendons. Il se fait attendre. Il est trop rapide. Il est trop lent. Un matin, nous percevons un premier poil blanc dans la barbe. Un après-midi, nous nous extasions de la vélocité d'un déplacement. Un soir, nous dérivons à la patine d'une boutique au coin d'un mur. Un logo fané, une peinture qui témoigne des années de pluie. Et pourtant la boutique est toujours active. Ces boutiques là ne veulent pas séduire et grossir leur marché. Elles se contentent de la clientèle habituelle. La boutique existe pour le besoin présent. La manufacture ralentit. Le temps devient un long passage. Il n'existe plus.

January 23, 2015 12:06 PM

David Larlet

Payez ce que vous pouvez

Pay-as-you-can!

We want to provide everyone the opportunity to come, so we kindly ask everyone to give as much as s/he can afford. What does that mean? We have four levels of pricing. Please choose the one that suits your budget.

  • base: can be 0, if you cannot afford otherwise
  • reasonable: covers basic costs of food and lodging
  • nice: all costs covered, including infrastructure and tools
  • supporter: you support others that cannot afford their travel, stay and food

Budget and Pricing - hillhacks (cache)

Je ne l’avais encore jamais vu à l’œuvre sur une conférence mais j’apprécie beaucoup le principe qui demande bien sûr une grande transparence sur les frais et les recettes (plutôt bien fait sur la page en question). Inspirant.

January 23, 2015 11:00 AM

January 22, 2015

David Larlet

Optimisation de lecture

“Small screens are getting bigger, big screens are getting smaller and you know what? It’s going to end up looking like a book. We found out 500 years ago that the book is the optimal size for reading,” he says. “The best size fo a page is the spread of my hand,” says Spiekermann, holding a spry example in the air. “You put 50 characters in a column and you have your point size, and each language has its own easiest fonts. That all defines it. The eye, the hand, the language. Not technology.”

Recopié depuis l’image d’un tweet

C’est la raison pour laquelle l’évolution des ordiphones vers un écran de 5,5 pouces est inéluctable. Pour un produit en lecture seule :-).

January 22, 2015 11:00 AM