mirror of
https://github.com/almet/notmyidea.git
synced 2025-05-01 21:12:23 +02:00
2622 lines
No EOL
249 KiB
XML
2622 lines
No EOL
249 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<feed xmlns="http://www.w3.org/2005/Atom"><title>Carnets en ligne</title><link href="https://blog.notmyidea.org/" rel="alternate"></link><link href="https://blog.notmyidea.org/feeds/all-en.atom.xml" rel="self"></link><id>https://blog.notmyidea.org/</id><updated>2019-07-03T00:00:00+02:00</updated><entry><title>Ours</title><link href="https://blog.notmyidea.org/ours.html" rel="alternate"></link><published>2019-07-03T00:00:00+02:00</published><updated>2019-07-03T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-07-03:/ours.html</id><summary type="html"><p>J'ai de plus en plus de mal à garder mon calme dans les situations ou je
|
||
rencontres des humains qui ont des comportements que je trouve déplacés. Je me demande à quel point le fait d'être maintenant un commerçant impacte ma
|
||
capacité relationnelle générale.</p>
|
||
<p>De manière plus large, est-ce normal …</p></summary><content type="html"><p>J'ai de plus en plus de mal à garder mon calme dans les situations ou je
|
||
rencontres des humains qui ont des comportements que je trouve déplacés. Je me demande à quel point le fait d'être maintenant un commerçant impacte ma
|
||
capacité relationnelle générale.</p>
|
||
<p>De manière plus large, est-ce normal de tolérer des comportements qu'on estime anormaux, voire immoraux ? Quand est-ce que la tolérance laisse place a de l'acceptation de comportements problématiques ?</p>
|
||
<p>Suis-je en train de devenir un ours ?</p></content><category term="Journal"></category></entry><entry><title>Vélo</title><link href="https://blog.notmyidea.org/velo.html" rel="alternate"></link><published>2019-06-27T00:00:00+02:00</published><updated>2019-06-27T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-06-27:/velo.html</id><summary type="html"><p>Depuis quelques semaines j'ai décidé d'utiliser le vélo pour aller au boulot. Pas forcement tous les jours, mais dès que les conditions le permettent je n'hésite pas.</p>
|
||
<p>C'est un vrai plaisir de se déplacer en deux roues, en quasiment silence. Le trajet mets pas loin de 35mn et passe par …</p></summary><content type="html"><p>Depuis quelques semaines j'ai décidé d'utiliser le vélo pour aller au boulot. Pas forcement tous les jours, mais dès que les conditions le permettent je n'hésite pas.</p>
|
||
<p>C'est un vrai plaisir de se déplacer en deux roues, en quasiment silence. Le trajet mets pas loin de 35mn et passe par un parc sur la fin, c'est un vrai moment de relaxation, et qui me permet de faire une jonction entre ma vie personnelle et le taf à la brasserie.</p></content><category term="Journal"></category></entry><entry><title>Un espace des communs Rennais ?</title><link href="https://blog.notmyidea.org/un-espace-des-communs-rennais.html" rel="alternate"></link><published>2019-06-26T00:00:00+02:00</published><updated>2019-06-26T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-06-26:/un-espace-des-communs-rennais.html</id><summary type="html"><p><em>Ce document se veut surtout être quelques notes, et donc revêt un caractère « fouilli » paaaarfaitement assumé. D’ailleurs, ce n'est que ce que j'ai bien voulu retenir. Voilà.</em></p>
|
||
<p>Je ressors d'une discussion avec quelques complices autour de deux idées :
|
||
1. Avoir un espace pour fédérer différentes personnes intéressées par le …</p></summary><content type="html"><p><em>Ce document se veut surtout être quelques notes, et donc revêt un caractère « fouilli » paaaarfaitement assumé. D’ailleurs, ce n'est que ce que j'ai bien voulu retenir. Voilà.</em></p>
|
||
<p>Je ressors d'une discussion avec quelques complices autour de deux idées :
|
||
1. Avoir un espace pour fédérer différentes personnes intéressées par le sujet des <em>communs</em>;
|
||
2. Monter une structure Rennaise pour proposer de l’hébergement de services web.</p>
|
||
<p>Élaborons un peu...</p>
|
||
<h2>1. Un espace pour fédérer</h2>
|
||
<p>L'idée qui à été développée est celle d'avoir un espace (un ou des lieux, à différents moments dans l'année) pour que les rencontres entre les projets <em>du libre</em> à Rennes puissent se dérouler. Le constat est qu'il existe différentes structures actuellement en place, mais que a) certaines personnes ne se retrouvent pas dans ces espaces et b) la porosité entre ces différents groupes est assez faible.</p>
|
||
<p>Pour l'instant pas d'idée précise de ce qui pourrait être proposé, mais quelques pistes ont été évoquées. l'envie est de faire un document d'intention et de proposer à d'autres de rejoindre le collectif en création.</p>
|
||
<h3>Fréquence</h3>
|
||
<p>Deux pistes ont été évoquées:</p>
|
||
<ul>
|
||
<li>
|
||
<p><strong>Faire des rencontres suffisamment espacées les unes des autres</strong>, pour que leur caractère « exceptionnel » soit une force. Si la fréquence des réunions est assez faible, alors l'incitation pour y prendre part est peut-être plus grande ?</p>
|
||
</li>
|
||
<li>
|
||
<p>ou au contraire, <strong>avoir des rencontres avec une fréquence assez forte</strong>, pour qu'en cas d'incapacité à participer il n'y ait pas trop longtemps à attendre ?</p>
|
||
</li>
|
||
</ul>
|
||
<h3>Charte éthique</h3>
|
||
<p>Le fait d'avoir un <em>code de conduite</em> pour de tels évènements à été discuté, un des arguments évoqués étant le fait qu'un tel code n'est pas considéré nécessaire par certaines personnes, puisque les règles évoquées tiennent du bon sens.</p>
|
||
<p>Il a été précisé que l'établissement de ce type de document a pour objectif de:
|
||
- Faire que des minorités et/ou oppressés se sentent protégés et considérés, et donc bienvenues à ce type d'évènements;
|
||
- En cas de situations considérées comme problématiques, des personnes référentes soient désignées pour aider à leur résolution</p>
|
||
<h3>Gouvernance</h3>
|
||
<p>Le sujet de la gouvernance à été également abordé : pour avoir de tels rendez-vous, peu importe leur nature, il faut que ceux-cis soient organisés. La possibilité d'avoir des organisat·rices·eurs· tournantes à été proposé.</p>
|
||
<p>Pour :</p>
|
||
<ul>
|
||
<li>Cela permet de ne pas reposer uniquement sur quelques personnes;</li>
|
||
<li>Faire des fiches explicatives qui permettent à tou·te·s de s'impliquer</li>
|
||
</ul>
|
||
<p>Contre : </p>
|
||
<ul>
|
||
<li>Quand tout le monde est responsable, personne ne l'est.</li>
|
||
</ul>
|
||
<p>Peut-être que des solutions intermédiaires sont à trouver, en désignant d'une fois sur l'autre les personnes qui s’occupent du prochain rendez-vous, par exemple.</p>
|
||
<h2>2. Hébergement de services Web</h2>
|
||
<p>On a discuté très rapidement de la possibilité de monter une structure pour faire de l’hébergement de services web sur Rennes. Le sujet n'a pas été vraiment développé, mais la question de la relation entre avoir un espace pour fédérer (le 1.) et être un hébergeur de service (le 2.) a été rapidement abordé.</p>
|
||
<p>Faut-il avoir une seule et même structure / groupe de personnes pour ces deux projets ? Dans le cas ou l'un s'arrête, entraînerait-il l'autre dans sa « chute » ? Est-il logique de lier les deux ?</p>
|
||
<h2>Et donc ?</h2>
|
||
<p>Et donc c'était bien chouette de prendre un peu le temps de remettre le nez dans la vie libriste Rennaise ! Ravi de voir une dynamique prendre forme, on verra bien ou ça mène :-)</p></content><category term="Journal"></category></entry><entry><title>Brasserie - petit bilan, après un an d’existence</title><link href="https://blog.notmyidea.org/un-an.html" rel="alternate"></link><published>2019-05-21T00:00:00+02:00</published><updated>2019-05-21T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-05-21:/un-an.html</id><summary type="html"><h1>La brasserie du Vieux Singe a un an !</h1>
|
||
<p>On a l'impression que c'était hier tellement le temps passe vite, mais ça fait un an que notre brasserie existe !</p>
|
||
<p>Alors on lève un peu la tête du guidon question de voir ce qu'on a accompli durant cette première année, et de …</p></summary><content type="html"><h1>La brasserie du Vieux Singe a un an !</h1>
|
||
<p>On a l'impression que c'était hier tellement le temps passe vite, mais ça fait un an que notre brasserie existe !</p>
|
||
<p>Alors on lève un peu la tête du guidon question de voir ce qu'on a accompli durant cette première année, et de faire un petit bilan :-)</p>
|
||
<h2>Quelques dates &amp; chiffres</h2>
|
||
<p>Pour se donner un peu de perspective, voici quelques dates clés de cette première année :</p>
|
||
<ul>
|
||
<li>Novembre 2017 : immatriculation de l'entreprise</li>
|
||
<li>Décembre 2017 : on a les clés !</li>
|
||
<li>Décembre 2017 à Mars 2018 : travaux, installation et divers bricolages</li>
|
||
<li>Mars 2018 : premier brassin</li>
|
||
<li>Mai 2018 : premières ventes !</li>
|
||
<li>Août 2018 : vacances :-)</li>
|
||
<li>Septembre 2018 : inauguration de la brasserie &amp; premier brassin unique</li>
|
||
<li>Décembre 2018 : second brassin unique</li>
|
||
<li>Mars 2019 : on se rémunère !</li>
|
||
</ul>
|
||
<p>Au moment d’écrire ces lignes, à la mi Mai 2019, on en est à notre 43ème brassin, on a travaillé sur 4 nouvelles bières, on a dû laver pas loin de 300 fûts, ouverts 700 sacs de malt… et on vous a fait boire la tasse ;-)</p>
|
||
<p>Petit retour en arrière…</p>
|
||
<h2>Travaux &amp; installation</h2>
|
||
<p>En arrivant dans nos locaux, on a d’abord dû réaliser quelques travaux d’aménagement : une grande partie de l'espace était utilisé en bureaux or on a surtout besoin de place dans la partie « prod ».</p>
|
||
<p>On a rajouté à notre local une tranchée pour l’évacuation des eaux usées, une chambre chaude pour la refermentation en bouteilles, ainsi que quelques gros points d’électricité et de plomberie (circuit de refroidissement des fermenteurs et plusieurs arrivées d’eau).</p>
|
||
<p>On a profité d’être sur une zone artisanale pour récupérer quelques palettes perdues chez nos voisins et les transformer en bar, tabourets et étagères, question de pouvoir vous accueillir de manière un peu sympathique !</p>
|
||
<p><img alt="Photo du bar" src="/images/un-an/bar.jpg"></p>
|
||
<p>Une fois les travaux d’aménagements terminés, on a reçu les cuves. Un moment très attendu (et un peu flippant, oui). On a d’abord reçu les fermenteurs, debout, qu’on a pu décharger au chariot élévateur, puis les cuves de brassage, la ligne d’embouteillage et enfin notre cuve de ressucrage et carbonatation. Cette dernière est arrivée couchée, on a donc du la relever à l’aide d’une grue. Vous voyez les gouttes de sueur perler sur nos fronts ?</p>
|
||
<p><img alt="Photo du levage du fermenteur avec la grue" src="/images/un-an/dechargement.jpg"></p>
|
||
<p>Quasiment aucun problème pour décharger les fermenteurs, au final. Le plus difficile a été le déchargement de notre ligne d’embouteillage, assez lourde, pour laquelle on a eu quelques déconvenues. On a la chance d’avoir sur la zone <a href="https://www.jfblevage.fr/">une entreprise de levage très arrangeante</a> qui nous a permis de décharger ça correctement, nous enlevant une belle épine du pied.</p>
|
||
<p>A peine les fermenteurs installés, on réceptionnait les cuves de brassage. Les Anglais de <a href="https://www.pbcbreweryinstallations.com/">PBC</a> sont venus sur place pour terminer l’installation et nous assister sur notre premier brassin sur cette nouvelle brasserie dont on est plutôt satisfaits.
|
||
L'avantage de ce matériel c'est que c'est la 2CV du brasseur : tout est manuel et facile à démonter &amp; remplacer en cas de soucis (ce qu'on a pas tardé à vérifier !)</p>
|
||
<h2>Premiers brassins</h2>
|
||
<p>Sur nos premiers brassins, on a décidé d’utiliser la brasserie à la moitié de sa capacité. Après tout, la moitié c'était déjà dix fois plus gros que ce qu'on avait l'habitude de faire jusqu'alors avec notre petite brasserie 100L.</p>
|
||
<p>On est donc partis sur des brassins de 800 litres. Les premiers brassins se sont vraiment bien déroulés : 7 heures de brassage &amp; nettoyage pour 800L de moût.</p>
|
||
<p>Au moment de passer nos recettes à l'échelle, on a quand même fait quelques petits changements techniques, dont je vous passe les détails ici.</p>
|
||
<p>Et puis, au fur et à mesure de l’année, les recettes et procédés pour nos bières « permanentes » ont un peu bougé également (modification de l'eau de brassage, changement des temps &amp; températures pour l'ajout du houblon lors du <em>dry hopping</em>)</p>
|
||
<h2>Préventes, puis ventes</h2>
|
||
<p>En parallèle du brassage, on faisait nos premières ventes avec notre système de préventes en ligne.</p>
|
||
<p>Le deal était assez simple : vous achetez les bières avant qu'elles ne soit brassées, et vous passez les chercher à la brasserie une fois prêtes.</p>
|
||
<p>Double avantage pour nous : une avance de trésorerie non négligeable (on a vendu nos trois premiers brassins en vente directe !) et la possibilité de faire visiter la brasserie quand les gens passent chercher leurs bières : un bon moyen de se rencontrer.</p>
|
||
<p>Notre retour sur ces préventes est vraiment positif. </p>
|
||
<p>Une fois les premiers brassins terminés, et les préventes écoulées, il fallait commencer à mettre en place un circuit de distribution pour les gens qui ne viennent pas nous voir à la brasserie.</p>
|
||
<p>Et là, <em>le double effet kiss-cool</em> de notre campagne de préventes : le bouche-à-oreilles a fait que des clients nous ont appelé directement avec l'envie de travailler avec nous ! Résultat : on se retrouve aujourd'hui avec un maillage de petits et moyens clients qui nous commandent de la bière plus ou moins régulièrement.</p>
|
||
<p>On est hyper contents de travailler avec autant de clients atypiques qui font vivre un monde qui nous parle : plusieurs cafés associatifs, des festivals engagés, des magasins de producteurs, des épiceries associatives, des groupements d’achats. On n'aurait vraiment pas rêvé mieux !</p>
|
||
<p>On a également trois petites tireuses et des gobelets, qui nous permettent de vendre des fûts à des particuliers et associations pour des petits évènements.</p>
|
||
<p>En plus de ces ventes directes, on a fait le choix de passer par des petits distributeurs pour que notre bière se retrouve à des endroits où on ne va pas livrer (la Bretagne en dehors de l'Ille-et-Vilaine par ex).</p>
|
||
<p>On s'est également mis à travailler avec un transporteur pour faire des envois.</p>
|
||
<h2>Organisation du temps</h2>
|
||
<p>Autant pour fabriquer de la bière on avait un peu d’expérience, autant pour faire tourner une entreprise on avait tout à découvrir ! </p>
|
||
<p>On passe beaucoup de temps à faire les taches administratives (téléphone, ordinateur) qu’on n'avait pas imaginées à l’origine. Ça représente environ la moitié de notre temps de travail !</p>
|
||
<p>Au final, on ne travaille tous les deux ensemble qu'assez rarement : on alterne sur la <em>production</em> (brassage, mise en bouteilles, mise en fûts, et surtout nettoyage !) d’une semaine sur l’autre ; et quand on n'est pas « de prod », on s’est réparti les tâches administratives : Fred s’occupe de la partie comptabilité et des fournisseurs ; Alexis des ventes, de la communication et de la gestion du stock.</p>
|
||
<p>En pratique ça fonctionne plutôt bien, on se fait un (indispensable !) point de synchronisation tous les lundi matin, pour lequel il faut compter au moins 3h.</p>
|
||
<p>Le problème, c’est qu’on reste un peu la tête dans le guidon. On essaie bien de prendre du recul, mais le boulot, lui, n’attend pas !</p>
|
||
<p>Et c’est là que les vacances prennent tout leur sens. Une des forces d’être à Rennes c’est qu’au mois d’Août, il ne se passe absolument rien. Le pied ! Allez hop, en vacances !</p>
|
||
<h2>La place de l’expérimentation</h2>
|
||
<p>Pour nous, faire de la bière est aussi un moyen d’expérimenter. Expérimentations qui parfois débouchent sur des brassins uniques, quand on trouve que ça vaut le coup (ou quand on teste direct en gros !)</p>
|
||
<p>Et quand on passe des tests à l’échelle, (de 20L à 1500L), on est moyennement rassurés !</p>
|
||
<p>Après quelques brassins validés, on est un peu plus relax sur le sujet, et on a mis en place de quoi faire des expérimentations à petite échelle de manière simple : vu qu'on produit du moût toutes les semaines, on en utilise une partie pour faire quelques tests : changement de levure, adjonctions, changement des températures de fermentation, etc.</p>
|
||
<p>Ah ça, c’est pas les idées qui nous manquent :-) Et c'est une super manière d'expérimenter.</p>
|
||
<p><img alt="Étiquette de la Sobacha, une lager avec une infusion de sarrasin torréfié" src="/images/experimentations/sobacha.png"></p>
|
||
<p><img alt="Étiquette de Monstrueuse Normalité, une New England IPA" src="/images/experimentations/monstrueuse-normalite.png"></p>
|
||
<p><img alt="Étiquette de Chaînon Manquant, une Sour Pale Ale avec du Kiwi" src="/images/experimentations/chainon-manquant.png"></p>
|
||
<h2>Ouverture au public, évènements et équilibre</h2>
|
||
<p>On a pris le parti d'ouvrir le magasin toutes les fins de semaine (le jeudi et vendredi de 17h à 19h) et on est hyper contents de faire visiter la brasserie aux personnes qui passent de temps à autre. Pour nous, ça fait partie des plaisirs du métier. Par contre, on avait clairement sous estimé le temps que ça nous prendrait. On accueille beaucoup et les gens sont curieux. La fabrication de bière reste encore aujourd’hui quelque chose de nouveau pour la plupart, et il faut satisfaire cette curiosité (il faut plus de brasseries !).</p>
|
||
<p>Ce qui se passe en ce moment sur la scène brassicole est génial : beaucoup de nouvelles brasseries proposent des produits exceptionnels, et les évènements se multiplient aux quatre coins de la France. On adore partager, goûter, discuter, mais on ne pensait pas être autant sollicités par des évènements extérieurs, souvent sur des week-end, et parfois loin. <strong>On souhaite garder un équilibre entre notre vie personnelle et notre vie professionnelle</strong>. Aller aux évènements aussi par plaisir. Être partout est probablement un des maux de notre temps ;-) À force de voir des brasseurs exténués, il y a de quoi se poser des questions sur la pérennité sur le long terme d’un rythme aussi effréné.</p>
|
||
<p>Notre choix, c’est celui d’être fiers de nos bières, mais également celui de créer un outil pour nos vies (la brasserie) qui leur rende service. Penser son travail de cette manière nous permet de garder les pieds sur terre.</p>
|
||
<h2>Bref…</h2>
|
||
<p>…Voilà pour le petit tour d'horizon de cette année écoulée. Plein de super choses dans les mois à venir, on vous donne des nouvelles très bientôt !</p></content><category term="Journal"></category></entry><entry><title>De Mozilla à la Brasserie du Vieux Singe</title><link href="https://blog.notmyidea.org/de-mozilla-a-la-brasserie-du-vieux-singe.html" rel="alternate"></link><published>2018-05-27T00:00:00+02:00</published><updated>2018-05-27T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2018-05-27:/de-mozilla-a-la-brasserie-du-vieux-singe.html</id><summary type="html"><p><em>Ce weekend avait lieu <a href="https://sudweb.fr/2018/">SudWeb</a> « la conférence Web surtout humaine », ou on m'a proposé de venir parler de ma reconversion professionnelle, ou comment un passionné de Logiciels Libres choisit de créer une petite brasserie artisanale.</em></p>
|
||
<p><em>Certaines parties de ce que je voulais transmettre sont passées à la trappe, alors que …</em></p></summary><content type="html"><p><em>Ce weekend avait lieu <a href="https://sudweb.fr/2018/">SudWeb</a> « la conférence Web surtout humaine », ou on m'a proposé de venir parler de ma reconversion professionnelle, ou comment un passionné de Logiciels Libres choisit de créer une petite brasserie artisanale.</em></p>
|
||
<p><em>Certaines parties de ce que je voulais transmettre sont passées à la trappe, alors que d'autres ont pris plus de place que prévu. J'avais donc envie de reprendre mes notes pour les transformer en billet de blog, question d'élaborer sur le sujet.</em></p>
|
||
<hr>
|
||
<p>J'ai toujours été motivé par mes passions. Quand j'ai commencé à travailler professionnellement, je me suis rendu compte que même si je faisais quasiment la même chose qu'auparavant, ça n'avait plus le même goût. J'étais maintenant <em>obligé</em> de le faire, et je n'en tirais pas le même plaisir.</p>
|
||
<p>Quand j'étais plus jeune au lycée j'écrivais des programmes en <em>Visual Basic</em> que je partageais en ligne sur mon site en <code>.free.fr</code>. Programmes que probablement personne n'a lu, mais l'intention était bel et bien celle de partager mes créations, et d'échanger à leur propos.</p>
|
||
<p>Cette culture du partage — celle du logiciel libre — est celle qui m'anime.</p>
|
||
<p>Quelques années plus tard, je découvre le langage de programmation Python, et avec lui toute une communauté, mue par ces mêmes valeurs de partage et d'amélioration de nos pratiques. Puis je rencontre le Logiciel Libre, avec l'écriture d'un programme (<a href="https://getpelican.com">pelican</a>) qui reste encore largement utilisé aujourd'hui. Autant dire que c'est une bonne claque que de voir des inconnus contribuer à un bout de code qu'eux aussi jugent utile.</p>
|
||
<p>À la fin de mes études, alors que je reste passionné par le développement logiciel, je ne veux ni travailler pour l'industrie, ni pour la finance. Je songe même déjà à cette époque à changer de métier (avant même d'avoir commencé !). Coup de bol, une structure qui m'est chère cherche des développeurs Python: Mozilla. Sans trop y croire, je passe une série d'entretiens qui se déroulent bien (!) et je commence quelques mois plus tard à travailler pour cette organisation incroyable, porteuse d'espoir et de toute une symbolique pour moi.</p>
|
||
<p>Je bosse sur du Logiciel Libre, en Python, en télétravail parfois, avec une bonne paie, sans parler du côté prestigieux. Grisant.</p>
|
||
<p>Mais au fur et à mesure je découvre l'envers du décors: une méritocratie ancrée et assumée, une hiérarchie de plus en plus importante, menant à une lourdeur administrative assez présente. À ajouter à la barrière de la langue, et aux différences culturelles. Finalement tout n'est pas rose ici.</p>
|
||
<p>Je décide alors de (je pense) faire un de mes meilleurs choix de vie à ce jour: passer aux 4/5èmes. Je récupère tous mes vendredis. Des weekends de 3 jours, toutes les semaines. Un espace précieux pour me reposer, et pour rêver un peu.</p>
|
||
<p>C'est à ce moment que Fred, un ami de longue date, en revenant du Québec (ou les brasseries sont légion), me propose de faire de la bière avec lui. Moi qui ne savais même pas qu'il était <em>possible</em> de faire de la bière. On tente donc l'expérience, et nos premières expériences sont des journées bien <em>funky</em>, à faire toutes les erreurs possibles.</p>
|
||
<p>Peu à peu, on découvre un nouveau monde: celui des brasseurs amateurs. De nouvelles compétences sont nécessaires, de la physique à la biochimie. On se met à rencontrer des professionnels, des passionnés, à échanger sur les forums. On se forme, petit à petit. Tout comme il y a la communauté des gens qui font du Python, il y a la communauté des gens qui font de la bière. Pas encore autant fédérés, ça semble balbutiant alors mais la passion elle est bien présente.</p>
|
||
<p>Tout comme le monde du Logiciel Libre est constitué autour d'un ennemi commun (les GAFA), le monde de la bière artisanale à la sien: les brasseries industrielles, qui uniformisent les goûts et les processus.</p>
|
||
<p>Je continue en parallèle mon travail chez Mozilla, pendant 4 années. Et puis un jour, une annonce d'arrêt d'un projet sur lequel je travaillais me fait réaliser que cette situation m'épuise. La fameuse goutte de trop.</p>
|
||
<p>Je décide alors de partir, de faire une pause, sans trop savoir ce que l'avenir me réserve. Une petite période de blanc de deux mois. Le regard des autres est parfois culpabilisant. Mes parents me demandent si « je ne veux pas attendre encore un peu ». La transition me fait peur, mais je choisis quand même de troquer mon confort matériel pour de la cohérence.</p>
|
||
<p>Petit à petit, l'idée de monter ce qui est maintenant devenu <a href="https://www.vieuxsinge.com">La Brasserie du Vieux Singe</a> se pose en évidence. Mais monter une brasserie ce n'est pas uniquement faire de la bière: c'est se mettre d'accord sur des valeurs, trouver comment les défendre, monter un projet pour, et tenir le cap.</p>
|
||
<p>Quelques mois après mon départ, on se retrouve donc à parler de ces valeurs de partage, de documentation, de goût. De gouvernance et de collaboration aussi.
|
||
Dans nos pratiques courantes, on décide d'intégrer du temps pour documenter la vie de la brasserie.</p>
|
||
<p>À titre d'exemple, nos étiquettes contiennent l'ensemble des ingrédients que l'on utilise de la manière la plus détaillée possible. On travaille aussi sur un projet de laveuse de fûts, qui sera publié sous licence libre, avec l'idée de pouvoir, petit à petit, constituer un ensemble d'outils utiles à tous les brasseurs, et peut être même réussir à favoriser les échanges entre toutes ces personnes.</p>
|
||
<p>Nous sommes deux brasseurs, deux chefs d'entreprise, mais aussi deux développeurs. Nos compétences de développeurs nous sont utiles quotidiennement: pour notre laveuse de fûts, pour nos créations de recettes (j'ai découvert la puissance des tableurs !), pour notre site de préventes, notre site Web, nos outils du quotidien. On se rend compte qu'il s'agit de compétences précieuses.</p>
|
||
<p>Mais monter une entreprise, c'est aussi assumer une partie administrative. Vous vous rappelez cette histoire de réactions face aux activités subordonnées ? Et bien quand je fais mes déclarations aux douanes, ce n'est pas de gaîté de cœur. Je sais par contre pourquoi je le fais: ce sont les règles du jeu. Des obligations, mais peut-être moins de coercition. J'y trouve plus de sens.</p>
|
||
<p>Et, si je n'avais pas réduit mon temps de travail, j'aurais peut-être loupé la découverte de ce nouveau monde, celui qui me passionne aujourd'hui.</p>
|
||
<p>Alors je vous invite à vous poser la question — indispensable — de vos valeurs: qu'est-ce que vous souhaitez faire ? Qu'est-ce qui vous anime ? Et peut-être à aménager du temps pour explorer vos envies. </p></content><category term="life"></category></entry><entry><title>Groupement d'achats & partage d'expérience</title><link href="https://blog.notmyidea.org/groupement-dachats-partage-dexperience.html" rel="alternate"></link><published>2018-03-03T00:00:00+01:00</published><updated>2018-03-03T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2018-03-03:/groupement-dachats-partage-dexperience.html</id><summary type="html"><p>Il y a quelques années, on s'est motivé entre copains copines pour créer un groupement d'achat.</p>
|
||
<p>L'idée est simple:</p>
|
||
<ul>
|
||
<li>commander en gros, pour faire baisser les prix</li>
|
||
<li>se passer d'intermédiaires et favoriser les circuits courts</li>
|
||
<li>aller à la rencontre des producteurs locaux et échanger</li>
|
||
</ul>
|
||
<p>Notre groupement dessert actuellement 18 foyers …</p></summary><content type="html"><p>Il y a quelques années, on s'est motivé entre copains copines pour créer un groupement d'achat.</p>
|
||
<p>L'idée est simple:</p>
|
||
<ul>
|
||
<li>commander en gros, pour faire baisser les prix</li>
|
||
<li>se passer d'intermédiaires et favoriser les circuits courts</li>
|
||
<li>aller à la rencontre des producteurs locaux et échanger</li>
|
||
</ul>
|
||
<p>Notre groupement dessert actuellement 18 foyers et une 60aine de personnes.</p>
|
||
<p>Au fur et à mesure de la vie du groupement, on a développé quelques outils pour se simplifier la vie. Voici un retour d'expérience et quelques astuces / outils, au cas où l'envie vous prenne à vous aussi :)</p>
|
||
<h1>Organisation</h1>
|
||
<p>On organise environs trois ou quatre distributions par an. Le <em>modus operandi</em> est le suivant:</p>
|
||
<ul>
|
||
<li>chaque product·eur·rice à un·e référent·e, qui s'occupe de faire le lien;</li>
|
||
<li>une personne est désignée pour coordonner la distribution;</li>
|
||
<li>4 semaines avant la distribution, les référent·e·s mettent à jour les prix / produits dans le tableau de commandes;·e·</li>
|
||
<li>3 semaines avant la distribution, les commandes sont ouvertes;</li>
|
||
<li>2 semaines avant la distribution, les commandes sont closes;</li>
|
||
<li>Les référent·e·s ont ensuite deux semaines pour récupérer les commandes pour la distribution</li>
|
||
</ul>
|
||
<h1>Quels produits ?</h1>
|
||
<p>On essaye d'avoir uniquement des produits qui se conservent (on a également quelques autres produits plus frais, mais avec d'autres modalités).</p>
|
||
<p>Entre autres: bières, légumes secs, conserves, jus, miel, pâtes, semoule, café, vinaigres, pommes de terre, oignons, huiles, farines.</p>
|
||
<p>On essaye de faire du local puis du bio au plus proche plutôt que de trouver nécessairement les prix les plus bas. C'est une discussion qui revient assez
|
||
souvent, et donc un point à évoquer lors de la création pour avoir une posture
|
||
claire sur le sujet (tout le monde n'est pas animé par la même éthique !).</p>
|
||
<h1>Paiements</h1>
|
||
<p>Pour les paiements, on utilise autant que possible des chèques. Chaque référent·e paye la·le product·rice·eur en son nom, et lui demande d'attendre la date de la distribution pour l'encaissement. La plupart des producteurs acceptent d'être payés sous quinzaine.</p>
|
||
<p>Le jour de la distribution, tout le monde apporte son chéquier. Nous avons mis
|
||
en place une moulinette qui s'occupe de faire la répartition des chèques automatiquement, chaque membre se retrouve à faire en moyenne un ou deux chèques.</p>
|
||
<p>Chaque référent·e est ainsi remboursé·e de la somme avancée, et chaque
|
||
membre du groupement d'achat paye ce qu'il doit payer. Nous n'avons
|
||
volontairement pas de structure juridique et pas de compte en banque. Les
|
||
paiements s'effectuent directement entre nous.</p>
|
||
<h1>Transports</h1>
|
||
<p>Chaque référent·e commande les produits, puis ensuite s'occupe de les rapatrier. À Rennes, on a la chance d'avoir pas mal de producteurs aux alentours, donc c'est assez simple.</p>
|
||
<p>Le mieux est de ramener les produits juste un peu avant la distribution au lieu de distribution, ça permet d'éviter de les stocker trop longtemps, et d'éviter aux producteurs d'attendre trop longtemps avant d'encaisser les chèques.</p>
|
||
<p>Pour les grosses commandes, les voitures se remplissent bien, mais ma petite Clio suffit, que ce soit dit !</p>
|
||
<h1>La distribution</h1>
|
||
<p>Un peu en amont de la distribution, il faut organiser l'espace. Des tas par membre sont constitués pour faciliter les choses le jour de la distribution.</p>
|
||
<p>Le jour même, on se retrouve, on charge ses marchandises, on échange quelques chèques et on papote ! On en profite pour:</p>
|
||
<ul>
|
||
<li>discuter de la date de la prochaine distribution;</li>
|
||
<li>trouver une nouvelle personne pour la coordonner;</li>
|
||
<li>discuter de nouveaux produits;</li>
|
||
<li>refaire le monde;</li>
|
||
<li>changer de référents pour les producteurs.</li>
|
||
</ul>
|
||
<p>Et c'est reparti pour un tour ;)</p>
|
||
<h1>Nos outils</h1>
|
||
<p>On utilise un tableur en ligne pour partager les prix et prendre les commandes. On a essayé d'utiliser <em>ethercalc</em> au début mais ça ne fonctionnait pas pour nous à l'époque (trop de petits bugs). On a donc préféré utiliser Google docs (ouch).</p>
|
||
<p>Il est d'ailleurs possible d'y intégrer de nouvelles fonctionnalités assez facilement, du coup Fred et Rémy ont planché sur un moyen d'automatiser la répartition des chèques (qu'on faisait dans un premier temps à la main - assez péniblement).</p>
|
||
<p>Le système n'est pas parfait mais fonctionne quand même assez bien !</p>
|
||
<p>Quelques ressources, donc:</p>
|
||
<ul>
|
||
<li><a href="https://gist.github.com/almet/8c77fafc9e487c02ded852ec4a91ae16">le code pour faire la répartition des chèques</a></li>
|
||
<li><a href="https://docs.google.com/spreadsheets/d/1bnPRSvf2Q2RDxKerWnEqUyJjuCFePnVMq6pWo8LeA_k/edit?usp=sharing">une version « à remplir » de notre tableau de commandes</a> (le mieux est d'en faire une copie !).</li>
|
||
</ul>
|
||
<p>Bon groupement d'achat ;)</p></content><category term="life"></category></entry><entry><title>Webnotes</title><link href="https://blog.notmyidea.org/webnotes.html" rel="alternate"></link><published>2018-02-25T00:00:00+01:00</published><updated>2018-02-25T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2018-02-25:/webnotes.html</id><summary type="html"><p>Quand je navigue en ligne, j'aime bien prendre des notes sur ce que je lis. C'est utile pour les retrouver plus tard. Il existe quelques outils pour ce genre de cas, mais j'ai vraiment eu du mal à trouver un outil qui faisais ce que je voulais, de la manière …</p></summary><content type="html"><p>Quand je navigue en ligne, j'aime bien prendre des notes sur ce que je lis. C'est utile pour les retrouver plus tard. Il existe quelques outils pour ce genre de cas, mais j'ai vraiment eu du mal à trouver un outil qui faisais ce que je voulais, de la manière que je voulais, c'est à dire:</p>
|
||
<ul>
|
||
<li>enregistrer une sélection de texte ainsi que son contexte: heure, site web.</li>
|
||
<li>fonctionner sur Firefox;</li>
|
||
<li>stocker mes notes à un endroit que je contrôle (ce sont mes données, après tout !)</li>
|
||
<li>rester en dehors de mon chemin: je suis en train de lire, pas en train d'organiser mes notes.</li>
|
||
<li>automatiquement partager les notes sur une page web.</li>
|
||
</ul>
|
||
<p>J'ai donc pris un peu de temps pour fabriquer mon outil de prises de notes, que j'ai baptisé « Webnotes ». C'est <a href="https://addons.mozilla.org/en-US/firefox/addon/wwebnotes/">une extension Firefox</a>, qui se configure assez simplement, et qui stocke les données dans une instance de <a href="http://kinto-storage.org/">Kinto</a>.</p>
|
||
<p><img src="https://github.com/almet/webnotes/blob/master/webnotes.gif?raw=true" /></p>
|
||
<p>C'est aussi simple que sélectionner du texte, faire « clic droit » puis « save as webnote », entrer un tag et le tour est joué !</p>
|
||
<p>Mes notes sont disponibles <a href="https://notes.notmyidea.org">sur notes.notmyidea.org</a>, et voici <a href="https://github.com/almet/webnotes">le lien vers les sources</a>, si ça vous intéresse de regarder comment ça fonctionne !</p></content><category term="tech"></category></entry><entry><title>Faire moins</title><link href="https://blog.notmyidea.org/faire-moins.html" rel="alternate"></link><published>2018-02-19T00:00:00+01:00</published><updated>2018-02-19T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2018-02-19:/faire-moins.html</id><summary type="html"><p>L'an dernier, j'ai décidé de faire moins de choses, ou plus exactement d'arrêter de faire de nouvelles choses. Choix assez difficile: j'aime découvrir de nouvelles pratiques, échanger sur des sujets que je connais pas, et surtout je crois que découvrir de nouvelles pratiques (sans nécessairement creuser un sujet en particulier …</p></summary><content type="html"><p>L'an dernier, j'ai décidé de faire moins de choses, ou plus exactement d'arrêter de faire de nouvelles choses. Choix assez difficile: j'aime découvrir de nouvelles pratiques, échanger sur des sujets que je connais pas, et surtout je crois que découvrir de nouvelles pratiques (sans nécessairement creuser un sujet en particulier) est l'occasion de contribuer à éviter notre société d'experts.</p>
|
||
<p>Le hic, c'est que trop, c'est trop. J'ai donc décidé d'arrêter, tout simplement, de faire de nouvelles choses, et puis avec le temps j'ai même arreté de faire des choses que j'avais commencé à faire (par exemple de l'escalade), me libérant du temps.</p>
|
||
<p>Enfin ! Je retrouve ce précieux temps. Je retrouve ces moments d'ennui. Oui, je comprends bien que ça puisse parraître fou de voir quelqu'un se réjouir de son ennui… Cet ennui me permet de creuser de nouvelles idées, de reprendre ce bouquin qu'on avait laissé tomber sans trop de raison.</p>
|
||
<p>Et surtout, c'est se retrouver à contrôler son engagement.</p></content><category term="thoughts"></category></entry><entry><title>NEIPA #3</title><link href="https://blog.notmyidea.org/neipa-3.html" rel="alternate"></link><published>2017-12-29T00:00:00+01:00</published><updated>2017-12-29T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2017-12-29:/neipa-3.html</id><summary type="html"><p><em>Voici quelques prises durant un de mes brassins. L'idée est de pouvoir les relire et m'améliorer au fur et à mesure.</em></p>
|
||
<p>Test autour d'une New England Pale Ale; Cette fois ci avec du Mosaic et du Citra, durant une collab' avec Heiko.</p>
|
||
<h1>Objectifs:</h1>
|
||
<ul>
|
||
<li>Brasser une nouvelle NEIPA en appliquant les …</li></ul></summary><content type="html"><p><em>Voici quelques prises durant un de mes brassins. L'idée est de pouvoir les relire et m'améliorer au fur et à mesure.</em></p>
|
||
<p>Test autour d'une New England Pale Ale; Cette fois ci avec du Mosaic et du Citra, durant une collab' avec Heiko.</p>
|
||
<h1>Objectifs:</h1>
|
||
<ul>
|
||
<li>Brasser une nouvelle NEIPA en appliquant les trouvailles des deux premières versions;</li>
|
||
<li>Hop stand de 40mn;</li>
|
||
<li>Contrôle du pH à 5.2;</li>
|
||
<li>Refroidissement dans l'évier;</li>
|
||
<li>Ajouter plus d'avoine;</li>
|
||
<li>Faire un mash out;</li>
|
||
<li>Augmenter un peu la quantité de grain.</li>
|
||
</ul>
|
||
<h1>Recette:</h1>
|
||
<p>DI: 1055 (atteint)
|
||
pH: 5.2 (5.4 mesuré)</p>
|
||
<h2>Grains:</h2>
|
||
<ul>
|
||
<li>75% de Pale Ale</li>
|
||
<li>12.5% de blé</li>
|
||
<li>12.5% flocons d'avoine</li>
|
||
</ul>
|
||
<h2>Houblons:</h2>
|
||
<ul>
|
||
<li>2g/L Mosaic (Hop Stand 40mn)</li>
|
||
<li>2g/L Citra (Hop Stand 40mn)</li>
|
||
<li>4g/L Citra à cru (en deux fois)</li>
|
||
<li>4g/L Mosaic à cru (en deux fois)</li>
|
||
</ul>
|
||
<h2>Eau:</h2>
|
||
<ul>
|
||
<li>Utilisation d'eau de source, pour pouvoir corriger les sulfates / chlorures.</li>
|
||
<li>200 Chlorures pour 100 Sulfates.</li>
|
||
<li>
|
||
<h2>Gypse: 1g</h2>
|
||
<dl>
|
||
<dd>1.8g (=4.05ml)</dd>
|
||
</dl>
|
||
</li>
|
||
<li>Acide lactique: 0.4ml</li>
|
||
</ul>
|
||
<h2>Profil d'empatage:</h2>
|
||
<ul>
|
||
<li>68°C durant 40mn;</li>
|
||
<li>75°C durant 10mn (mash-out)</li>
|
||
</ul>
|
||
<h2>Levure</h2>
|
||
<ul>
|
||
<li>GigaYeast «Vermont Ale». Le nombre de cellules n'est pas indiqué sur le packaging, ni en ligne.</li>
|
||
</ul>
|
||
<h1>Déroulé</h1>
|
||
<ul>
|
||
<li>12h50: empâtage à 68°C</li>
|
||
<li>pH = 5.5. Ajout de 0.2 d'acide.</li>
|
||
<li>Pas mal de mesures du pH:<ul>
|
||
<li>5.2@23°C (13h05)</li>
|
||
<li>5.4@18°C (13h05)</li>
|
||
<li>5.2@27°C (13h15)</li>
|
||
<li>5.3@19°C (13h20)</li>
|
||
<li>5.4@25°C (13h30)</li>
|
||
</ul>
|
||
</li>
|
||
<li>13h33: Mash-out à 78°C durant 10mn</li>
|
||
<li>Test à l'iode: OK</li>
|
||
<li>14h11: 1er rincage. Densité premier mout: 1070</li>
|
||
<li>15h40: Hop Stand (15g Citra / 15g Mosaic)</li>
|
||
</ul>
|
||
<h1>Fermentation</h1>
|
||
<ul>
|
||
<li>31/12/2017 - Fermentation à 20°C</li>
|
||
<li>01/01/2018 - Ajout de 12g de Citra et 12g de Mosaic après deux jours.</li>
|
||
<li>10/01/2018 - 1.040 SG = 1.008 corrigé</li>
|
||
<li>15/01/2018 - Ajout de 12g de Citra et 12g de Mosaic</li>
|
||
<li>15/01/2018 - Cold Crash</li>
|
||
<li>21/01/2018 - Mise en bouteille. Resucrage à 7g/L.</li>
|
||
</ul>
|
||
<h1>Observations:</h1>
|
||
<ul>
|
||
<li>En mettant 1.5ml d'acide, si on mesure le pH de l'eau, il est à 3.5. Ça nous à pas mal effrayé, puisque on a pas trop l'habitude de monitorer le pH. On refait: 0.4ml d'acide = pH de 4.1. Au final, cela ne semble pas utile de mesurer le pH de l'eau avant de mettre son grain.</li>
|
||
<li>Je le savais déjà, mais travailler à deux en discutant n'est pas vraiment une bonne idée: sur les opérations un peu technique, un manque de concentration se fait tout de suite ressentir.</li>
|
||
<li>BeerSmith semble proposer un outil pour calculer les modifications de pH, je devrais l'utiliser la prochaine fois.</li>
|
||
<li>Baisser le ration d'empâtage: On s'est retrouvé avec beaucoup trop d'eau de rincage, alors qu'on était sur une bière assez faible en densité.</li>
|
||
<li>Au final, ajouter l'acide au départ est problématique pour le pH de l'eau qui baisse énormement. Après quelques recherches, il semble qu'il faille faire confiance au logiciel, et prendre une seule mesure de pH à 10mn (cela devrait être stable). Le pHmetre est aussi peut-être en cause.</li>
|
||
<li>D'une manière générale, j'ai l'impression d'être un peu à l'arrache sur la partie fermentation. Il faudrait vraiment que j'ai un plan et que je m'y tienne. Plusieurs questions me semblent encore à résoudre: combien de temps laisser le houblon à cru ? A quelle température ?</li>
|
||
</ul></content><category term="Notes"></category></entry><entry><title>NEIPA #2</title><link href="https://blog.notmyidea.org/neipa-2.html" rel="alternate"></link><published>2017-12-18T00:00:00+01:00</published><updated>2017-12-18T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2017-12-18:/neipa-2.html</id><summary type="html"><p><em>Voici quelques prises durant un de mes brassins. L'idée est de pouvoir les relire et m'améliorer au fur et à mesure.</em></p>
|
||
<h1>Objectifs</h1>
|
||
<ul>
|
||
<li>Corriger les erreurs du précédent brassin.</li>
|
||
<li>Éviter les soucis de filtration</li>
|
||
<li>Mieux corriger le pH</li>
|
||
<li>Faire un whirlpool digne de ce nom / avoir moins de trub dans le …</li></ul></summary><content type="html"><p><em>Voici quelques prises durant un de mes brassins. L'idée est de pouvoir les relire et m'améliorer au fur et à mesure.</em></p>
|
||
<h1>Objectifs</h1>
|
||
<ul>
|
||
<li>Corriger les erreurs du précédent brassin.</li>
|
||
<li>Éviter les soucis de filtration</li>
|
||
<li>Mieux corriger le pH</li>
|
||
<li>Faire un whirlpool digne de ce nom / avoir moins de trub dans le fermenteur</li>
|
||
<li>Ne pas se laisser avoir par la baisse de température durant l'empâtage.</li>
|
||
</ul>
|
||
<h1>Recette</h1>
|
||
<p>DI: 1060 (1050 mesuré)
|
||
pH: 5.2 (atteint)</p>
|
||
<h2>Grains</h2>
|
||
<ul>
|
||
<li>90% Pils</li>
|
||
<li>10% Flocons d'avoine</li>
|
||
</ul>
|
||
<h2>Houblons</h2>
|
||
<ul>
|
||
<li>2g/L Wakatu (au Whirlpool)</li>
|
||
<li>2g/L Motueka (au Whirlpool)</li>
|
||
<li>4.5g/L Wakatu à cru (en deux fois)</li>
|
||
<li>2.5g/L Motueka à cru (en deux fois)</li>
|
||
</ul>
|
||
<h2>Eau</h2>
|
||
<ul>
|
||
<li>Utilisation d'eau de source, pour pouvoir corriger les sulfates / chlorures.</li>
|
||
<li>200 Chlorures pour 100 Sulfates.</li>
|
||
<li>Gypse: 0.9g</li>
|
||
<li>CaCl2: 3.4g</li>
|
||
<li>Acide lactique: Au batch précédent, j'avais mesuré 5.6, donc: ajout de +2ml d'acide (=2.4g).</li>
|
||
<li>Utilisation d'Irish Moss (2g) pour coaguler les protéines.</li>
|
||
</ul>
|
||
<h2>Profil d'empatage</h2>
|
||
<ul>
|
||
<li>65°C durant 90mn (68°C au départ, 65 visé)</li>
|
||
<li>78°C durant 10mn (mash-out)</li>
|
||
</ul>
|
||
<h2>Levure</h2>
|
||
<ul>
|
||
<li>London Ale III.</li>
|
||
</ul>
|
||
<h1>Déroulé</h1>
|
||
<ul>
|
||
<li>18h36 - empatage à 65°C</li>
|
||
<li>19h16- pH = 5.2</li>
|
||
<li>Densité 1er moût: 1070</li>
|
||
<li>Ébullition importante pour atteindre 6,2L avec la bonne densité.</li>
|
||
<li>Mash-out à 78°C durant 10mn</li>
|
||
<li>Test à l'iode: NOK</li>
|
||
<li>1er rincage. Densité premier mout: 1070</li>
|
||
<li>15h40: Hop Stand (15g Citra / 15g Mosaic)</li>
|
||
</ul>
|
||
<h1>Fermentation</h1>
|
||
<ul>
|
||
<li>18/12/2017 - Fermentation à 18°C</li>
|
||
<li>21/12/2017 - Ajout de 13.5g de Wakatu et 7.5g de Motueka</li>
|
||
<li>30/12/2017 - Ajout de 13.5g de Wakatu et 7.5g de Motueka</li>
|
||
<li>30/12/2017 - Passage à 10°C.</li>
|
||
<li>15/01/2018 - Cold Crash</li>
|
||
<li>21/01/2018 - Mise en bouteille. Resucrage à 7g/L.</li>
|
||
</ul>
|
||
<h1>Observations:</h1>
|
||
<ul>
|
||
<li>Je change de technique, et mets l'acide lactique directement dans l'eau.</li>
|
||
<li>Je concasse moins fin mais reteste quand même l'avoine. Aucun souci de filtration (mais l'avoine n'est pas concassé).</li>
|
||
<li>1g de CaCl2 ~= 2.25ml en solution à 33%.</li>
|
||
<li>Les deux thermomètres n'affichent pas la même température. Super :(.</li>
|
||
<li>Au final, j’empâte dans une casserole pour pouvoir faire un mash-out.</li>
|
||
<li>Le pH oscille pas mal durant l'empâtage. J'ai mesuré des pH de 4.9 à certains moments, mais au final la dernière lecture est de 5.2, ce qui me semble bon.</li>
|
||
<li>Le système que j'utilise (refroidisseur en cuivre) pour refroidir mon moût n'est pas génial parce que ça mélange pas mal ce qu'on veut voir se déposer au fond de la cuve. Refroidir directement dans l'évier est vachement plus simple (c'est pratique de faire du 6L pour çà !)</li>
|
||
<li>Le teste à l'iode était positif: tout n'était pas converti. Mais à 90mn de mash, je ne crois pas pouvoir faire grand chose de plus.</li>
|
||
<li>Idée en vrac, à voir à la dégustation, mais ajouter un peu de cara pourrait être sympa.</li>
|
||
<li>L'irish moss à vraiment bien fonctionné. Je me demande si je ne devrais pas même laisser décanter un peu plus longtemps durant le whirlpool pour avoir un effet encore plus impressionnant.</li>
|
||
<li>Je trouve que l'efficacité de cette brasserie est vraiment pourrie.</li>
|
||
<li>Un peu d'eau est venue diluer le moût (DI = 1050 au lieu de 1060 souhaité)</li>
|
||
<li>Au goût, le moût à vraiment un goût qui m'assèche la gorge. Trop de modifications de l'eau ? A voir si l'effet persiste après fermentation.</li>
|
||
<li>A priori, d'après un article de Scott Janish, empâter avec de l'avoine cru ne fonctionne que si on empate haut. Ca à un impact sur l'efficacité générale (2h pour conversion totale, c'est peut-être pour ça que mon teste à l'iode était positif)</li>
|
||
<li>Sur l'avoine toujours, il faut <strong>dépasser 18%</strong> pour avoir un côté moelleux. Certains mettent jusqu'à 40% !</li>
|
||
</ul></content><category term="Notes"></category></entry><entry><title>Un club des brasseurs amateurs Rennais</title><link href="https://blog.notmyidea.org/un-club-des-brasseurs-amateurs-rennais.html" rel="alternate"></link><published>2017-11-06T00:00:00+01:00</published><updated>2017-11-06T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2017-11-06:/un-club-des-brasseurs-amateurs-rennais.html</id><summary type="html"><p>En Mars dernier, suite à quelques discussions entre brasseurs amateurs, on à décidé de monter <a href="https://framalistes.org/sympa/subscribe/brassam-rennes">une liste de diffusion</a> pour faciliter les échanges autour du brassage amateur sur Rennes et ses alentours.</p>
|
||
<p>Un peu plus tard, <a href="https://www.facebook.com/groups/899071153568179/">un groupe Facebook</a> est venu s'ajouter, et c'est vrai qu'on sent une dynamique naissante …</p></summary><content type="html"><p>En Mars dernier, suite à quelques discussions entre brasseurs amateurs, on à décidé de monter <a href="https://framalistes.org/sympa/subscribe/brassam-rennes">une liste de diffusion</a> pour faciliter les échanges autour du brassage amateur sur Rennes et ses alentours.</p>
|
||
<p>Un peu plus tard, <a href="https://www.facebook.com/groups/899071153568179/">un groupe Facebook</a> est venu s'ajouter, et c'est vrai qu'on sent une dynamique naissante autour de la brasserie artisanale dans le coin.</p>
|
||
<p>En six mois, on est maintenant une grosse trentaine de personnes à être inscrits sur les listes et à se retrouver de temps à autres.</p>
|
||
<p>On en profite pour s'échanger des bons plans, déguster nos créations, (essayer de) faire des commandes groupées de malt, et pour se rencontrer pour papoter entre passionnés.</p>
|
||
<p>On a pas mal d'idées de trucs sympa a faire, entre autres:</p>
|
||
<ul>
|
||
<li>brasser une fois en gros puis se séparer le batch en plein de petits fermenteurs pour essayer différentes levures, différents houblons en <em>dry hop</em>, etc.</li>
|
||
<li>A la dernière rencontre, on s'est mis d'accord sur un style de bière pour se lancer un petit défi: tous brasser <a href="https://blog.notmyidea.org/larrivee-du-trouble-ou-comment-faire-des-neipa.html">une NEIPA</a> pour ensuite comparer nos résultats.</li>
|
||
</ul>
|
||
<p>Bref, c'est plutôt chouette ! Je me suis rendu compte qu'on avait quasiment aucune existence en dehors des réseaux sociaux, alors je me permet de publier ce petit bout d'article avec quelques liens…</p>
|
||
<p>Si tu es dans le coin et que tu souhaite nous rencontrer, n'hésite pas à rejoindre <a href="https://www.facebook.com/groups/899071153568179/">notre groupe de discussion Facebook</a> et notre <a href="https://framalistes.org/sympa/subscribe/brassam-rennes">liste de diffusion mail</a>.</p>
|
||
<p>A bientôt ;)</p></content><category term="biere"></category></entry><entry><title>L'arrivée du trouble (ou comment faire des NEIPA ?)</title><link href="https://blog.notmyidea.org/larrivee-du-trouble-ou-comment-faire-des-neipa.html" rel="alternate"></link><published>2017-10-17T00:00:00+02:00</published><updated>2017-10-17T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2017-10-17:/larrivee-du-trouble-ou-comment-faire-des-neipa.html</id><summary type="html"><p><strong>Ceci est une traduction d'un article paru dans le magazine « Brew Your Own » en Octobre 2016, écrit par Dave Green</strong></p>
|
||
<p>C'est la saison des élections aux états unis et la bataille entre les partis politiques semble être plus controversée que d'habitude. Coincidemment, les buveurs de bières « Craft» US semblent avoir …</p></summary><content type="html"><p><strong>Ceci est une traduction d'un article paru dans le magazine « Brew Your Own » en Octobre 2016, écrit par Dave Green</strong></p>
|
||
<p>C'est la saison des élections aux états unis et la bataille entre les partis politiques semble être plus controversée que d'habitude. Coincidemment, les buveurs de bières « Craft» US semblent avoir leur propre bataille qui divise au moins autant: une IPA peut elle être aussi trouble qu'une hefeweizen ? En provenance du coin Nord Est des États-Unis, l'IPA trouble est en passe de devenir culte depuis quelques années. Mais la mode ne vient pas sans contrecoup. En fait, tout le monde y va de son opinion chez les brasseurs artisanaux. Pour ceux qui apprécient ce type d'IPA, l'apparence trouble signifie que les gorgées qui suivent seront extrèmenent riches en huiles de houblons; pour les autres, l'apparence est un affront à des principes ancestraux. Que vous les appeliez des rince-bouches, des soupes boueuses, brillantes ou horribles, ne vous faites pas de fausse idée: ces ales troubles sont là pour rester.</p>
|
||
<p>Pour commencer cette histoire, revenons un peu au début des années 1990. La scène brassicole artisanale était en train de vivre son premier boom et les nouvelles brasseries faisaient leur apparition dans tous les coins des États-Unis. Menée par Sierra Nevada Brewing Company, les American Pale Ale et les American IPA étaient en train d’émerger en tant que styles populaires parmi les amateurs de bière, pour leurs caractéristiques riches en houblon.</p>
|
||
<p>Le niveau d'amertume était un trait notoire, et avoir la bonne morsure d'amertume était essentiel pour une IPA. L'innovation a ensuite commencée à arriver sur la cote Ouest des États Unis à la fin des années 1990, et au début des années 2000, quand quelques doubles ou impériales IPA telles que Pliny the Elder de Russian River et Ruination IPA de Stone Brewing ont commencées à sortir des fermenteurs. Alors que celles ci contenaient énormement de « morsure du houblon», ce qui séparaient ces bières de beaucoup d'autres versions du style était le fait que le nez et la saveur du houblon semblaient éclater de la bière.</p>
|
||
<p>Du point de vue du brasseur, les huiles essentielles de ces houblons étaient bien plus présents que les acides alpha. En utilisant un profil de malt neutre et une souche de levure neutre, ces bières laissaient la part belle aux houblons. Ces brasseurs utilisaient aussi des houblons souvent critiqués, forts en acides alpha, tels que Columbus, Centennial, Simcoe et Chinook à la fin de l'ébullition ou en houblonnage à cru... et en grosses quantitées. Cela peut sembler comme une pratique courante pour une IPA actuellement, mais il y a à peine 15 ans, la plupart de la littérature évitaient d'utiliser ces variétés de houblon pour une utilisation autre que de l'amérisant. Lévolution d'une nouvelle American IPA était en train de prendre forme, sur la cote Ouest des étants unis, un style que les buveurs de bière ont nommé la « West Coast IPA».</p>
|
||
<h1>La phase de démarrage</h1>
|
||
<p>De retour sur la cote Est des États-Unis, dans un petit brewpub de Burlington à Vermont, deux brasseurs commencent innocemment à développer un type d'American IPA avec des objectifs similaires que les brasseurs de la côte Ouest, mais en utilisant une stratégie différente. Crée en 1988 par Greg Noonan et Steve Polewacyk, le « Vermont Pub &amp; Brewery » deviendra le berceau d'une nouvelle révolution autour des IPA.</p>
|
||
<p>Souvent citée comme étant les premiers brasseurs des Black IPA modernes ainsi que des New England IPA, offrant une variété de bières qui était extrèmement rare à cette époque, le « Vermont Pub &amp; Brewery » a des racines provenant de la connaissance du brassage et de la chimie de Greg Noonan, ainsi que son flair pour la créativité.</p>
|
||
<p>Se reposant sur la révolution de la bière mondiale (menée par Michael Jackson), Greg Noonan à exploré des styles de bières qui étaient en dehors des sentiers battus, même pour les brasseurs qui étaient déjà en avance sur leur temps.</p>
|
||
<p>Arrive John Kimmich, qui, en 1994 à déménagé dans le Vermont avec l'objectif de brasser sous la tutelle de Greg Noonan. John à travaillé un temps à Pittsburg (en Pennsylvanie) dans un <em>home brewshop</em> nommé Country Wines. Il a travaillé avec Alexis Hartung et sa grande bibliothèque sur le brassage maison et a eu son premier éclair de génie brassicole en lisant le livre de Greg Noonan « New Brewing Lager Beer ». Un an plus tard, il commence à travailler au « Vermont Pub &amp; Brewery ». En quelques mois, Greg commence à avoir confiance dans les capacités de son nouveau protégé. Avec chaque bière que John travaillait, le mentor était impressionné. Après douze mois, Greg donne la liberté à John d’expérimenter seul sur les recettes.</p>
|
||
<p>En 1997, John part du « Vermont Pub &amp; Brewery » et cofonde avec sa femme Jen un brewpub en 2003, le « Alchemist Pub &amp; Brewery », situé 30mn à l'est de Burlington à Waterbury dans le Vermont. A cette époque, Waterbury était un petit village dormant du New England, n'attirant pas grand monde autre que quelques touristes. Il était par contre assez bien situé, à un croisement des chemins, juste à la sortie d'une autoroute majeure, Waterbury est facilement accessible par à la fois les voyageurs en route pour les endroits touristiques et pour les locaux en allant / revenant du travail ou pour leurs excursions shopping. Grâce à ces quelques éléments, Waterbury s'est donc révélé êre un excellent spot pour Jen et John.</p>
|
||
<p>Une caractéristique unique des bières houblonnées de Kimmich était que lorsque servies fraîches et non filtrées, elles étaient souvent assez troubles. Il trouvait que filtrer ses bières pouvait introduire de l'oxygène non souhaité, enlevant de la bière beaucoup d'aspects intéressants. Il utilisait une souche nommée Conan (VPB1188), une levure que son mentor a développé et que maintenant beaucoup connaissent. Avec les dérivés Anglais, la souche de levure Conan, les bonnes connaissances en brassage de John, ainsi que son habitude à expérimenter avec les houblons, on se retrouve avec une combinaison gagnante pour une révolution du brassage sur la côte est.</p>
|
||
<h1>La phase de croissance</h1>
|
||
<p>En 2007, alors que j'allais au festival des brasseurs du Vermont, la queue pour accéder au stand de The Alchemist était d'au moins 20 minutes pour un verre. Certaines personnes remplissaient leurs verres et retournaient faire la queue pour avoir la chance de goûter une autre de ces bières tant acclamées, en particulier pour Heady Topper. Pour la première fois brassée en 2003, Heady Toper retenait alors l'attention, alors qu'elle n'était réellement qu'une parmi les nombreuses IPA acclamées de chez The Alchemist. Des histoires circulaient comme quoi certaines personnes amenaient leurs pintes aux toilettes pour remplir des bouteilles, les capsuler et les ramener chez eux, puisque le bar ne proposait pas de remplir de Growlers à l'époque, ni ne vendait de bouteilles. Je pensais alors que l'engouement pour ces IPAs avait atteint une sorte de paroxysme. Je n'avais pas encore compris que le feu était seulement en train de se construire.</p>
|
||
<p>J'ai récemment demandé à Shaun Hill, de la brasserie « Hill Farmsted » à Greensborrow Bend dans le Vermont, classée « meilleure brasserie du monde » 3 des 4 dernières années sur RateBeer.com, quel était sa relation avec John Kimmich à l'époque. Shaun brassait à l'époque 30mn plus loin, à Stowe, dans un brewpub appelé « The Shed».</p>
|
||
<p>« En 2005, je ne tarissais pas d'éolges pour les bières de John me faisait le plaisir de critiquer mes bières » me dit Hill, « Cette relation à évoluée avec le temps, plus specialement lorsque j'ai déménagé au Danemark et que cette conversation est devenue une conversation entre pairs, poussant l'autre dans de nouvelles directions.». Avec le decès de Greg Noonan en 2009, l'ancien protégé est devenu le nouveau mentor. Lors d'un échange avec Joel Mahaffey de Foundation brewing Co, à Portland à propos des IPAs influentes pour cette nouvelle révolution, il dit de The Alchemist « Quiconque réponds à cette question et oublie Heady Topper, ils sont à coté de la plaque. Il s'agit de la première IPA trouble, et à laissée une marque sur la communauté brassicole.»</p>
|
||
<p>Ce qui à emergé dans le coin nord-est des états unis est une explosion de nouvelles brasseries produisant des Pale Ale, des IPA et des double IPA basées sur la non filtration, l'explosion de saveurs, et un corps doux, un style que Greg Noonan et John Kimmich ont découvert, et qu'ensuite Shaun Hill à continué à affiner. John et Shaun ont séparemment pointé du doigt le fait qu'ils brassaient juste des bières à leur convenance, et qu'ils appréciaient le produit fini. Le terme « Juicy IPA » s'est retrouvé être un nom pour ces bières, et la texture est souvent aussi importante que le nez et le gout de houblons. Et comme les IPA de la côte Ouest se sont répendues en 2008, les bières troubles, non filtrées, les New England IPA se répendent en 2016.</p>
|
||
<h1>C'est parti !</h1>
|
||
<p>Il est maintenant temps de passer à la brasserie et de regarder comment faire pour brasser une IPA, New England style. Shaun Hill dit « soyez vous mêmeet faites une bière qui goute, sent et ressemble à ce que vous voulez qu'elle soit », JC Tetreault de Trillum à Boston dans le Massachussetts ajoute « la réponse courte… tout est important ! Vous devez vous concentrer sur chaque aspect pour arriver à la bière que vous souhaitez. » L'objectif est d'arriver à une bière douce, un peu ronde, presque tropicale, à la texture ressemblant presque à un jus de fruit, laissant une morsure subtile sur la langue en fin de bouche graçe au houblon.</p>
|
||
<h2>Les malts</h2>
|
||
<p>Tout comme les IPAs de la cote Ouest, les NEIPA sont relativement simples en malts. Le style évite les malts qui ajoutent des saveurs de pain et de crackers. Les malts cristals et autres malts au dessus de 20°L (ndt: 52 EBC) sont d'une manière générale évités. Ces bières peuvent bénéficier de certains ajouts de malts cristal clairs, mais gardez les à l’œil. Des flocons d'avoine, d'orge, de blé et autres peuvent être ajoutés pour contribuer au corps, mais ne pensez pas qu'ils soient une necessité. J'ai pu jouer avec des pourcentages de 15% de flocons dans mes recettes, et les résultats étaient presque excessifs. JC Tetreault dit que « à propos des ajouts de céréales non maltés et de flocons… nous ne les utilisons pas dans toutes nos bières basées sur le houblon. En fait, une proportion plutôt petite de nos bières basées sur le houblon en font usage». Les ajouts de sucre tels que les dextrose, saccharose et sucres crus augmentent la densité du moût pour s'assurer de la sécheresse dans les versions plus alcoolisées. Si vous choisissez d'ajouter du sucre cru, encore une fois, faites en sorte que l'ajout soit modeste; j'ai trouvé que certaines saveurs de mélasses avaient tendance à arriver à partir de 10% du total du grain. L'objectif est de garder les houblons comme caractéristique principale de la bière, tout en ayant une base de malt douce mais présente.</p>
|
||
<h2>Les levures</h2>
|
||
<p>Et c'est ici que les NEIPA dérivent des IPA de la cote Ouest. L'ajout des levures ainsi que le traitement à partir de la fermentation semble être la plus grosse différence entre les deux styles. D'abord, regardons comment ces bières sont fermentées. La plupart des NEIPA ne sont pas clarifiées dans le fermenteur avec des agents clarifiant tels que de la gélatine, du Biofine® ou du Polyclar™, et elles ne sont pas filtrées ou centrifugées plus tard pour clarifier la bière. La pensée derrière ce process est qu'enlever les levures de la bière à également pour effet d'enlever les huiles essentielles ainsi que d'autres nuances subtiles qui permettent à la bière d'avoir son caractère propre. Cela permet de garder un niveau d'huiles assez elevé dans le produit fini. Deuxièmement, les brasseurs de New England fermentent en utilisant une souche de levure d'origine anglaise. Ashton Lewis, l'éditeur technique de Brew Your Own précise « D'après des études ADN, la levure California Ale (White Labs WLP001, Wyeast 1056 et les autres souches de Chico) viendraient plutôt de Cologne, en Allemagne ». Ces souches américaines ont été choisies pour leur capacité à produire des bières claires, transparentes et amères sans ajouter de caractère. Les souches de levure utilisées par les brasseurs de New England IPA sont utilisées pour ajouter des esters, qui aident à produire le profil juteux de ces bières. Les IPAs brassées avec ces souches ne semblent pas être aussi transparentes que les souches Americaines lorsqu'elles sont exposées à des niveaux d'huiles elevés. Ceci vient en désaccord avec la plupart de la littérature sur les souches Anglaises. Si vous lisez la description de la plupart des souches de levures utilisées pour produire ces IPA troubles, la plupart sont considéeées « hautement floculantes », alors que la souche Chico, souvent utilisée pour les IPA de la cote Ouest annonce plutôt une floculation moyenne à faible. Pourquoi alors ces bières ne se clarifient pas lorsqu'elles sont sujettes à des hautes doses de houblon en fin d'ébullition ou en houblonnage à cru ? Cela reste encore une zone floue, j'ai donc demandé à quelques personnes dans l'industrie à propos de ce flou. Certains brasseurs pointent du doigt le fait que ces souches de levures floculent trop rapidement. Cela ne laisse pas le temps aux polyphénols de s'attacher aux levures, laissant ces composés ainsi que d'autres composés dérivés du houblon dans la solution plutôt que des les en enlever. Ashton Lewis nous rappelle aussi que le trouble trouvé dans les hefeweizen est principalement causé par les interactions entre les protéines et les polyphénols, et non pas par les levures.</p>
|
||
<p>Donc, quelles sont les souches de levure que vous devriez utiliser ? Le choix est en fait assez large, pour ceux qui souhaitent brasser ces types de American IPA, referez vous donc aux suggestions données dans les recettes jointes pour quelques idées.</p>
|
||
<h2>L'eau</h2>
|
||
<p>L'eau joue un rôle prépondérant dans le développement des New England IPA. Concentrez vous sur les niveaux de dureté de votre eau. Si vous avez une eau assez douce, alors vous avez un bon point de départ. Si vous avez une eau plutôt dure, obtenez un relevé d'eau (ndt: allez faire un tour sur le site « Eau du bassin Rennais » !). Si vous n'avez pas ces relevés d'eau, vous pouvez aussi faire analyser votre eau par des laboratoires, ou vous pouvez le faire vous même grâce à des kits de test de l'eau. Peu importe ce que vous choisissez, utiliser de l'eau distillée ou osmosée peut vous fournir une bonne base pour construire le profil d'eau que vous souhaitez obtenir. Essayez de garder votre niveau de bicarbonate en dessous de 50 PPM pour votre eau d’empâtage et votre eau de rinçage.</p>
|
||
<p>La prochaine chose sur laquelle se concentrer est vos sulfates et vos chlorures. Ceci est parfois controversé, mais encore une fois peut potentiellement être un facteur différenciant entre les IPA de la côte Est et les IPA de la côte Ouest. Quand j'ai commencé à jouer avec la composition de mon eau, j'ai traité l'eau de mes IPA pour atteindre un rapport 2:1 de sulfates / chlorures, ce qui s'est traduit par 100:50 PPM. J'ai produit plusieurs bières qui pouvaient rivaliser (selon moi) avec certaines que mes idoles produisaient. Mais, dans l'esprit du brassage amateur, j'ai continué à expérimenter. J'ai changé l'équilibre de sulfate / chlorures à 200:50PPM sans que je perçoive un changement. J'ai ensuite essayé 100:100 et trouvé que ça me plaisait un peu plus. Mes trouvailles ne sont pas la seule preuve anecdotique que booster le niveau de chlorures peut bénéficier à ce style de bières. Si vous cherchez à ajuster vos sulfates et for chlorures pour votre eau d'empâtage et de rincage, je vous encourage à jeter un oeil à l'article de Scott Janish du 7 Mars 2016 intitulé « Mouthfeel softness ». Scott y parle des effets négatifs d'un taux de sulfates elevé et des aspects positifs d'un niveau de chlorures elevé.</p>
|
||
<h2>Les houblons</h2>
|
||
<p>Généralement, l'amertume des houblons dans ce type d'IPA joue un rôle support, qui vient équilibrer le corps et la douceur des malts. Premièrement, gardez l'ajout de houblons amérisants modéré à faible. Vous pouvez expérimenter avec l'ajout de houblons amérisants mais je n'ai jamais eu l'occasion de trouver qu'une utilisation importante de houblons amérisants menait à une meilleure New-England IPA. Utilisez des houblons hauts en alpha tels que Magnum, Warrior™ ou Bravo si vous choisissez d'utiliser des houblons en cône ou en pellets, et je recommande de garder les ajouts d'amérisants assez faibles. D'habitude, j'essaye houblonner pour un rapport de 1:3 BU:GU (amertume sur densité). Cela signifie que quand je vise une densité cible de 1.066, l'ajout de houblons à 60mn est de 22 IBUs. Cela est fait pour éviter d'ajouter une dureté qui peut provenir d'une ébullition d'une quantité plus elevée de houblons. L'autre option est d'utiliser des extraits de houblon, qui peuvent contribuer les acides alpha nécessaires pour obtenir la bonne amertume, sans ajouter de polyphénols, que certains brasseurs pensent être à l'origine d'une certaine dureté.</p>
|
||
<p>Les ajouts de houblons en fin d'ébullition jouent un rôle beaucoup plus important pour la production de New-England IPA. Des apports copieux à la fin de l'ébullition ou au <em>flame-out</em> sont utiles pour tout type d'IPA hautement aromatique. Cela ajoutera des IBUs pour compléter votre apport en houblons amérisants et commencera à créer votre profil d'huiles. Je trouve que des variétés plus mordantes / piquantes comme le Simcoe®, Columbus, Chinook et Apollo fonctionnent bien à cette étape. Chaque brasseur semble trouver sa technique ici, qu'il s'agisse de faire plusieurs ajouts à 20mn ou moins puis de baisser à une température précise pour faire un <em>hop stand</em>, ou bien de simplement ajouter tous les houblons au <em>flame-out</em> et de les laisser durant 20 minutes ou plus. Il ne semble pas qu'il y ait de mauvaise manière de faire, juste plusieurs manières d'extraire les huiles essentielles des houblons à une température pas trop haute.</p>
|
||
<p>Le houblonnage à cru est votre prochain objectif. J'aimerais me concentrer sur les techniques plutôt que sur les quantités ou variétés puisque la technique semble être le plus important ici. Ceci dit, une chose est sure, ne soyez pas trop timide avec les ajouts durant le houblonnage à cru. 7.5g/L est certainement un bon point de départ. Vous pouvez ajuster en fonction de vos résultats. Les brasseurs Scott Janish et Michael Tonsmeir ajoutent que mettre ces bières en fûts à quelques avantages. Houblonner dans le fût, purger au CO2 et le fait de ne pas avoir de période prolongée de carbonatation sont déjà deux des avantages des fûts sur les bouteilles.</p>
|
||
<p>Alors, quand est le meilleur moment pour faire son houblonnage à cru ? Biern que ce ne soit pas une necessité, le fait de faire son houblonnage à cru en deux fois semble être un bon choix pour ce genre d'IPA. Prenez ce que vous pensiez ajouter lors du houblonnage à cru et séparez le en deux. Le premier ajout se fera durant la phase active de fermentation alors que le second se fera quand la fermentation se sera calmée et que les levures auront flocculées. Le premier ajout peut se faire à différents stades de la fermentation primaire; certains brasseurs les ajoutent au même moment qu'ils ensemencent, certains autres lorsque le krausen est haut, alors que la plupart l'ajoutent vers la fin de la fermentation. Je préfère faire le premier ajout une fois que le krausen est redescendu. Les hétérosides et les bio-transformations sont des éléments importants dans cette discussion à propos de comment la levure intéragit avec les huiles des houblons et les autres dérivés du houblon. Je trouve que les houblons ajoutés à la fin de l'ébullition vont apporter des caractéristiques similaires que les huiles de houblons ajoutés durant le ébut de la fermentation. Pour ce qui est du second ajout, l'objectif est d'attendre que la fermentation se soit calmée. Le timing n'est pas vraiment un facteur important ici, mais l'introduction d'oxygène est un point crutial. Prenez bien soin d'introduire le moins possible d'oxygène dans la bière à ce moment çi.</p>
|
||
<p>Dernièrement, quelque chose qui est nouveau pour moi: le houblonnage à cru sous pression. Cela vous demandera de l'équipement supplémentaire, principalement quelque chose apellée une « Spunding Valve». Il s'agit d'une valve qui permet de garder une certaine pression dans le fermenteur. Si la pression dépasse la valeur cible, alors la valve s'ouvre pour faire redescendre le fermenteur à la valeur souhaité. Mais, en quoi cela pourrait-être interéssant pour nous ? Parce que nous cherchons à garder un maximum de houblons aromatiques, en évitant d'en perdre. Les brasseurs amateurs ainsi que les brasseurs pros se sont penchés sur la question des spuinding valve de plus en plus dernièrement pour la fermentation primaire et pour le houblonnage à cru.</p>
|
||
<p>La révolution de la côte Est bat son plein et si vous ne pouvez pas venir sur place pour goûter un extrait, vous pouvez maintenant au moins commencer à brasser des bières avec un caractère similaire. Et si vous n'êtes pas un fan de ce type de bière, faites bien attention à laisser ceux qui apprécient déguster en paix.</p>
|
||
<p>Remerciements spéciaux à tous les brasseurs qui ont contribué à la production de cet article: John Kimmich de The Alchemist, Shaun Hill de Hill Farmstead, Joel Mahaffrey de Foundation Brewing, Matt Nadeau de Rock Art Brewery et JC Tetrealt de Trillium. Allez leur rendre visite !</p></content><category term="biere"></category></entry><entry><title>Brasserie du Vieux Singe — Installation en cours.</title><link href="https://blog.notmyidea.org/brasserie-du-vieux-singe-installation-en-cours.html" rel="alternate"></link><published>2017-06-26T00:00:00+02:00</published><updated>2017-06-26T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2017-06-26:/brasserie-du-vieux-singe-installation-en-cours.html</id><summary type="html"><p>Ça fait maintenant quelques mois que j'ai décidé de <a href="https://www.vieuxsinge.com">changer de métier</a>. Choix à la fois difficile et excitant. Une rupture qui laisse place à quelques étoiles dans les yeux. Enfin, je retrouve l'envie de créer, et je renoue avec mes rêves, ceux-la mêmes que je croyaient trop fous pour …</p></summary><content type="html"><p>Ça fait maintenant quelques mois que j'ai décidé de <a href="https://www.vieuxsinge.com">changer de métier</a>. Choix à la fois difficile et excitant. Une rupture qui laisse place à quelques étoiles dans les yeux. Enfin, je retrouve l'envie de créer, et je renoue avec mes rêves, ceux-la mêmes que je croyaient trop fous pour être à portée de main.</p>
|
||
<p>La chose la plus frappante, c'est la vitesse à laquelle passent les journées: j'ai <em>vraiment</em> l'impression d'avoir quitté Mozilla hier. Si les collègues me
|
||
manquent, je ne ferais machine arrière pour rien au monde: je trouve finalement ce sens qui me manquait cruellement.</p>
|
||
<p>Après quelques hésitations au départ, j'ai décidé de mettre de côté mes activités liées à l'informatique: difficile à assumer quand on croise les copin.e.s avec qui on avait l'habitude de discuter énormement de ces sujets, mais ça permet de laisser plus de place pour l'humain. Plus de place pour les «Au fait, comment ça va toi ?» quand j'ai l'occasion de les recroiser, ce qui n'est pas plus désagréable :)</p>
|
||
<p>Les journées sont donc organisées autour de la brasserie: beaucoup plus de planification que ce que j'imaginais au départ. Peut-être que c'est aussi du au fait que nous soyons tous les deux des ex-informaticiens un peu perfectionnistes sur les bords. On se voit très souvent pour avancer sur des sujets de fond tout comme sur du pratico-pratique. Pour vous donner un ordre d'idée des questionnements: Quelle taille d'entreprise ? Quelles valeurs communes ? Quelles bières ? Quelle image donner ? Quelle place donner au confort ? Comment éviter la compétitivité ? Comment réussir à impacter les producteurs (houblon / malt) de manière positive ? Quels salaires se donner ?</p>
|
||
<p>Un peu de production quand même (pour les amis) mais on se garde la grosse partie pour le lancement.</p>
|
||
<h2>Apprentissage</h2>
|
||
<p>Je profite de ces quelques mois pour apprendre: autour de la fabrication et de la dégustation de bière bien sûr (encore un milieu en constante évolution !), mais pas que. J'ai maintenant quelques bases de gestion d'entreprise, en comptabilité, en biologie et en chimie. J'ai bien dit quelques <em>bases</em>, mais qu'est-ce que c'est agréable !</p>
|
||
<p>C'est assez agréable de se remettre dans une posture d'apprenant, et d'avoir le temps pour cet apprentissage.</p>
|
||
<h2>Questionner la posture de «Chef d'entreprise» et son rapport au temps</h2>
|
||
<p>Décider de créer sa boîte, c'est aussi se poser la question de comment organiser son temps: combien de temps travailler ? Quel temps donner aux loisirs ?</p>
|
||
<p>Je trouve rassurant de voir ces interrogations abordées avant-même le démarrage de l'entreprise. La plupart des personnes qui nous suivent et nous guident partent du postulat qu'il faudra bosser énormement, là ou nous essayons de trouver un modèle qui soit viable dans le temps, notre souhait est de bosser à 80% (4 jours par semaine).</p>
|
||
<p>Certes, il faut travailler pour que ça tourne, mais il faut aussi s'accorder des temps de respiration pour être d'autant plus efficace quand on bosse. C'est d'autant plus intéressant de prévoir ces aspects lors de la phase de <em>design</em> de l'activité: on organise le temps autrement ! Ceux qui me lisent de temps à autre savent que c'est une constante de mes réflexions, on verra si ça fonctionne dans les faits.</p>
|
||
<h2>Les projets collectifs</h2>
|
||
<p>Un autre point important est la place que le <em>collectif</em> prends dans cette nouvelle expérience. Au départ, quand j'imaginais le projet sur le court-terme, je mettais la composante collective au second plan dans l'immédiat (au delà des intéractions avec Fred, mon associé). L'occasion de travailler à la construction d'un espace collectif s'est présentée, et on y travaille actuellement.</p>
|
||
<p>C'est à la fois riche (en partage de points de vue, en entre-aide) et à la fois difficile (beaucoup d'heures de réunions, il faut apprendre à communiquer de manière efficace, il faut parfois faire face à des conflits). Dans l'ensemble, je ne regrette pas ce choix même si il est important de ne pas perdre de vue les objectifs de la brasserie dans l'histoire.</p>
|
||
<p>Et puis la collaboration ne s'arrête pas qu'au collectif d'activité: le milieu brassicole est en mutation, et les valeurs de partage font bel et bien partie du lot de changements. Les rencontre avec les brasseurs du coin de Rennes le montrent bien: l'esprit est plus à l'entraide qu'à la concurrence, au vu de la demande qui est toujours croissante. Tant mieux, on a autre chose à faire qu'à se tirer dans les pâtes ;)</p>
|
||
<h2>Besoin de concret</h2>
|
||
<p>Après cette phase assez énorme de réfléxion, de questionnement, de tricotage, de détricotage, de retricotage, j'ai bien envie de passer à l'action; et ça tombe bien, c'est ce qui est à l'horizon. L'idée est d'ouvrir la brasserie à la fin de cette année pour commencer la commercialisation en Janvier 2018. Ça fait un peu peur de voir l'échéance arriver, mais c'est aussi excitant que vertigineux…</p>
|
||
<p>Faire ensemble. Imaginer les choses en petit un peu partout. Collaborer plutôt que se tirer dans les pattes. Renverser la vapeur. Trouver des alliés. Faire levier. Inscrire ses projets dans le temps. C'est peut-être un peu ça, grandir ?</p></content><category term="thoughts"></category></entry><entry><title>Comment est-ce que vous générez vos formulaires ?</title><link href="https://blog.notmyidea.org/comment-est-ce-que-vous-generez-vos-formulaires.html" rel="alternate"></link><published>2016-05-31T00:00:00+02:00</published><updated>2016-05-31T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-05-31:/comment-est-ce-que-vous-generez-vos-formulaires.html</id><summary type="html"><p>TL; DR: Je viens à peine de <em>releaser</em> la première version d'un service de génération de formulaires.
|
||
Allez jeter un coup d'œil sur <a href="https://www.fourmilieres.net">https://www.fourmilieres.net</a></p>
|
||
<p><em>En février 2012, je parlais ici <a href="https://blog.notmyidea.org/carto-forms.html">d'un service de génération de formulaires</a>.
|
||
Depuis, pas mal d'eau à coulé sous les ponts, on est …</em></p></summary><content type="html"><p>TL; DR: Je viens à peine de <em>releaser</em> la première version d'un service de génération de formulaires.
|
||
Allez jeter un coup d'œil sur <a href="https://www.fourmilieres.net">https://www.fourmilieres.net</a></p>
|
||
<p><em>En février 2012, je parlais ici <a href="https://blog.notmyidea.org/carto-forms.html">d'un service de génération de formulaires</a>.
|
||
Depuis, pas mal d'eau à coulé sous les ponts, on est passé par pas mal d'étapes pour
|
||
finalement arriver à une première version de ce service de génération de
|
||
formulaires (à la </em>google forms<em>).</em></p>
|
||
<p>En tant qu'organisateurs d'évènements (petits et gros), je me retrouve souvent
|
||
dans une situation ou je dois créer des formulaires pour recueillir des
|
||
informations. Actuellement, la meilleure solution disponible est <em>Google Forms</em>,
|
||
mais celle ci à plusieurs problèmes, à commencer par le fait que le code n'est
|
||
pas libre et que les données sont stockées chez Google.</p>
|
||
<p>La plupart du temps, le besoin est assez simple: je veux spécifier quelques
|
||
questions, et donner un lien à mes amis pour qu'ils puissent y répondre.
|
||
Je reviens ensuite plus tard pour voir la liste des réponses apportées.</p>
|
||
<p><img alt="Capture de l'interface de création du formulaire" src="{filename}/static/formbuilder-build.png"></p>
|
||
<h2>Fonctionnalités</h2>
|
||
<p>Il existe pas mal de solutions techniques qui essayent de répondre à la même
|
||
problématique, mais la plupart d'entre elles sont assez souvent compliquées,
|
||
nécessitent de se créer un compte, et/ou ne vous laisse pas la main libre sur
|
||
les données générées, voire le code est assez difficile à faire évoluer ou à
|
||
déployer.</p>
|
||
<p>Je voulais donc quelque chose de simple à utiliser <em>et</em> pour les créateurs de
|
||
formulaires <em>et</em> pour les utilisateurs finaux. Pas de chichis, juste quelques
|
||
vues, et des URLs à sauvegarder une fois l'opération terminée.</p>
|
||
<p><img alt="Capture de l'écran avec les URLs générées" src="{filename}/static/formbuilder-created.png">
|
||
<img alt="Capture d'écran d'un exemple de formulaire" src="{filename}/static/formbuilder-form.png"></p>
|
||
<h3>Pas de compte</h3>
|
||
<p>Vous n'avez pas besoin d'avoir un compte sur le site pour commencer à l'utiliser.
|
||
Vous créez simplement un nouveau formulaire puis envoyez le lien à vos amis pour
|
||
qu'eux puissent à leur tour le remplir.</p>
|
||
<p><img alt="Capture de la page d'accueil, ou aucun compte n'est requis" src="{filename}/static/formbuilder-welcome.png"></p>
|
||
<h3>Gardez la main sur vos données</h3>
|
||
<p>Une fois que vous avez récupéré les réponses à vos questions, vous pouvez
|
||
récupérer les données sur votre machines dans un fichier <code>.csv</code>.</p>
|
||
<p><img alt="Capture de la page de resultats, il est possible de télécharger en CSV." src="{filename}/static/formbuilder-results.png"></p>
|
||
<h3>API</h3>
|
||
<p>L'ensemble des données sont en fait stockées dans <a href="https://kinto.readthedocs.org">Kinto</a>
|
||
qui est interrogeable très facilement en HTTP. Ce qui fait qu'il est très facile de
|
||
réutiliser les formulaires que vous avez construits (ou leurs réponses) depuis
|
||
d'autres outils.</p>
|
||
<h3>Auto-hébergeable</h3>
|
||
<p>Un des objectifs de ce projet est de vous redonner la main sur vos données.
|
||
Bien sur, vous pouvez utiliser l'instance qui est mise à votre disposition sur
|
||
<a href="https://www.fourmilieres.net">wwww.fourmilieres.net</a>, mais vous pouvez
|
||
également l'héberger vous même très
|
||
simplement, et vous êtes d'ailleurs fortement encouragés à le faire ! Notre
|
||
objectif n'est pas de stocker l'ensemble des formulaires du monde, mais de
|
||
(re)donner le contrôle aux utilisateurs !</p>
|
||
<h2>On commence petit…</h2>
|
||
<p>Cette <em>release</em> n'est (bien sur) pas parfaite, et il reste encore pas mal de
|
||
travail sur cet outil, mais je pense qu'il s'agit d'une base de travail
|
||
intéressante pour un futur où Google n'a pas la main sur toutes nos données.</p>
|
||
<p>La liste des champs supportés est pour l'instant assez faible (Texte court,
|
||
Texte long, Oui/Non, choix dans une liste) mais elle à vocation à s'étendre, en
|
||
fonction des besoins de chacun.</p>
|
||
<p>J'ai d'ailleurs créé <a href="https://www.fourmilieres.net/#/form/cfd878264cec4ed2">un formulaire pour que vous puissiez me faire part de vos
|
||
retours</a>, n'hésitez pas !</p>
|
||
<h2>Et, euh, comment ça marche ?</h2>
|
||
<p>Le <em>formbuilder</em>, comme j'aime l'appeler se compose en fin de compte de deux
|
||
parties distinctes:</p>
|
||
<ul>
|
||
<li><a href="https://kinto.readthedocs.org">Kinto</a>, un service qui stocke
|
||
des données coté serveur et qui les expose via des <strong>APIs HTTP</strong></li>
|
||
<li><a href="https://github.com/kinto/formbuilder">Le formbuilder</a>, une application
|
||
JavaScript qui ne tourne que coté client (dans votre navigateur) qui permet
|
||
de construire les formulaires et d'envoyer les données sur les <em>APIs</em> coté
|
||
serveur.</li>
|
||
</ul>
|
||
<p>Au niveau de la <em>stack</em> technique, le <strong>formbuilder</strong> est codé en ReactJS. Un
|
||
des points techniques intéressants du projet est qu'il génère en fin de compte du
|
||
<a href="http://jsonschema.net/">JSON Schema</a>, un format de validation de données <em>JSON</em>.</p>
|
||
<p>Donc, reprenons! Vous arrivez sur la page d'accueil puis cliquez sur
|
||
"Create a new form", puis vous vous retrouvez face à une interface ou vous pouvez
|
||
ajouter des champs de formulaire. Une fois ce travail effectué, vous appuyez sur
|
||
"Create the form".</p>
|
||
<ul>
|
||
<li>Le JSON Schema est alors envoyé au serveur Kinto, qui l'utilisera pour valider
|
||
les données qu'il recevra par la suite.</li>
|
||
<li>Ce JSON Schema sera aussi utilisé lors de l'affichage du formulaire aux
|
||
personnes qui le remplissent.</li>
|
||
<li>Un jeton d'accès est généré et ajouté à l'URL, il s'agit de l'identifiant du
|
||
formulaire.</li>
|
||
<li>Un second jeton d'accès administrateur et généré, il vous faut le garder de
|
||
coté pour avoir accès aux réponses.</li>
|
||
</ul>
|
||
<p>Bref, en espérant que ça vous serve ! Un petit pas dans la direction des données
|
||
rendues à leurs utilisateurs !</p></content><category term="tech"></category></entry><entry><title>Cloisonnement des activités ?</title><link href="https://blog.notmyidea.org/cloisonnement-des-activites.html" rel="alternate"></link><published>2016-05-25T00:00:00+02:00</published><updated>2016-05-25T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-05-25:/cloisonnement-des-activites.html</id><summary type="html"><p>Je vous écris depuis un train, en rentrant de Bordeaux où j'ai passé quelques
|
||
jours à l'occasion de <a href="http://sudweb.fr/">SudWeb</a>. Si vous ne connaissez pas
|
||
cette conférence, il s'agit d'un moment avec des gens chouettes qui se posent
|
||
des questions sur leur metier, comment le vivre et comment continuer à en …</p></summary><content type="html"><p>Je vous écris depuis un train, en rentrant de Bordeaux où j'ai passé quelques
|
||
jours à l'occasion de <a href="http://sudweb.fr/">SudWeb</a>. Si vous ne connaissez pas
|
||
cette conférence, il s'agit d'un moment avec des gens chouettes qui se posent
|
||
des questions sur leur metier, comment le vivre et comment continuer à en faire
|
||
un plaisir. Oh, et des fois on parle un peu de technique aussi.</p>
|
||
<h1>Alors, brasserie ou code ?</h1>
|
||
<p>Ces quelques jours ont été fort inspirants. Alors que je suis en train de
|
||
changer de métier (vers celui de brasseur) c'était un moyen de me rendre compte
|
||
que bien que je ne souhaite plus faire du Web mon métier <em>la, tout de suite,
|
||
maintenant</em>, je reste un passionné par la chose.</p>
|
||
<p>En partant de Rennes, je ne savais pas trop quoi penser de cette situation.
|
||
Prendre un week-end pour échanger avec les gens sur quelque chose dont je
|
||
m'éloigne ? C'est pas une perte de temps ?</p>
|
||
<p>Si je passe du temps à écrire des bouts de code, des logiciels, à reflechir
|
||
à comment solutionner certains problemes, ce n'est pas parce que je suis payé
|
||
pour le faire, mais bel et bien parce que je me sens bien lorsque je le fais,
|
||
parce que j'y trouve un équilibre et une utilité.</p>
|
||
<p>Alors que je ne trouvais plus cet équilibre dans mon travail, j'ai choisi d'en
|
||
changer, mais il n'empèche que je continue à avoir des rèves d'un
|
||
monde meilleur, dans lequel l'informatique a sa place. Juste à voir les
|
||
discussions (ux, sécurité informatique, décentralisation, architecture
|
||
logicielle) que j'ai pu avoir ce weekend, il n'y a pas l'ombre d'un doute !</p>
|
||
<p>Jusqu'ici je me suis dit que je devais choisir. J'ai pensé naivement
|
||
que je ne pouvais pas être <em>et</em> un brasseur <em>et</em> un developpeur, mais la
|
||
réalité c'est que c'est exactement ce que je suis: les deux.</p>
|
||
<p>Je ne suis pas pour autant dupe sur le temps necessaire à lancer une activité
|
||
brassicole, il va falloir fournir de l'énergie et avancer sur le projet, mais
|
||
il n'empèche que même si je décide de faire de la bière mon metier, mes
|
||
passions pour le reste sont bien vivantes.</p>
|
||
<p>Bref, merci sudweb pour m'avoir accompagné dans ces reflexions, à l'année
|
||
prochaine, je ramène des futs ?</p></content><category term="thoughts"></category></entry><entry><title>Avez vous confiance en SSL?</title><link href="https://blog.notmyidea.org/avez-vous-confiance-en-ssl.html" rel="alternate"></link><published>2016-03-25T00:00:00+01:00</published><updated>2016-03-25T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-03-25:/avez-vous-confiance-en-ssl.html</id><summary type="html"><p>Dans le cadre <a href="http://autodefense-numerique.readthedocs.org/en/latest/">des ateliers d'autodéfense numérique</a>,
|
||
j'ai passé un peu de temps à creuser sur l'utilisation de SSL puisque
|
||
contrairement à ce que la plupart des personnes ont encore tendance à croire,
|
||
le petit cadenas (qui prouve qu'une connexion SSL est en cours) n'est
|
||
<strong>absolument</strong> pas suffisant.</p>
|
||
<p>Allez hop …</p></summary><content type="html"><p>Dans le cadre <a href="http://autodefense-numerique.readthedocs.org/en/latest/">des ateliers d'autodéfense numérique</a>,
|
||
j'ai passé un peu de temps à creuser sur l'utilisation de SSL puisque
|
||
contrairement à ce que la plupart des personnes ont encore tendance à croire,
|
||
le petit cadenas (qui prouve qu'une connexion SSL est en cours) n'est
|
||
<strong>absolument</strong> pas suffisant.</p>
|
||
<p>Allez hop, c'est parti pour:</p>
|
||
<ul>
|
||
<li>un tour d'horizon du fonctionnement de SSl</li>
|
||
<li>quelques moyens contourner cette "protection" en faisant une attaque en pratique</li>
|
||
<li>un tour des solutions existantes actuellement et de pourquoi je ne les trouve
|
||
pas vraiment satisfaisantes.</li>
|
||
</ul>
|
||
<h2>Comment fonctionne SSL?</h2>
|
||
<p>Pour expliquer les problèmes de SSL, j'ai d'abord besoin d'expliquer comment
|
||
tout ça fonctionne.</p>
|
||
<p>SSL repose sur l'utilisation de certificats, qui sont générés par des autorités
|
||
de certification (<em>Certificate Authority</em> que je nomme <em>CA</em> dans la suite de
|
||
l'article).</p>
|
||
<p>Les certificats SSL permettent deux choses:</p>
|
||
<ul>
|
||
<li>De garantir que les communications entre les navigateurs (vous) et les sites
|
||
Web ne sont connues que du détenteur du certificat du site et de vous même.</li>
|
||
<li>De garantir que le site sur lequel vous vous connectez est bien celui que
|
||
vous imaginez.</li>
|
||
</ul>
|
||
<p>Le navigateur, lors d'une visite d'un site, va télécharger le certificat
|
||
associé puis vérifier que le certificat en question a bien été généré par un
|
||
des <em>CA</em> en qui il a confiance.</p>
|
||
<p>Imaginons maintenant qu'une des <em>CA</em> essaye de savoir ce qui s'échange entre
|
||
mon navigateur et le site de ma banque (protégé par SSL). Comment cela se
|
||
passerait il ?</p>
|
||
<p>N'importe quel <em>CA</em> peut donc générer des certificats pour n'importe quel site,
|
||
et le navigateur vérifierait, lui, que le certificat a bien été généré par une
|
||
<em>CA</em>.</p>
|
||
<p>Tout cela ne poserait pas de soucis si les <em>CA</em> étaient gérés de manière fiable,
|
||
mais il s'agit d'un travail compliqué, et certains <em>CA</em> ont par le passé montré
|
||
des faiblesses.</p>
|
||
<p>Par exemple, <a href="https://en.wikipedia.org/wiki/DigiNotar">DigiNotar</a> (un <em>CA</em> des Pays-Bas)
|
||
a été compromise et les attaquant.e.s ont pu générer des certificats SSL
|
||
frauduleux, ce qui leur a permis d'attaquer des sites tels que Facebook ou GMail.</p>
|
||
<p>Vous pouvez retrouver une liste des risques et menaces autour des <em>CA</em> <a href="http://wiki.cacert.org/Risk/History">sur le
|
||
wiki de CACert</a>.</p>
|
||
<h2>Attaque de l'homme du milieu avec SSL</h2>
|
||
<p>A force de dire que c'était très facile à faire, j'ai eu envie d'essayer
|
||
d'espionner des connections protégées par SSL, et effectivement c'est
|
||
carrément flippant tellement c'est simple.</p>
|
||
<p>En l'espace de quelques minutes, il est possible de faire une <em>attaque de
|
||
l'homme du milieu</em> en utilisant par exemple un outil nommé <a href="http://docs.mitmproxy.org/en/stable">mitm-proxy</a>.</p>
|
||
<p>Pour déchiffrer l'ensemble du trafic SSL, j'ai simplement eu à lancer quelques
|
||
commandes et avoir un <em>CA</em> dans lequel le navigateur de la victime a confiance.
|
||
Je l'ai ajouté dans le navigateur cible pour simuler que je l'avais déjà
|
||
(c'est le cas si un des 1200 CA se fait pirater, ce qui me semble une surface
|
||
d'attaque assez large).</p>
|
||
<p>Je les colle ici si ça vous intéresse:</p>
|
||
<div class="highlight"><pre><span></span>$ sudo aptitude install mitmproxy
|
||
$ mitm-proxy -T --host
|
||
</pre></div>
|
||
|
||
|
||
<p>Il faut faire croire à votre victime que vous êtes la passerelle vers
|
||
l'extérieur et à la passerelle que vous êtes la victime:</p>
|
||
<div class="highlight"><pre><span></span>arpspoof -i wlan0 -t victime gateway
|
||
arpspoof -i wlan0 -t gateway victime
|
||
</pre></div>
|
||
|
||
|
||
<p>Puis dire à notre fausse passerelle de rediriger le trafic des ports 80 et 443
|
||
vers notre proxy:</p>
|
||
<div class="highlight"><pre><span></span>sudo sysctl -w net.ipv4.ip_forward<span class="o">=</span><span class="m">1</span>
|
||
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport <span class="m">443</span> -j REDIRECT --to-port <span class="m">4443</span>
|
||
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport <span class="m">80</span> -j REDIRECT --to-port <span class="m">4443</span>
|
||
</pre></div>
|
||
|
||
|
||
<p>Et paf, <strong>on voit tout ce qui passe entre la machine et le serveur SSL</strong>. On peut
|
||
d'ailleurs même imaginer faire tourner ces quelques commandes sur un
|
||
raspberry pi, pour aller encore plus vite…</p>
|
||
<h3>Key-pinning dans les navigateurs</h3>
|
||
<p>Actuellement, n'importe quel <em>CA</em> peut générer des certificats pour
|
||
n'importe quel site, et c'est en grande partie ce qui pose souci. Une des
|
||
manières de faire évoluer la situation est d'épingler les certificats de
|
||
certains sites directement dans les navigateurs.</p>
|
||
<p>Cette approche a le mérite de fonctionner très bien <a href="https://dxr.mozilla.org/mozilla-central/source/security/manager/ssl/StaticHPKPins.h?from=StaticHPKPins.h">pour un petit nombre de
|
||
sites critiques (Google, Facebook, etc)</a>.</p>
|
||
<h3>HTTP Public Key Pinning (HPKP)</h3>
|
||
<p><a href="https://developer.mozilla.org/en/docs/Web/Security/Public_Key_Pinning"><em>HTTP Public Key Pinning</em></a>
|
||
est également une solution de <em>pinning</em> qui permet d'établir une confiance lors
|
||
de la première connexion avec le site. C'est ce qu'on appelle du <em>Trust on First
|
||
Use</em> ou <em>TOFU</em>.</p>
|
||
<p>Le navigateur va alors mettre ces informations dans un cache et vérifiera que
|
||
les certificats correspondent bien lors des prochaines visites.</p>
|
||
<p><em>HPKP</em> est disponible dans Firefox depuis Janvier 2015 et dans Chrome
|
||
depuis Octobre 2015.</p>
|
||
<h3>Certificate transparency: des journaux auditables</h3>
|
||
<p>Une autre approche est celle proposée par <em>certificate transparency</em>:</p>
|
||
<blockquote>
|
||
<p>Certificate Transparency aims to remedy these certificate-based threats by
|
||
making the issuance and existence of SSL certificates open to scrutiny by
|
||
domain owners, CAs, and domain users.</p>
|
||
<p>-- <a href="https://www.certificate-transparency.org/what-is-ct">Certificate Transparency</a></p>
|
||
</blockquote>
|
||
<p>Autrement dit, avec ce système les <em>CA</em> doivent rendre public le fait qu'ils
|
||
aient signé de nouveaux certificats intermédiaires. La signature est ajoutée à
|
||
un journal sur lequel il n'est possible que d'écrire.</p>
|
||
<p>Les navigateurs vont alors vérifier que les certificats utilisés sont bien des
|
||
certificats qui ont été ajoutés au journal.</p>
|
||
<p>Ici, toute l'intelligence est dans la vérification de ces journaux, qui
|
||
permettent donc de valider/invalider des certificats racines ou intermédiaires.</p>
|
||
<p>Il me semble donc qu'il serait possible d'ajouter un certificat frauduleux le
|
||
temps d'une attaque (et celui ci serait détecté et supprimé ensuite).</p>
|
||
<p><em>Certificate-Transparency</em> n'est donc pas une solution contre une écoute
|
||
globale mise en place par les gouvernements par exemple.</p>
|
||
<p>Si vous lisez bien l'anglais, je vous invite à aller lire
|
||
<a href="http://security.stackexchange.com/a/52838">cette description du problème et de la solution</a>
|
||
que je trouve très bien écrite.</p>
|
||
<h3>DANE + DNSSEC</h3>
|
||
<blockquote>
|
||
<p>The DANE working group has developed a framework for securely
|
||
retrieving keying information from the DNS [RFC6698]. This
|
||
framework allows secure storing and looking up server public key
|
||
information in the DNS. This provides a binding between a domain
|
||
name providing a particular service and the key that can be used
|
||
to establish encrypted connection to that service.</p>
|
||
<p>-- <a href="https://datatracker.ietf.org/wg/dane/charter/">Dane WG</a></p>
|
||
</blockquote>
|
||
<p>Une autre solution est appelée "DANE" et repose par dessus le protocole
|
||
<em>DNSSEC</em>.</p>
|
||
<p>Je connais assez mal <em>DNSSEC</em> donc j'ai passé un peu de temps à lire des
|
||
documents. L'impression finale que ça me laisse est que le problème est
|
||
exactement le même que pour SSL: un certain nombre de personnes détiennent les
|
||
clés et toute la sécurité repose sur cette confiance. Or il est possible que
|
||
ces clés soient détenues par des personnes non dignes de confiance.</p>
|
||
<blockquote>
|
||
<p>Secure DNS (DNSSEC) uses cryptographic digital signatures signed with a
|
||
trusted public key certificate to determine the authenticity of data.
|
||
-- https://en.wikipedia.org/wiki/DNS_spoofing</p>
|
||
</blockquote>
|
||
<p>Et aussi:</p>
|
||
<blockquote>
|
||
<p>It is widely believed[1] that securing the DNS is critically important for
|
||
securing the Internet as a whole, but deployment of DNSSEC specifically has
|
||
been hampered (As of 22 January 2010) by several difficulties:</p>
|
||
<ul>
|
||
<li>The need to design a backward-compatible standard that can scale to the
|
||
size of the Internet</li>
|
||
<li>Prevention of "zone enumeration" (see below) where desired</li>
|
||
<li>Deployment of DNSSEC implementations across a wide variety of DNS servers
|
||
and resolvers (clients)</li>
|
||
<li>Disagreement among implementers over who should own the top-level domain
|
||
root keys Overcoming the perceived complexity of DNSSEC and DNSSEC
|
||
deployment</li>
|
||
</ul>
|
||
</blockquote>
|
||
<h2>Solutions basées sur la blockchain</h2>
|
||
<p>Une dernière piste semble être l'utilisation de la <em>blockchain</em> pour distribuer
|
||
des clés par site.</p>
|
||
<p>La solution <em>DNSChain</em> me paraissait tout d'abord un bon point de départ mais
|
||
la lecture de <a href="https://www.indolering.com/okturtles-dnschain-unblock-us">quelques critiques</a>
|
||
et interventions du développeur du projet m'ont fait changer d'avis.</p>
|
||
<p>Reste encore la piste de <em>Namecoin Control</em> que je n'ai pas encore creusée.
|
||
Peut-être pour un prochain billet. Toute piste de réflexion est bien sur la
|
||
bienvenue sur ces sujets!</p></content><category term="crypto"></category></entry><entry><title>Focusing on what matters</title><link href="https://blog.notmyidea.org/focusing-on-what-matters.html" rel="alternate"></link><published>2016-03-17T00:00:00+01:00</published><updated>2016-03-17T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-03-17:/focusing-on-what-matters.html</id><summary type="html"><p>I do have a problem with information.</p>
|
||
<p>You know. I <strong>have</strong> to check my emails, irc, twitter, my feed reader
|
||
etc. I need to.</p>
|
||
<p>And this thing makes me feel uncomfortable at the end of the day,
|
||
because I feel that I missed something. That I missed some good time …</p></summary><content type="html"><p>I do have a problem with information.</p>
|
||
<p>You know. I <strong>have</strong> to check my emails, irc, twitter, my feed reader
|
||
etc. I need to.</p>
|
||
<p>And this thing makes me feel uncomfortable at the end of the day,
|
||
because I feel that I missed something. That I missed some good time,
|
||
away from news and agitation.</p>
|
||
<p>Working remotely is sometimes hard. Hard because you need to at the same
|
||
time be in the discussions channels and work on the interesting
|
||
projects. A real myth.</p>
|
||
<p>In practice, I'm really bad at multi-tasking. I tried a few times the
|
||
<em>Pomodoro</em> technique, which forces me to focus on a task for 25mn, but
|
||
this split of my day into slices of 25mn breaks my natural flow.</p>
|
||
<p>So, what do I need? I tried to change my tools, it helped a bit. Still,
|
||
I'm not focused like I would like to be.</p>
|
||
<p>Maybe that's just me who needs some more persuasion over myself, but the
|
||
best way I found to work is to unplug the cable. Literally. At work, at
|
||
some point I was using a RJ45 cable to connect to the Internet. When I
|
||
wanted to work on something, I could just unplug this cable.</p>
|
||
<p>And that's amazing how you find yourself in the process to "check"
|
||
something on the web. Mails, irc… well, you got the idea. You're
|
||
litterally, without even noticing, switching to your browser an opening
|
||
a new tab…</p>
|
||
<p>Of course, that Web isn't filled only with lolcats and twitter messages
|
||
(even if I would <strong>love</strong> to see a pie chart with the repartition of
|
||
lolcats VS the rest of the web's content), so sometimes you need some
|
||
precious bit of information that's there. Fair enough. plug the cable,
|
||
do what you <strong>need</strong> to do, and unplug. Alexis, unplug!</p>
|
||
<p>It also helps to have some fair bit of documentation available directly
|
||
on my machine (I used to have the python docs, I should get it back!)</p>
|
||
<p>I'm feeling adventurous, so I'll try something new starting tomorrow,
|
||
and I'll report back in here my findings. Here's the challenge:</p>
|
||
<ul>
|
||
<li><strong>Check emails only once a day</strong>. Do <strong>not</strong> do it in the morning,
|
||
before working, to keep my mind clear. I would say at 2pm (after
|
||
lunch). (This doesn't mean I will not send mails tho)</li>
|
||
<li>Stay away from the Internet during the morning. I'll not connect if
|
||
I don't need to.</li>
|
||
</ul>
|
||
<p>Let's see how it goes :)</p></content><category term="Journal"></category></entry><entry><title>Retours sur un atelier ZeroNet</title><link href="https://blog.notmyidea.org/retours-sur-un-atelier-zeronet.html" rel="alternate"></link><published>2016-03-17T00:00:00+01:00</published><updated>2016-03-17T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-03-17:/retours-sur-un-atelier-zeronet.html</id><summary type="html"><p>Mardi dernier se tenait <a href="http://biblio.insa-rennes.fr/crypto">une <em>cryptoparty</em></a> dans les locaux de l'INSA de Rennes.</p>
|
||
<p>L'évènement s'étant rempli au delà de toutes les espérances, on m'a proposé de
|
||
venir y tenir un atelier, que j'ai proposé sur <a href="https://zeronet.io">ZeroNet</a>, un
|
||
petit projet fort sympathique qui pourrait devenir une nouvelle manière de
|
||
distribuer le …</p></summary><content type="html"><p>Mardi dernier se tenait <a href="http://biblio.insa-rennes.fr/crypto">une <em>cryptoparty</em></a> dans les locaux de l'INSA de Rennes.</p>
|
||
<p>L'évènement s'étant rempli au delà de toutes les espérances, on m'a proposé de
|
||
venir y tenir un atelier, que j'ai proposé sur <a href="https://zeronet.io">ZeroNet</a>, un
|
||
petit projet fort sympathique qui pourrait devenir une nouvelle manière de
|
||
distribuer le Web, permettant notamment d'éviter la censure.</p>
|
||
<p>Avant toute autre chose, merci énormément à l'équipe de la bibliothèque de
|
||
l'INSA pour l'organisation de cet évènement qui à une réelle portée politique.</p>
|
||
<h2>Un peu d'histoire</h2>
|
||
<p>Il me semble que Tim Bernes Lee (l'inventeur du Web) avait prévu le Web comme un
|
||
protocole décentralisé. Chacun hébergerait ses données et les servirait aux
|
||
autres, qui pourraient alors y accéder.</p>
|
||
<p>Avec ce fonctionnement, impossible alors d'accéder à des sites si leur auteur
|
||
n'est pas en ligne. Qu'à cela ne tienne, on s'est mis à avoir des machines qui
|
||
restent connectées au réseau 24 heures par jour. Et puis une machine ne
|
||
suffisant plus, on a eu des fermes de machines dans des <em>data centers</em> etc afin
|
||
de supporter les milliers d'utilisateurs des sites.</p>
|
||
<h2>Un Web décentralisé</h2>
|
||
<p>ZeroNet permet (entre autres) de répondre à ce problème en proposant une manière alternative de <strong>distribuer le Web</strong>, en pair à pair. Lors d'une visite d'un site:</p>
|
||
<ol>
|
||
<li>Vous contactez un <em>tracker</em> BitTorrent pour connaitre la liste des autres
|
||
visiteurs du site (les <em>pairs</em>).</li>
|
||
<li>Vous demandez aux <em>pairs</em> de vous donner les fichiers du site.</li>
|
||
<li>Vous validez que les fichiers servis sont bien les bons (en vérifiant la
|
||
signature attachée).</li>
|
||
</ol>
|
||
<p>N'importe quel visiteur devient alors un <em>pair</em>, qui sert le site aux autres
|
||
visiteurs.</p>
|
||
<p>Parmi les nombreux avantages de cette approche, je note particulièrement que:</p>
|
||
<ul>
|
||
<li>Il est très difficile de censurer un site — Il est sur l'ensemble des machines
|
||
des visiteurs.</li>
|
||
<li>Les attaques par <em>fingerprinting</em> sont impossibles: le navigateur Web se
|
||
connecte à un serveur <em>proxy</em> local.</li>
|
||
<li>Vous détenez directement vos données et (par design) ne les donnez pas à des
|
||
silos (Facebook, Google, etc.)</li>
|
||
</ul>
|
||
<p>Si vous êtes interessés par une démonstration rapide, j'ai enregistré une vidéo
|
||
de 10 minutes où je parle en anglais avec une voix très grave.</p>
|
||
<video controls="" src="http://alexis.notmyidea.org/zeronet.webm" width=800></video>
|
||
|
||
<h2>Atelier</h2>
|
||
<p>Pour l'atelier, j'ai choisi de faire une présentation rapide du projet (<a href="{filename}/static/zeronet-presentation-fr.pdf">j'ai
|
||
traduit les slides</a> anglais
|
||
pour l'occasion — <a href="https://docs.google.com/presentation/d/158C_-V1ueNaaKHMBMBgGOVhunb9xrXzB3hC_g1N53c0/edit?usp=sharing">accès aux sources</a>)
|
||
avant d'installer ZeroNet sur les machines et de l'utiliser pour publier un
|
||
site.</p>
|
||
<h3>Partager sur le réseau local</h3>
|
||
<p>Nous avons eu des soucis à cause du réseau (un peu congestionné) sur lequel
|
||
les ports utilisés pour la discussion entre <em>pairs</em> étaient fermés. Il est bien
|
||
sur possible de faire tourner le tout de manière indépendante du reste du réseau,
|
||
mais je n'avais pas prévu le coup.</p>
|
||
<p>Voici donc comment faire pour contourner le souci:</p>
|
||
<ol>
|
||
<li>Installer et lancer un <em>tracker</em> BitTorrent (De manière surprenante,
|
||
<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=685575">rien n'est packagé pour debian pour l'instant</a>)
|
||
J'ai choisi d'installer <a href="http://erdgeist.org/arts/software/opentracker/#build-instructions">OpenTracker</a></li>
|
||
<li>Ensuite lancer ZeroNet avec des options spécifiques.</li>
|
||
</ol>
|
||
<div class="highlight"><pre><span></span>$ python zeronet.py --trackers udp://localhost:6969 --ip_external <span class="m">192</span>.168.43.207
|
||
$ python zeronet.py --trackers udp://192.168.43.207:6969 --ip_external <span class="m">192</span>.168.43.172
|
||
</pre></div>
|
||
|
||
|
||
<p>Il est nécessaire de spécifier l'adresse IP externe que chaque nœud expose pour
|
||
éviter qu'elle n'essaye d'aller la trouver par elle même: nous voulons l'adresse
|
||
du réseau local, et non pas l'adresse internet.</p>
|
||
<p>La prochaine fois je tenterais de venir avec un HotSpot Wifi et un tracker
|
||
BitTorrent dans la poche!</p>
|
||
<h2>Questions / Réponses</h2>
|
||
<p>Il y avait quelques questions intéressantes auxquelles je n'ai pas toujours su
|
||
répondre sur le moment. Après quelques recherches, je rajoute des détails ici.</p>
|
||
<h3>Torrent + Tor = brèche de sécu ?</h3>
|
||
<p>Il me semblait avoir entendu parler de problèmes de <em>dé-anonymisation</em>
|
||
<a href="https://hal.inria.fr/file/index/docid/471556/filename/TorBT.pdf">lors de l'utilisation de BitTorrent par dessus Tor</a>.</p>
|
||
<blockquote>
|
||
<p>Dans certains cas, certains clients torrents (uTorrent, BitSpirit, etc)
|
||
écrivent directement votre adresse IP dans l'information qui est envoyée
|
||
au tracker et/ou aux autres pairs.
|
||
— https://blog.torproject.org/blog/bittorrent-over-tor-isnt-good-idea</p>
|
||
</blockquote>
|
||
<p><a href="https://github.com/HelloZeroNet/ZeroNet/issues/274">Ce n'est pas le cas de ZeroNet</a>, ce qui évacue le souci.</p>
|
||
<h3>ZeroMail, c'est lent non ?</h3>
|
||
<p>Une des applications de démo, <em>ZeroMail</em>, propose un mécanisme qui permet de
|
||
s'envoyer des messages chiffrés sur un réseau pair à pair. L'approche choisie
|
||
est de chiffrer les messages avec la clé du destinataire et de le mettre dans
|
||
un <em>pot commun</em>. Tout le monde essaye de déchiffrer tous les messages, mais ne
|
||
peut déchiffrer que les siens.</p>
|
||
<p>Cela permet de ne <strong>pas</strong> fuiter de méta-données, <a href="{filename}../crypto/2015.05.pgp-problemes.rst">à l'inverse de PGP</a>.</p>
|
||
<p>Je n'ai en fait pas de réponse claire à donner à cette question: l'auteur de
|
||
ZeroNet me disait que 10MB (la limite de taille d'un site, par défaut)
|
||
correspondait à beaucoup de place pour stocker des messages, et qu'il était
|
||
possible de supprimer les anciens messages une fois qu'ils sont lus par exemple.</p>
|
||
<p>Une autre solution à laquelle je pensait était de créer un <em>ZeroSite</em> pour
|
||
chaque récipient, mais on connait à ce moment là le nombre de messages qu'un
|
||
utilisateur peut recevoir.</p>
|
||
<p>Je vois plusieurs problèmes avec le design actuel de ZeroMail (il me semble
|
||
assez facile d'y faire un déni de service par exemple). A creuser.</p>
|
||
<h3>Comment héberger des très gros sites ?</h3>
|
||
<p>Par exemple, comment faire pour héberger Wikipedia ?</p>
|
||
<p>Il semble que la meilleure manière de faire serait de séparer Wikipedia en
|
||
un tas de petites ressources (par catégorie par ex.). Les gros médias pourraient
|
||
être considérés optionnels (et donc téléchargés uniquement à la demande)</p>
|
||
<h3>Est-ce qu'on à vraiment besoin d'un tracker ?</h3>
|
||
<p>Le support d'une DHT <a href="https://github.com/HelloZeroNet/ZeroNet/issues/57">est souhaité</a>,
|
||
mais pour l'instant pas encore implémenté. L'utilisation de la DHT BitTorrent
|
||
n'est pas une option puisque <a href="https://github.com/HelloZeroNet/ZeroNet/issues/57">Tor ne supporte pas UDP</a>.</p></content><category term="crypto"></category></entry><entry><title>L'horizon</title><link href="https://blog.notmyidea.org/lhorizon.html" rel="alternate"></link><published>2016-03-02T00:00:00+01:00</published><updated>2016-03-02T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-03-02:/lhorizon.html</id><summary type="html"><p>headline : Temps de changer d'horizon. Mon départ de Mozilla et le début d'une nouvelle histoire.
|
||
image : images/horizon.jpg</p>
|
||
<blockquote>
|
||
<p>L'Utopie, c'est l'horizon. C'est ce qui permet d'avoir une direction,
|
||
de mettre un pied devant l'autre, de savoir vers où marcher.</p>
|
||
</blockquote>
|
||
<p>Il y a presque 4 ans et demi, je commençais …</p></summary><content type="html"><p>headline : Temps de changer d'horizon. Mon départ de Mozilla et le début d'une nouvelle histoire.
|
||
image : images/horizon.jpg</p>
|
||
<blockquote>
|
||
<p>L'Utopie, c'est l'horizon. C'est ce qui permet d'avoir une direction,
|
||
de mettre un pied devant l'autre, de savoir vers où marcher.</p>
|
||
</blockquote>
|
||
<p>Il y a presque 4 ans et demi, je commençais à travailler, en décembre,
|
||
pour Mozilla. Je me rappelle bien de ces premiers instants un peu
|
||
magiques, qui ont eu lieu juste avant une descente de cave en Bourgogne
|
||
avec Tarek pour y déguster quelques saveurs de vins différentes.</p>
|
||
<p>Quatre ans plus tard, je me retrouve à coder sur Daybed, mon petit
|
||
projet perso, devenu <a href="http://kinto.readthedocs.org/">Kinto</a> avec une
|
||
équipe de personnes plus talentueuses et sympathiques les unes que les
|
||
autres (Niko, Rémy, Mat, si vous me lisez…).</p>
|
||
<p>Mozilla a bien évolué en quelques années: les petits bureaux ou j'avais
|
||
atterri se sont transformés en palace où il est possible d'accueillir
|
||
des membres de la communauté du logiciel libre de manière quotidienne.</p>
|
||
<p>De 14 personnes dans les bureaux Parisiens, nous sommes passés à une
|
||
40aine (et de \~500 salariés à 1100 dans le monde).</p>
|
||
<p>Grandir autant en si peu de temps est un challenge difficile à tenir,
|
||
qui nécessite des réorganisations et bien souvent dans une structure de
|
||
cette taille, de la hiérarchisation. En 4 ans j'ai eu au moins 5
|
||
changements de supérieurs, pour finalement arriver à une situation
|
||
plutôt convenable (mais quand même !)</p>
|
||
<p>J'ai choisi de rejoindre Mozilla parce que j'ai besoin de causes à
|
||
défendre, qui me saisissent et qui me guident. Aujourd'hui, une des
|
||
visions qui m'anime, c'est celle que d'autres ont déjà ouverte: celle de
|
||
données et de vie privée qui sont rendues à leurs utilisateurs.</p>
|
||
<p>Et je veux faire en sorte de réaliser ces «rêves d'un monde meilleur»,
|
||
ce qui veut dire pour moi qu'il est temps de partir vers des horizons
|
||
plus propices à cette vision.</p>
|
||
<p>Lesquels ? Cela reste à construire (mais je vous le dis, y'a du Kinto
|
||
dedans !)</p>
|
||
<h2>La suite ?</h2>
|
||
<p>Sans m'étaler, je veux prendre du temps pour quelques projets autour du
|
||
stockage de données (via Kinto), de l'auto défense numérique (via des
|
||
formations) et de la fabrication de bière artisanale (parce que bon, on
|
||
se refait pas !)</p>
|
||
<p>Évidemment, plein d'envies diverses et variées, envie de me balader un
|
||
peu et d'expérimenter des choses collectivement...</p>
|
||
<p>On se recroisera surement :)</p></content><category term="Journal"></category></entry><entry><title>Let's Encrypt + HAProxy</title><link href="https://blog.notmyidea.org/lets-encrypt-haproxy.html" rel="alternate"></link><published>2016-02-11T00:00:00+01:00</published><updated>2016-02-11T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-02-11:/lets-encrypt-haproxy.html</id><summary type="html"><p><em>Note : Cet article n'est plus à jour. Il est maintenant (2018) possible d'installer des certificats SSL Let's Encrypt d'une manière beaucoup plus simple, en utilisant certbot (et le plugin nginx <code>certbot --nginx</code>).</em></p>
|
||
<blockquote>
|
||
<p>It’s time for the Web to take a big step forward in terms of security
|
||
and privacy …</p></blockquote></summary><content type="html"><p><em>Note : Cet article n'est plus à jour. Il est maintenant (2018) possible d'installer des certificats SSL Let's Encrypt d'une manière beaucoup plus simple, en utilisant certbot (et le plugin nginx <code>certbot --nginx</code>).</em></p>
|
||
<blockquote>
|
||
<p>It’s time for the Web to take a big step forward in terms of security
|
||
and privacy. We want to see HTTPS become the default. Let’s Encrypt
|
||
was built to enable that by making it as easy as possible to get and
|
||
manage certificates.</p>
|
||
<p>-- <a href="https://letsencrypt.org/">Let's Encrypt</a></p>
|
||
</blockquote>
|
||
<p>Depuis début Décembre, la nouvelle <em>autorité de certification</em> Let's
|
||
Encrypt est passée en version <em>Beta</em>. Les certificats SSL sont un moyen
|
||
de 1. chiffrer la communication entre votre navigateur et le serveur et
|
||
2. un moyen d'être sur que le site Web auquel vous accédez est celui
|
||
auquel vous pensez vous connecter (pour éviter des <a href="https://fr.wikipedia.org/wiki/Attaque_de_l'homme_du_milieu">attaques de l'homme
|
||
du milieu</a>).</p>
|
||
<p>Jusqu'à maintenant, il était nécessaire de payer une entreprise pour
|
||
faire en sorte d'avoir des certificats qui évitent d'avoir ce genre
|
||
d'erreurs dans vos navigateurs:</p>
|
||
<p><img alt="Message de firefox lorsque une connexion n'est pas
|
||
sécurisée." src="%7Bfilename%7D/static/unsecure-connection.png"></p>
|
||
<p>Maintenant, grâce à Let's Encrypt il est possible d'avoir des
|
||
certificats SSL <strong>gratuits</strong>, ce qui représente un grand pas en avant
|
||
pour la sécurité de nos communications.</p>
|
||
<p>Je viens de mettre en place un procédé (assez simple) qui permet de
|
||
configurer votre serveur pour générer des certificats SSL valides avec
|
||
Let's Encrypt et le répartiteur de charge
|
||
<a href="http://www.haproxy.org/">HAProxy</a>.</p>
|
||
<p>Je me suis basé pour cet article sur
|
||
d'<a href="https://blog.infomee.fr/p/letsencrypt-haproxy">autres</a>
|
||
<a href="http://blog.victor-hery.com/article22/utiliser-let-s-encrypt-avec-haproxy">articles</a>,
|
||
dont je vous recommande la lecture pour un complément d'information.</p>
|
||
<h2>Validation des domaines par Let's Encrypt</h2>
|
||
<p>Je vous passe les détails d'installation du client de Let's Encrypt, qui
|
||
sont <a href="https://github.com/letsencrypt/letsencrypt#installation">très bien expliqués sur leur
|
||
documentation</a>.</p>
|
||
<p>Une fois installé, vous allez taper une commande qui va ressembler à:</p>
|
||
<div class="highlight"><pre><span></span><span class="err">letsencrypt-auto certonly --renew-by-default</span>
|
||
<span class="err">--webroot -w /home/www/letsencrypt-requests/ \</span>
|
||
<span class="err">-d hurl.kinto-storage.org \</span>
|
||
<span class="err">-d forums.kinto-storage.org</span>
|
||
</pre></div>
|
||
|
||
|
||
<p>Le <em>webroot</em> est l'endroit ou les preuves de détention du domaine vont
|
||
être déposées.</p>
|
||
<p>Lorsque les serveurs de Let's Encrypt vont vouloir vérifier que vous
|
||
êtes bien à l'origine des demandes de certificats, ils vont envoyer une
|
||
requête HTTP sur <code>http://domaine.org/.well-known/acme-challenge</code>, ou il
|
||
voudra trouver des informations qu'il aura généré via la commande
|
||
<code>letsencrypt-auto</code>.</p>
|
||
<p>J'ai choisi de faire une règle dans haproxy pour diriger toutes les
|
||
requêtes avec le chemin <code>.well-known/acme-challenge</code> vers un <em>backend</em>
|
||
nginx qui sert des fichiers statiques (ceux contenus dans
|
||
<code>/home/www/letsencrypt-requests/</code>).</p>
|
||
<p>Voici la section de la configuration de HAProxy (et <a href="https://github.com/almet/infra/blob/master/haproxy/haproxy.cfg#L63-L72">la configuration
|
||
complete</a>
|
||
si ça peut être utile):</p>
|
||
<div class="highlight"><pre><span></span><span class="n">frontend</span> <span class="n">http</span>
|
||
<span class="n">bind</span> <span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">:</span><span class="mi">80</span>
|
||
<span class="k">mode</span> <span class="n">http</span>
|
||
<span class="n">default_backend</span> <span class="n">nginx_server</span>
|
||
|
||
<span class="n">acl</span> <span class="n">letsencrypt_check</span> <span class="n">path_beg</span> <span class="o">/</span><span class="p">.</span><span class="n">well</span><span class="o">-</span><span class="n">known</span><span class="o">/</span><span class="n">acme</span><span class="o">-</span><span class="n">challenge</span>
|
||
<span class="n">use_backend</span> <span class="n">letsencrypt_backend</span> <span class="k">if</span> <span class="n">letsencrypt_check</span>
|
||
|
||
<span class="n">redirect</span> <span class="n">scheme</span> <span class="n">https</span> <span class="n">code</span> <span class="mi">301</span> <span class="k">if</span> <span class="o">!</span><span class="err">{</span> <span class="n">ssl_fc</span> <span class="err">}</span> <span class="o">!</span><span class="n">letsencrypt_check</span>
|
||
|
||
<span class="n">backend</span> <span class="n">letsencrypt_backend</span>
|
||
<span class="n">http</span><span class="o">-</span><span class="n">request</span> <span class="k">set</span><span class="o">-</span><span class="n">header</span> <span class="k">Host</span> <span class="n">letsencrypt</span><span class="p">.</span><span class="n">requests</span>
|
||
<span class="k">dispatch</span> <span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="p">:</span><span class="mi">8000</span>
|
||
</pre></div>
|
||
|
||
|
||
<p>Et celle de NGINX:</p>
|
||
<div class="highlight"><pre><span></span><span class="err">server {</span>
|
||
<span class="err"> listen 8000;</span>
|
||
<span class="err"> server_name letsencrypt.requests;</span>
|
||
<span class="err"> root /home/www/letsencrypt-requests;</span>
|
||
<span class="err">}</span>
|
||
</pre></div>
|
||
|
||
|
||
<h2>Installation des certificats dans HAProxy</h2>
|
||
<p>Vos certificats SSL devraient être générés dans <code>/etc/letsencrypt/live</code>,
|
||
mais ils ne sont pas au format attendu par haproxy. Rien de grave, la
|
||
commande suivant convertit l'ensemble des certificats en une version
|
||
compatible avec
|
||
HAProxy:</p>
|
||
<div class="highlight"><pre><span></span><span class="err">cat /etc/letsencrypt/live/domaine.org/privkey.pem /etc/letsencrypt/live/domaine.org/fullchain.pem &gt; /etc/ssl/letsencrypt/domaine.org.pem</span>
|
||
</pre></div>
|
||
|
||
|
||
<p>Et ensuite dans la configuration de haproxy, pour le (nouveau)
|
||
<em>frontend</em> https:</p>
|
||
<div class="highlight"><pre><span></span><span class="err">bind 0.0.0.0:443 ssl no-sslv3 crt /etc/ssl/letsencrypt</span>
|
||
</pre></div>
|
||
|
||
|
||
<p>Faites bien attention à avoir un <em>frontend</em> https pour tous vos sites en
|
||
HTTPS. <a href="https://github.com/almet/infra/blob/master/haproxy/haproxy.cfg#L38-L60">Pour moi cela ressemble à
|
||
ça</a>.</p>
|
||
<p>Une fois tout ceci fait, redémarrez votre service haproxy et zou !</p>
|
||
<h2>Automatisation</h2>
|
||
<p>Pour automatiser un peu tout ça, j'ai choisi de faire ça comme suit:</p>
|
||
<ul>
|
||
<li>Un fichier domaine dans <code>letsencrypt/domains/domain.org</code> qui
|
||
contient le script <code>letsencrypt</code>.</li>
|
||
<li>Un fichier d'installation de certificats dans
|
||
<code>letsencrypt/install-certs.sh</code> qui s'occupe d'installer les
|
||
certificats déjà générés.</li>
|
||
</ul>
|
||
<p>Et voila ! <a href="https://github.com/almet/infra/">Le tout est dans un dépot
|
||
github</a>, si jamais ça peut vous servir,
|
||
tant mieux !</p></content><category term="Technologie"></category></entry><entry><title>Ateliers d'autodéfense numérique</title><link href="https://blog.notmyidea.org/ateliers-dautodefense-numerique.html" rel="alternate"></link><published>2016-01-14T00:00:00+01:00</published><updated>2016-01-14T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-01-14:/ateliers-dautodefense-numerique.html</id><summary type="html"><p>Il y a huit mois, je me rendais compte de l'importance du choix des
|
||
outils pour faire face à la surveillance généralisée, et notamment en
|
||
rapport au chiffrement des données. Une de mes envies de l'époque était
|
||
l'animation d'ateliers.</p>
|
||
<blockquote>
|
||
<p>Je compte donc:</p>
|
||
<ul>
|
||
<li>Organiser des ateliers de sensibilisation aux outils de …</li></ul></blockquote></summary><content type="html"><p>Il y a huit mois, je me rendais compte de l'importance du choix des
|
||
outils pour faire face à la surveillance généralisée, et notamment en
|
||
rapport au chiffrement des données. Une de mes envies de l'époque était
|
||
l'animation d'ateliers.</p>
|
||
<blockquote>
|
||
<p>Je compte donc:</p>
|
||
<ul>
|
||
<li>Organiser des ateliers de sensibilisation aux outils de
|
||
communication, envers mes proches;</li>
|
||
<li>Utiliser la communication chiffrée le plus souvent possible, au
|
||
moins pour rendre le déchiffrement des messages plus longue,
|
||
"noyer le poisson".</li>
|
||
</ul>
|
||
<p>-- <a href="http://blog.notmyidea.org/chiffrement.html">Chiffrement</a></p>
|
||
</blockquote>
|
||
<p>J'ai mis un peu de temps à mettre le pied à l'étrier, mais je ressors
|
||
finalement du premier atelier que j'ai co-animé avec geb, auprès d'un
|
||
public de journalistes.</p>
|
||
<p>Pour cette première édition l'idée était à la fois d'aller à la
|
||
rencontre d'un public que je connais mal, de leur donner des outils pour
|
||
solutionner les problèmes auxquels ils font parfois face, et de me faire
|
||
une idée de ce que pouvait être un atelier sur l'autodéfense numérique.</p>
|
||
<p>L'objectif pour ce premier atelier était de:</p>
|
||
<ol>
|
||
<li>Échanger autour des besoins et <strong>faire ressortir des histoires</strong> ou
|
||
le manque d'outillage / connaissances à posé problème, dans des
|
||
situations concrètes;</li>
|
||
<li>Se rendre compte des "conduites à risque", <strong>faire peur</strong> aux
|
||
personnes formées pour qu'elles se rendent compte de l'état actuel
|
||
des choses;</li>
|
||
<li><strong>Proposer des solutions concrètes</strong> aux problèmes soulevés, ainsi
|
||
que le minimum de connaissance théorique pour les appréhender.</li>
|
||
</ol>
|
||
<h2>1. Faire ressortir les problèmes</h2>
|
||
<p>Afin de faire ressortir les problèmes, nous avons choisi de constituer
|
||
des petits groupes de discussion, afin de faire des "Groupes d'Interview
|
||
Mutuels", ou "GIM":</p>
|
||
<blockquote>
|
||
<p>l’animateur invite les participants à se regrouper par trois, avec des
|
||
personnes qu’on connaît moins puis invite chacun à livrer une
|
||
expérience vécue en lien avec le thème de la réunion et les deux
|
||
autres à poser des questions leur permettant de bien saisir ce qui a
|
||
été vécu.</p>
|
||
<p>-- «<a href="http://www.scoplepave.org/pour-s-ecouter">Pour s'écouter</a>», SCOP
|
||
Le Pavé.</p>
|
||
</blockquote>
|
||
<p>De ces <em>GIMs</em> nous avons pu ressortir quelques histoires, gravitant
|
||
autour de:</p>
|
||
<ul>
|
||
<li><strong>La protection des sources (d'information)</strong>: Comment faire pour
|
||
aider quelqu'un à faire "fuiter" des données depuis l'intérieur
|
||
d'une entreprise ?</li>
|
||
<li><strong>Le chiffrement de ses données</strong>: Comment éviter de faire "fuiter"
|
||
des données importantes lors d'une perquisition de matériel ?</li>
|
||
</ul>
|
||
<h2>2. Faire peur</h2>
|
||
<p>Un des premiers objectifs est de faire peur, afin que tout le monde se
|
||
rende compte à quel point il est facile d'accéder à certaines données.
|
||
<a href="http://blog.barbayellow.com/">Grégoire</a> m'avait conseillé quelques
|
||
petites accroches qui ont ma foi bien marché:</p>
|
||
<p>J'ai demandé aux présent.e.s de:</p>
|
||
<ul>
|
||
<li>donner leur mot de passe à voix haute devant les autres: a priori
|
||
personne ne le fera;</li>
|
||
<li>venir se connecter à leur compte email depuis mon ordinateur. J'ai
|
||
piégé une personne, qui est venu pour taper son mot de passe.</li>
|
||
</ul>
|
||
<p>Cela à été un bon moyen de parler de l'importance des traces que l'on
|
||
peut laisser sur un ordinateur, et de la confiance qu'il faut avoir dans
|
||
le matériel que l'on utilise, à fortiori si ce ne sont pas les vôtres.</p>
|
||
<p>Pour continuer à leur faire peur, après une brève explication de ce
|
||
qu'est SSL nous avons montré comment il était facile de scruter le
|
||
réseau à la recherche de mots de passe en clair.</p>
|
||
<h2>3. Proposer des solutions concrêtes</h2>
|
||
<p>Une fois que tout le monde avait pleinement pris sonscience des
|
||
problématiques et n'osait plus utiliser son ordinateur ou son
|
||
téléphone, on à commencé à parler de quelques solutions. Plusieurs
|
||
approches étaient possibles ici, nous avons choisi de présenter quelques
|
||
outils qui nous semblaient répondre aux attentes:</p>
|
||
<ul>
|
||
<li>On a expliqué ce qu'était <a href="https://tails.boum.org">Tails</a>, et
|
||
comment l'utiliser et le dupliquer.</li>
|
||
<li>On a pu faire un tour des outils existants sur Tails, notamment
|
||
autour de l'<em>anonymisation</em> de fichiers et la suppression effective
|
||
de contenus.</li>
|
||
<li>Certaines personnes ont pu créer une clé tails avec la persistance
|
||
de configurée.</li>
|
||
<li>Nous nous sommes connectés au réseau
|
||
<a href="https://www.torproject.org">Tor</a> et testé que nos adresses IP
|
||
changeaient bien à la demande.</li>
|
||
<li>Nous avons utilisé <a href="https://crypto.cat">CryptoCat</a> par dessus Tor,
|
||
afin de voir comment avoir une conversation confidentielle dans
|
||
laquelle il est possible d'échanger des fichiers.</li>
|
||
</ul>
|
||
<h2>Retours</h2>
|
||
<p>D'une manière générale, pour une formation de trois heures et demi, je
|
||
suis assez content de l'exercice, et de l'ensemble des sujets que nous
|
||
avons pu couvrir. Il y a beaucoup de place pour l'amélioration,
|
||
notamment en amont (j'avais par exemple oublié d'amener avec moi
|
||
suffisamment de clés USB pour utiliser Tails).</p>
|
||
<p>La plupart des retours qu'on a pu avoir jusqu'à maintenant sont
|
||
positifs, et il y a l'envie d'aller plus loin sur l'ensemble de ces
|
||
sujets.</p>
|
||
<h2>La suite</h2>
|
||
<p>Il y a beaucoup de sujets que nous n'avons pas abordés, ou uniquement
|
||
survolés, à cause du manque de temps disponible. Idéalement, il faudrait
|
||
au moins une journée entière pour couvrir quelques sujets plus en détail
|
||
(on peut imaginer avoir une partie théorique le matin et une partie
|
||
pratique l'après-midi par exemple).</p>
|
||
<p>J'ai choisi volontairement de ne pas aborder le chiffrement des messages
|
||
via PGP parce que <a href="%7Bfilename%7D2015.05.pgp-problemes.rst">je pense que la protection que ce média propose n'est
|
||
pas suffisante</a>, mais je suis
|
||
en train de revenir sur ma décision: il pourrait être utile de présenter
|
||
l'outil, à minima, en insistant sur certaines de ses faiblesses.</p>
|
||
<p>Un compte twitter à été créé recemment autour des crypto-party à Rennes,
|
||
si vous êtes interessés, <a href="https://twitter.com/CryptoPartyRNS">allez jeter un coup
|
||
d'œil</a>!</p>
|
||
<p>Je n'ai pas trouvé de ressources disponibles par rapport à des plans de
|
||
formation sur le sujet, j'ai donc décidé de publier les nôtres, afin de
|
||
co-construire avec d'autres des plans de formation.</p>
|
||
<p>Ils sont pour l'instant disponibles <a href="http://autodefense-numerique.readthedocs.org/en/latest/">sur Read The
|
||
Docs</a>. Tous les
|
||
retours sont évidemment les bienvenus !</p></content><category term="Technologie"></category></entry><entry><title>Le mail doit-il mourir ?</title><link href="https://blog.notmyidea.org/le-mail-doit-il-mourir.html" rel="alternate"></link><published>2015-11-24T00:00:00+01:00</published><updated>2015-11-24T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-11-24:/le-mail-doit-il-mourir.html</id><summary type="html"><p>J'utilise quotidiennement le protocole email, tant bien que mal, tout en sachant que l'ensemble de mes messages passent en clair sur le réseau pour la plupart de mes conversations, puisque trop peu de monde utilise le chiffrement des messages.</p>
|
||
<p>Et même si j'arrive à convaincre certains de mes proches à …</p></summary><content type="html"><p>J'utilise quotidiennement le protocole email, tant bien que mal, tout en sachant que l'ensemble de mes messages passent en clair sur le réseau pour la plupart de mes conversations, puisque trop peu de monde utilise le chiffrement des messages.</p>
|
||
<p>Et même si j'arrive à convaincre certains de mes proches à installer PGP, je ne suis pas satisfait du résultat: les méta-données (qui contacte qui à quel
|
||
moment, et pour lui dire quoi) transitent de toute manière, elles, en clair, à la vue de tous.</p>
|
||
<p>Ce problème est lié directement au protocole email: il est <em>necessaire</em> de faire fuiter ces meta-données (au moins le destinataire) pour avoir un protocole
|
||
mail fonctionnel.</p>
|
||
<p>Le mail répond à un besoin de communication asynchrone qui permet des conversations plus réfléchies qu'un simple chat (miaou). Il est tout à fait possible d'utiliser certaines technologies existantes afin de construire le futur de l'email, pour lequel:</p>
|
||
<ul>
|
||
<li>Les méta-données seraient chiffrées — Il n'est pas possible de savoir qui
|
||
communique avec qui, et quand;</li>
|
||
<li>Le chiffrement serait fort (et protégé d'une phrase de passe ?);</li>
|
||
<li>La fuite d'une clé de chiffrement utilisée dans un échange ne permette pas de
|
||
déchiffrer l'ensemble des échanges (forward secrecy);</li>
|
||
<li>Il ne soit pas possible de réutiliser les données comme preuve pour
|
||
incriminer l'emmeteur du message (deniability);</li>
|
||
</ul>
|
||
<p>Avec au moins ces besoins en tête, il semble qu'une revue de l'ensemble des projets existants pointe du doigt vers <a href="https://github.com/agl/pond">pond</a>, ou vers <a href="https://www.whispersystems.org">Signal</a>.</p>
|
||
<p>Malheureusement, Pond est le projet d'une seule personne, qui veut plutôt utiliser ce code comme démonstration du concept en question.</p></content><category term="Technologie"></category></entry><entry><title>Rencontres python francophones, 2015</title><link href="https://blog.notmyidea.org/rencontres-python-francophones-2015.html" rel="alternate"></link><published>2015-11-02T00:00:00+01:00</published><updated>2015-11-02T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-11-02:/rencontres-python-francophones-2015.html</id><summary type="html"><p>J'ai pris quelques notes durant la conférence annuelle de PyconFR, qui avait
|
||
lieu à Pau cette année, et les ai publiées entre deux étapes des vacances qui
|
||
ont suivi. Je prends maintenant un peu plus de temps pour ranger toutes ces
|
||
notes au bon endroit.</p>
|
||
<p>C'était un excellent cru: l'organisation …</p></summary><content type="html"><p>J'ai pris quelques notes durant la conférence annuelle de PyconFR, qui avait
|
||
lieu à Pau cette année, et les ai publiées entre deux étapes des vacances qui
|
||
ont suivi. Je prends maintenant un peu plus de temps pour ranger toutes ces
|
||
notes au bon endroit.</p>
|
||
<p>C'était un excellent cru: l'organisation était vraiment impressionnante (merci
|
||
, si vous me lisez !). Et puis comme toujours l'occasion de recroiser quelques
|
||
copains, et d'en découvrir quelques autres... J'en ai profité pour parler de
|
||
Kinto (voici d'ailleurs <a class="reference external" href="http://alexis.notmyidea.org/kinto-pycon/">les slides de la présentation que j'ai faite</a>).</p>
|
||
<p>Parmis les conférences qui m'ont marquées, je vous conseille <a class="reference external" href="https://blog.notmyidea.org/pyconfr-2015-hospital-des-tests-en-prod.html">celle de Benoit
|
||
Bryon, sur Hospital</a>, qui parle de
|
||
heartbeat, ou de comment tester vos projets en prod, et celle <a class="reference external" href="https://blog.notmyidea.org/pyconfr-2015-geoalchemy.html">sur Geo Alchemy,
|
||
par Éric Lemoine</a>. Et bien sur, <a class="reference external" href="https://blog.notmyidea.org/pyconfr-2015-cliquet.html">celle
|
||
de Mathieu Leplatre sur Cliquet</a>, le
|
||
toolkit qui rassemble les bonnes pratiques que nous souhaitons mettre en avant
|
||
chez Mozilla services, mais là, je suis tout sauf impartial !</p>
|
||
<p>Sinon, il peut être interessant de jeter un coup d'oeil au <a class="reference external" href="https://blog.notmyidea.org/pyconfr-2015-table-ronde-diversite.html">compte rendu de la
|
||
table ronde sur la diversité</a>, si c'est un sujet qui vous
|
||
touche. Encore beaucoup de choses à faire sur le sujet, bien sur, mais cette table ronde
|
||
était un pas nécessaire dans la bonne direction. Un groupe de travail sur le
|
||
sujet est en train de se constituer au sein de l'association.</p>
|
||
<p>L'ensemble des notes que j'ai pu prendre sont disponibles dans la section <a class="reference external" href="http://blog.notmyidea.org/category/pyconfr2015.html">PyconFR 2015</a>.</p>
|
||
</content><category term="conferences"></category></entry><entry><title>PyconFR 2015 — Assemblée générale</title><link href="https://blog.notmyidea.org/pyconfr-2015-assemblee-generale.html" rel="alternate"></link><published>2015-10-18T00:00:00+02:00</published><updated>2015-10-18T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-10-18:/pyconfr-2015-assemblee-generale.html</id><summary type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Mot de feth sur Nelle, qui était une présidente très présente. Merci !</p>
|
||
<div class="section" id="passe">
|
||
<h2>Passé</h2>
|
||
<p>Il existe des communautés locales à Lyon Grenoble, Nantes.
|
||
Des Afpyro ont été organisés dans toutes ces villes + Rennes …</p></div></summary><content type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Mot de feth sur Nelle, qui était une présidente très présente. Merci !</p>
|
||
<div class="section" id="passe">
|
||
<h2>Passé</h2>
|
||
<p>Il existe des communautés locales à Lyon Grenoble, Nantes.
|
||
Des Afpyro ont été organisés dans toutes ces villes + Rennes + Marseille
|
||
Support pour 2 Django Carrots.
|
||
Par rapport au mentoring, très peu de retours, peut etre de nouvelles choses
|
||
à faire.</p>
|
||
<p>FOSDEM 2015 était complet. Il y avait une salle python tojours pleine.
|
||
Dsicussions sur la diversité.</p>
|
||
</div>
|
||
<div class="section" id="futur">
|
||
<h2>Futur</h2>
|
||
<p>Amandine propose d'organiser des soirées à NUMA l'an prochain.
|
||
Global code retreat: participation
|
||
Migrer le serveur de l'AFPY
|
||
Reboot des status: nos pratiques ne sont pas en ligne avec nos status.
|
||
Mise en place de mentoring pour python.</p>
|
||
<div class="section" id="status">
|
||
<h3>Status</h3>
|
||
<p>Comité directeur renouvelé par tiers. Il est composé de 18 personnes. Les
|
||
discussions qui sont dans le CD n'en sortent pas, et les discussions sont donc
|
||
effectuées en priuvées.</p>
|
||
<p>L'idée actuelle serait de réduire le CD de 18 à 9 personnes. Tout le travail
|
||
serait fait en dehors du CD. Il est possible de mettre en place un groupe de
|
||
travail pour travailler sur l'évolution de la charte.</p>
|
||
<p>Il faut faire évoluer les status: ils ne sont pas actuellement bien faits par
|
||
rapport à notre utilisation.</p>
|
||
</div>
|
||
</div>
|
||
</content><category term="pyconfr2015"></category></entry><entry><title>PyconFR 2015 — Hospital - des tests en prod</title><link href="https://blog.notmyidea.org/pyconfr-2015-hospital-des-tests-en-prod.html" rel="alternate"></link><published>2015-10-18T00:00:00+02:00</published><updated>2015-10-18T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-10-18:/pyconfr-2015-hospital-des-tests-en-prod.html</id><summary type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Speaker: Benoit Bryon, Peopledoc.</p>
|
||
<p>Pour une procédure de déploiement, comment est-ce qu'on valide que tout va bien
|
||
une fois que tout est dépoyé ? Si on a une application très simple (upload et …</p></summary><content type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Speaker: Benoit Bryon, Peopledoc.</p>
|
||
<p>Pour une procédure de déploiement, comment est-ce qu'on valide que tout va bien
|
||
une fois que tout est dépoyé ? Si on a une application très simple (upload et
|
||
envoi de fichiers).</p>
|
||
<p>Pour des applications plus complexes, il y a beaucoup de choses à tester (base
|
||
de données, cache, email, etc). Beaucoup de parties sont utiles: reverse
|
||
proxy, django, base de données etc.</p>
|
||
<p>Lors d'un déploiement, comment faire pour vérifier que tout tourne lorsque tout
|
||
est déployé ?</p>
|
||
<div class="section" id="comment-faire">
|
||
<h2>Comment faire ?</h2>
|
||
<ul class="simple">
|
||
<li>Les tests permettent de tester hors sol.</li>
|
||
<li>Le provisionning permet de valider que tout tourne correctement, mais</li>
|
||
<li>simplement au démarrage. Les pannes ne sont pas détectées.</li>
|
||
<li>Le logging va permettre de detecter les erreurs, mais trop tard.</li>
|
||
<li>Le monitoring permet d'avoir une vue de l'exterieur.</li>
|
||
</ul>
|
||
<p>Hostpital propose de faire des assertions sur la configuration,
|
||
l'environnement, <em>en cours de fonctionnement</em>. Ce sont les developeurs qui
|
||
ajoutent ces assertions.</p>
|
||
<p>Cela peut servir à valider un déploiement, pour etre rassuré une fois que le
|
||
déploiement effectué. Cela peut aussi service à surveiller un service et
|
||
diagnostiquer les problèmes.</p>
|
||
</div>
|
||
<div class="section" id="hospital">
|
||
<h2>Hospital</h2>
|
||
<dl class="docutils">
|
||
<dt>::</dt>
|
||
<dd>pip install hospital</dd>
|
||
</dl>
|
||
<p>Hospital est un outil en python. On définit des tests, de la même manière que
|
||
l'on définit des tests unitaires. On fait des assertions, comme pour les tests
|
||
unitaires. Hospital propose des helpers pour les cas courants:
|
||
<cite>assert_http_response</cite> ou <cite>assert_ping</cite>.</p>
|
||
<p>La vue est une vue de l'intérieur. La différence avec le monitoring est que
|
||
l'on teste la connectivité entre les services (exemple d'une requete
|
||
elasticsearch qui échoue depuis un service django).</p>
|
||
<p>Pour la supervision, les healthchecks sont lancés avec une ligne de commande
|
||
<cite>hospital-cli</cite>. Il est possible de lancer également ces tests avec nose ou
|
||
py.test.</p>
|
||
<p>Il est aussi possible de faire le monitoring avec une API HTTP <cite>hospital
|
||
serve</cite>.</p>
|
||
<div class="section" id="les-lacunes-de-hospital">
|
||
<h3>Les lacunes de hospital</h3>
|
||
<p>Les healthchecks sont fait actuellement en synchrone. Cela peut prendre du
|
||
temps. Il pourrait etre interessant de lancer des taches de manière distribuée
|
||
/ en paralelle.</p>
|
||
<p>Il pourrait etre utile de faire la distinction entre les smoketests et les
|
||
diagnostiques: les premiers sont des petits checks qui permettent de dire si ça
|
||
marche, de manière très simple. De l'autre coté, les diagnostiques seraient eux
|
||
plus fins.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="wrap-up">
|
||
<h2>Wrap up</h2>
|
||
<p>Validez votre configuration, la connectivité avec les services externes. Faites
|
||
des tests souvent !</p>
|
||
</div>
|
||
</content><category term="pyconfr2015"></category></entry><entry><title>PyconFR 2015 — We don't need your loop</title><link href="https://blog.notmyidea.org/pyconfr-2015-we-dont-need-your-loop.html" rel="alternate"></link><published>2015-10-18T00:00:00+02:00</published><updated>2015-10-18T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-10-18:/pyconfr-2015-we-dont-need-your-loop.html</id><summary type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Speaker: serge_sans_paille.</p>
|
||
<p>Retour sur le passé des boucles: ASM, fortran, C. Avec APL, la boucle est
|
||
cachée au fur et à mesure des évolutions. Écrire une boucle ne devrait pas etre
|
||
exprimer …</p></summary><content type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Speaker: serge_sans_paille.</p>
|
||
<p>Retour sur le passé des boucles: ASM, fortran, C. Avec APL, la boucle est
|
||
cachée au fur et à mesure des évolutions. Écrire une boucle ne devrait pas etre
|
||
exprimer comment atteindre le resultat.</p>
|
||
<p>En python, par exemple, il vaut mieux utiliser <cite>sum</cite> plutôt que de faire
|
||
l'addition nous même (pour faire une addition des elements d'une liste).</p>
|
||
<p>Actuellement, le compilateur python est lent si on utilise numpy.sum sur des
|
||
matrices complexes.</p>
|
||
<div class="section" id="comment-aller-plus-vite">
|
||
<h2>Comment aller plus vite?</h2>
|
||
<p>Cython est assez compliqué, il faut savoir ce que l'on fait pour optimiser et
|
||
écrire du bon code Cython.</p>
|
||
<p>Avec pythran, l'intelligence est dans le compilateur, qui permet d'écrire
|
||
notemment des boucles correctement.</p>
|
||
<p>En donnant plus d'informaitons au compilateur, plutôt que de faire des boucles,
|
||
cela lui permet d'avoir un contexte qui lui permet d'optimiser le code.</p>
|
||
<p>Par contre, cela veut dire que plus de connaissances sont necessaire pour lire
|
||
le code python.</p>
|
||
<p>pythran permet de compiler directement vers du C++ sans avoir à changer son
|
||
code de base (python). C'est utile pour du code numpy notemment.</p>
|
||
</div>
|
||
<div class="section" id="questions">
|
||
<h2>Questions</h2>
|
||
<p>Possible de paralelliser de manière explicite <strong>ou</strong> implicite.</p>
|
||
<p><strong>C'est très utile pour les gens qui font du &quot;number crunching&quot;. Est-ce que
|
||
c'est utile pour d'autres domaines d'application (Web)?</strong></p>
|
||
<p>Pas vraiment. CPython est déjà bien fait pour ces cas d'utilisation.</p>
|
||
<p><strong>Est-il possible de lancer pythran sans faire de commentaires ?</strong></p>
|
||
<p>C'est possible mais cela ne servira pas à grand chose. Il est necessaire de
|
||
connaitre le type des objets qui sont utilisés lors des boucles.</p>
|
||
<p><strong>Est-ce que vous songez à un compilateur à la volée ?</strong></p>
|
||
<p>De gros efforts ont été faits dernièrement pour diminuer le temps de
|
||
compilation. Mais pour une fonction qui renvoie None prends de l'ordre d'une
|
||
seconde ou une demi seconde. Ce n'est pas très utile pour un compilateur à la
|
||
volée puisqu'il faudrait des gains de perfs supérieurs à cela.</p>
|
||
</div>
|
||
</content><category term="pyconfr2015"></category></entry><entry><title>PyconFR 2015 — Cliquet</title><link href="https://blog.notmyidea.org/pyconfr-2015-cliquet.html" rel="alternate"></link><published>2015-10-17T00:00:00+02:00</published><updated>2015-10-17T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-10-17:/pyconfr-2015-cliquet.html</id><summary type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Speaker: Mathieu Leplatre (&#64;leplatrem), Mozilla</p>
|
||
<p>Toolkit HTTP, pour éventuellement faire des microservices.</p>
|
||
<ol class="arabic simple">
|
||
<li>Origines</li>
|
||
<li>Protocole</li>
|
||
<li>Toolkit</li>
|
||
<li>Conversation</li>
|
||
</ol>
|
||
<div class="section" id="origines">
|
||
<h2>Origines</h2>
|
||
<p>Stockage de données, Cloud Services, Mozilla.
|
||
Le boulot, c'est de faire des APIs. On nous …</p></div></summary><content type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Speaker: Mathieu Leplatre (&#64;leplatrem), Mozilla</p>
|
||
<p>Toolkit HTTP, pour éventuellement faire des microservices.</p>
|
||
<ol class="arabic simple">
|
||
<li>Origines</li>
|
||
<li>Protocole</li>
|
||
<li>Toolkit</li>
|
||
<li>Conversation</li>
|
||
</ol>
|
||
<div class="section" id="origines">
|
||
<h2>Origines</h2>
|
||
<p>Stockage de données, Cloud Services, Mozilla.
|
||
Le boulot, c'est de faire des APIs. On nous demande de faire des APIs, tout
|
||
le temps.</p>
|
||
<p>Souvent, les mêmes questions sont à l'ordre du jour. Heartbeat, codes
|
||
d'erreurs, etc. L'inventaire de tout ce qui est attendu d'une API, au dela de
|
||
ce qui est la valeur ajoutée du service.</p>
|
||
<p>Définition d'un protocole. Définir une API REST n'est pas aussi évident qu'il
|
||
y parait. Il faut définir les formats de JSON, les status, etc.</p>
|
||
<p>La réutilisation de certaines protocoles existants était possible (Sync, en
|
||
production depuis quelques années).</p>
|
||
<p>Réutiliser du code nous permettait et faire un template pour démarrer plus
|
||
facilement, pour se concentrer sur le métier de l'API. Puisque les besoins ne
|
||
sont pas toujours les mêmes, avoir une boite à outil permet de choisir ce que
|
||
l'on souhaite.</p>
|
||
</div>
|
||
<div class="section" id="protocole">
|
||
<h2>Protocole</h2>
|
||
<ul class="simple">
|
||
<li>Création d'un protocole qui respecte les bonnes pratiques. CORS, avoir les
|
||
bons codes de status, arrêter de se poser toujours les mêmes questions.
|
||
Contrairement à ce qu'on imagine, la spécification HTTP n'est pas si facile
|
||
à suivre. Plutôt que d'écrire un document, un toolkit à été créé.</li>
|
||
<li>Les ops ont besoin de quelques endpoints: un heartbeat (monitoring) des
|
||
endpoints de batch, un endpoint &quot;hello&quot;, pour connaitre le type de service,
|
||
ses URLs etc.</li>
|
||
<li>La service renvoie toujours un JSON avec la description de l'erreur. Cela
|
||
permet d'avoir tout le temps la même gestion des erreurs. Utilisation du
|
||
header &quot;backoff&quot; qui permet de demander aux clients d'arreter de faire des
|
||
requetes durant une durée spécifée par le serveur.</li>
|
||
<li>Pour les resources &quot;REST&quot;, quelques règles sont définies: quel est le format
|
||
du JSON, quel est la syntaxe du querystring pour filtrer, ordonner, gérer les
|
||
opérations concurentes, etc.</li>
|
||
<li>Comment la validation fonctionne ? La pagination ? La définition des
|
||
permissions ? Les erreurs.</li>
|
||
</ul>
|
||
<p>Définir le protocole une seule fois permet de se mettre d'accord avec les Ops.
|
||
On ne créé pas une RFC pour l'instant, il faut qu'on valide ce qu'on a fait,
|
||
il est necessaire de valider notre approche.</p>
|
||
</div>
|
||
<div class="section" id="toolkit">
|
||
<h2>Toolkit</h2>
|
||
<p>La stack en place est basée sur Pyramid et Cornice. Autre chose aurait pu petre
|
||
utilisé. Mais pyramid à été choisi pour son approche simpliste et qui permet de
|
||
rajouter de la complexité au fur et à mesure.</p>
|
||
<p>Cliquet propose de faire l'ensemble du boilerplate, la lecture du protocole, et
|
||
vous permet de créer les backends souhaités.</p>
|
||
<p>Il est possible de choisir les methodes HTTP acceptables, les URLs à utiliser
|
||
etc. Tweaker l'API est possible, la chose qui reste toujouts stable est le
|
||
protocole.</p>
|
||
<p>le toolkit vise à faire quelque chose de pluggable. Tout est controllable
|
||
depuis la configuration.</p>
|
||
<p>Pour le deploiement, cela veut dire que le monitoring est déjà connecté, et il
|
||
est possible de changer la configuration depuis un fichier <cite>.ini</cite>.</p>
|
||
<p>Il est aussi possible de faire du profiling en ajoutant deux lignes de code,
|
||
qui permet de générer des graphs qui permettent d'identifier les goulots
|
||
d'étranglement.</p>
|
||
</div>
|
||
<div class="section" id="microservices">
|
||
<h2>Microservices ?</h2>
|
||
<ul class="simple">
|
||
<li>Cliquet apporte une manière standard de surveiller, deployer, configurer des
|
||
services.</li>
|
||
<li>Il est possible de se focaliser sur la logique de l'application, en faisait
|
||
une abstraction des backends, etc.</li>
|
||
<li>Le fait de figer l'API permet d'avoir des clients génériques que l'on peu
|
||
réutiliser d'une application à l'autre.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="cliquet-est-utilise-pour">
|
||
<h2>Cliquet est utilisé pour</h2>
|
||
<ul class="simple">
|
||
<li>Kinto, un service générique de stpclage de données.</li>
|
||
<li>Syncto, un proxy pour Sync en utilisant le protocole.</li>
|
||
<li>La liste de lecture, service qui à été shutdown.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="questions">
|
||
<h2>Questions</h2>
|
||
<ul class="simple">
|
||
<li><strong>Qu'est-ce qui est pluggable ?</strong> Les choix qui sont fait dans cliquet
|
||
concernent le protocole. Le toolkit est lui fait de manière &quot;pluggable&quot;. Il
|
||
est par exemple possible de changer le backend, l'authentification, le cache
|
||
ou les permissions.</li>
|
||
<li><strong>Quelles sont les parties non standard? Est-il prévu de representer ça via
|
||
une RFC ?</strong> Le seul sujet qui pourrait etre utile dans une RFC serait de
|
||
définir les headers attendus pour la validation et l'écriture
|
||
concurrentielle. L'ensemble de ce qui est proposé est standard.</li>
|
||
<li><strong>Existe-il un client JavaScript, comme pour Kinto ?</strong> Actuellement, non. Par
|
||
contre, Kinto.js est prévu pour que la partie commune entre les APIs (le
|
||
protocole) peut etre extrait.</li>
|
||
</ul>
|
||
</div>
|
||
</content><category term="pyconfr2015"></category></entry><entry><title>PyconFR 2015 — Geoalchemy</title><link href="https://blog.notmyidea.org/pyconfr-2015-geoalchemy.html" rel="alternate"></link><published>2015-10-17T00:00:00+02:00</published><updated>2015-10-17T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-10-17:/pyconfr-2015-geoalchemy.html</id><summary type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Speaker: Eric Lemoine, Camp to camp. (&#64;elemoine)</p>
|
||
<p>Bibliothèque python basée sur SQL alchemy, pour interagir avec des bases de
|
||
données geographiques / spatiales.</p>
|
||
<p>Une base de donnée optimisée pour representer et rechercher des …</p></summary><content type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Speaker: Eric Lemoine, Camp to camp. (&#64;elemoine)</p>
|
||
<p>Bibliothèque python basée sur SQL alchemy, pour interagir avec des bases de
|
||
données geographiques / spatiales.</p>
|
||
<p>Une base de donnée optimisée pour representer et rechercher des données qui
|
||
representent des objets dans un espace géométrique.</p>
|
||
<ul class="simple">
|
||
<li>Il est possible d estocker des ligne,s de polygones, des points. Il y a une
|
||
colonne géometrie pour stocker ces données.</li>
|
||
<li>Il y a aussi des fonctions qui permettent de travailler sur ces données
|
||
(transfomrations, projections, etc).</li>
|
||
<li>Indexs géographiques qui permettent de faire des recherches de manière
|
||
performante.</li>
|
||
</ul>
|
||
<div class="section" id="postgis">
|
||
<h2>POSTGIS</h2>
|
||
<p>POSTGIS s'appuie sur postres pour offrir des types géographiques, des fonctions
|
||
et des indexes (R-Tree), qui permettent de ranger les géométries dans des
|
||
&quot;boites englobantes&quot;.</p>
|
||
<p>Pour créer une base de données postgis, il faut faire un &quot;create extension
|
||
postgis&quot;, ce qui installe tout ce dont on a besoin.</p>
|
||
<p>il est possible d'apeller <cite>GEOMETRY(POINT)</cite> par exemple.</p>
|
||
<p><cite>ST_GeomFromText('POINT(lat long)')</cite> permet de convertir un point dans un objet
|
||
geometrie interne à postgres.</p>
|
||
<p><cite>ST_DWithin</cite> permet de trouver les personnes qui sont autour d'un rayon donné.</p>
|
||
<p>L'ensemble des fonctions proposées par postgres commencent par <cite>ST_*</cite></p>
|
||
</div>
|
||
<div class="section" id="sqlalchemy">
|
||
<h2>SQLAlchemy</h2>
|
||
<p>Il s'agit d'une bote à outil qui permet de faire des requetes de manière
|
||
simple. Il y a une philosophie forte.</p>
|
||
<ul class="simple">
|
||
<li>Il ne sohaite pas cacher la base de données</li>
|
||
<li>C'est un language pour faire du SQL en python</li>
|
||
<li>Rien n'est caché.</li>
|
||
<li>Fourni un vocabulaire riche pour générer le SQL</li>
|
||
<li>L'objectif est de changer la manière dont on pense à SQL, redonner le gout du
|
||
SQL aux developeurs.</li>
|
||
</ul>
|
||
<p>Deux parties:
|
||
- ORM
|
||
- CORE</p>
|
||
<p>Il est possible d'utiliser simplement le core si l'on sohaite (sans utiliser
|
||
l'ORM)</p>
|
||
<div class="section" id="core">
|
||
<h3>Core</h3>
|
||
<p>Il est possible d'utiliser SQL Alchemy pour générer les tables à l'origine.
|
||
Core permet d'utiliser des tables, et d'executer une insertion, depuis python.
|
||
Il est possible de representer les requetes avec des methodes chainées
|
||
<cite>select().where()</cite> etc.</p>
|
||
<p>Le &quot;core&quot; ne fait pas de mapping du tout, il manipule des Tables SQLA
|
||
directement.</p>
|
||
</div>
|
||
<div class="section" id="orm">
|
||
<h3>ORM</h3>
|
||
<p>L'ORM fait, lui, du mapping. C'est cette couche que l'on va utiliser dans une
|
||
application Web complexe par exemple.</p>
|
||
<ul class="simple">
|
||
<li>il est possible de travailler avec une session <cite>Session()</cite> puis on effectue
|
||
des opérations et on <cite>commit()</cite>.</li>
|
||
</ul>
|
||
<div class="section" id="geoalchemy">
|
||
<h4>GeoAlchemy</h4>
|
||
<ul class="simple">
|
||
<li>Créé en 2009, pour supporter uniquement postgis.</li>
|
||
<li>Depuis, d'autres bases de données (MySQL, Spatialite, MySQL server) etc.</li>
|
||
<li>Réécriture depuis grace à la nouvelle API de SQLAlechemy, mais perte du
|
||
support d'autres backends.</li>
|
||
<li>Finalement, retour sur POSTGIS uniquement, pour évite d'avoir à supporter les
|
||
différences de tous les backends.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="features">
|
||
<h2>Features</h2>
|
||
<p>Très simple de s'intégrer avec les features de POSTGIS, par exemple en
|
||
déclarant une colonne en tant que &quot;Géometrie&quot;.</p>
|
||
<p>Exemple: session.query(Lake).filter(Lake.geom.ST_Buffer(2).ST_Area) permet de
|
||
lister l'ensemble des lacs avec une aire de 2 au moins.</p>
|
||
<p>S'intègre bien avec des services existants (shapely, pyramid, etc).</p>
|
||
<p>Utilisation de geojsondumps pour representer des features en geojson.</p>
|
||
</div>
|
||
<div class="section" id="status">
|
||
<h2>Status</h2>
|
||
<p>Le projet est completement documenté sur read the docs. La documentation est
|
||
assez complete et solide. Il est intégralement testé, sur differentes versions
|
||
de python, sqlalchemy et postgres.</p>
|
||
<dl class="docutils">
|
||
<dt>3 ou 4 developeurs actifs sur le projet, ça fonctionne plutôt bien. Pour</dt>
|
||
<dd><p class="first">contribuer, il est possible de faire cela sur github.</p>
|
||
<p class="last">Slides de la presentation sur <a class="reference external" href="http://erliem.net/talks/pyconfr2015">http://erliem.net/talks/pyconfr2015</a></p>
|
||
</dd>
|
||
</dl>
|
||
<p>Resources:</p>
|
||
<ul class="simple">
|
||
<li><a class="reference external" href="https://pypi.python.org/pypi/Shapely">https://pypi.python.org/pypi/Shapely</a> - Manipulation and analysis of geometric
|
||
objects in the Cartesian plane.</li>
|
||
</ul>
|
||
<p>Question:</p>
|
||
<ul class="simple">
|
||
<li>Dans les exemples geoalchemy, les données geométriques sont passées sous
|
||
forme de chaine. Est-ce normal ? Oui.</li>
|
||
<li>Les rasters sont également supportés.</li>
|
||
</ul>
|
||
</div>
|
||
</content><category term="pyconfr2015"></category></entry><entry><title>PyconFR 2015 — SQL Alchemy</title><link href="https://blog.notmyidea.org/pyconfr-2015-sql-alchemy.html" rel="alternate"></link><published>2015-10-17T00:00:00+02:00</published><updated>2015-10-17T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-10-17:/pyconfr-2015-sql-alchemy.html</id><summary type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Speaker: David Allouche</p>
|
||
<p>SQL Alchemy vous permet de produire le SQL que vous voulez. Il faut que vous
|
||
souhaitiez comprendre ce que va etre produit.</p>
|
||
<p>Déclaratif:</p>
|
||
<ul class="simple">
|
||
<li>On créé des classes qui representent …</li></ul></summary><content type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p>Speaker: David Allouche</p>
|
||
<p>SQL Alchemy vous permet de produire le SQL que vous voulez. Il faut que vous
|
||
souhaitiez comprendre ce que va etre produit.</p>
|
||
<p>Déclaratif:</p>
|
||
<ul class="simple">
|
||
<li>On créé des classes qui representent nos tables, et les liaisons entre les
|
||
tables, en utilisant <cite>relationship</cite> (qui à énormement d'attributs).</li>
|
||
<li>On définit quelles osnt les clés étrangères entre les tables.</li>
|
||
<li>Puis on va définir les attributs qui sont liés entre les tables
|
||
(relationship).</li>
|
||
<li>Pour définir des relations entre les Tables, il est possible d'utiliser des
|
||
chaines de caractère <cite>relationship('OtherTable')</cite>.</li>
|
||
<li>La session es tun concept important.</li>
|
||
<li>Lire efficacement. Attention à ne pas faire énormement de requetes avec
|
||
L'ORM.</li>
|
||
</ul>
|
||
<p><strong>Performance SQL</strong></p>
|
||
<ul class="simple">
|
||
<li>Générer le SQL (python)</li>
|
||
<li>Ne pas faire énormement de petites requetes.</li>
|
||
</ul>
|
||
<p>Il est possible de demander à la session de charger les données qui sont
|
||
associées. (avec un joinedload). Par defaut, cela risque de charger
|
||
l'ensemble des colonnes.</p>
|
||
<p>Pour la générer avec SQLAlchemy, il est possible de faire un
|
||
<cite>.query(Table).join(Table).join(Table2).filter_by(field=value)</cite></p>
|
||
<p>En pratique, le mieux est de lister clairemnet le nom des tables</p>
|
||
<p>2ème partie:</p>
|
||
<p>Pour de l'import de données,</p>
|
||
<ul class="simple">
|
||
<li>first() fait une requete SQL. A éviter dans les boucles</li>
|
||
<li>session.flush() c'est quand la session écrit en base tout ce qui est en cours
|
||
dans la transaction. Par default, la session fait un flush avant chaque
|
||
requete.</li>
|
||
<li>une option backçpopulates mets à jour la liste des documents associés à une
|
||
table qui à une foreign key.
|
||
backref modifie implicitement la classe associée. Il est recommandé
|
||
d'utiliser <cite>back_populates</cite> et non pas <cite>backref</cite>.</li>
|
||
<li><cite>subqueryload</cite> permet de générer une requete séparée plutôt qu'une jointure.</li>
|
||
</ul>
|
||
</content><category term="pyconfr2015"></category></entry><entry><title>PyconFR 2015 — Table ronde diversité</title><link href="https://blog.notmyidea.org/pyconfr-2015-table-ronde-diversite.html" rel="alternate"></link><published>2015-10-17T00:00:00+02:00</published><updated>2015-10-17T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-10-17:/pyconfr-2015-table-ronde-diversite.html</id><summary type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p><em>Prise de notes: Gordon et Alexis</em></p>
|
||
<p><strong>Présent·e·s: Jean Phillipe, Laurence (Directrice de l'école qui acueille la
|
||
Pycon), Amandine, Vivianne, Anna (de django carrots) + representes de django
|
||
girls bordeaux (Laurenne et …</strong></p></summary><content type="html"><div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Voici quelques notes prises durant la PyconFR 2015, à Pau. N'hésitez pas
|
||
à les completer si besoin.</p>
|
||
</div>
|
||
<p><em>Prise de notes: Gordon et Alexis</em></p>
|
||
<p><strong>Présent·e·s: Jean Phillipe, Laurence (Directrice de l'école qui acueille la
|
||
Pycon), Amandine, Vivianne, Anna (de django carrots) + representes de django
|
||
girls bordeaux (Laurenne et Alexia).</strong></p>
|
||
<p><strong>JP — Pourquoi</strong>:On a eu une discussion sur la ML de l'AFPy suite à une décision
|
||
de l'afpy de ne pas financer un évènement qui n'était pas ouvert à tous-tes
|
||
(restreint aux femmes et personnes trans). Cette décision à été prise
|
||
conformément a la charte de l'AFPY qui dit que les evènements promus sont
|
||
ouverts à tous. Ce qui veut dire que cela n'inclue pas les évènement exclusifs.
|
||
(Je n'ai jamais demandé de financement à l'AFPY. J'ai juste demandé la
|
||
diffusion sur la mailing interne de la création de Pyladies Paris. Je ne sais
|
||
pas d'où vient cette histoire de financement! Pyladies Paris)</p>
|
||
<p>Suite à ça, une modification de la charte à été proposée. Demain matin, la
|
||
modification de la charte sera proposée lors de l'AG. Suite à la proposition de
|
||
modification, les discussions se sont enchainées, avec des points de vue
|
||
divergents. Cette table ronde vient donc dans ce contexte.
|
||
I
|
||
BD d'introduction:
|
||
<a class="reference external" href="http://www.commitstrip.com/fr/2015/09/17/meanwhile-in-a-parallel-universe-2/">http://www.commitstrip.com/fr/2015/09/17/meanwhile-in-a-parallel-universe-2/</a></p>
|
||
<div class="section" id="tour-de-presentation">
|
||
<h2>Tour de présentation:</h2>
|
||
<ul class="simple">
|
||
<li>Laurence directrice de l'école qui accueille d'évènement, docteure en Maths.
|
||
Contente de voir que la tendance s'inverse un peu (de plus en plus de filles).</li>
|
||
<li>Vivianne, maitre de conférence en informatique à paris sud. Études dans un
|
||
milieu assez masculin. Dans le domaine du developpement pour la recherche, ou
|
||
des environnements techniques, c'est très masculin. Essaye de voir comment
|
||
faire pour que les filles s'intéressent plus a l'informatique.</li>
|
||
<li>Amandine Neyrolle, diplomée d'école de commerce (plutot 50% fille/garcon dans
|
||
ces fillières). Intégrée le monde de l'informatique par la suite en autodidacte
|
||
et formations. Rencontré la créatrice de pyladies et discuté de ces questions.</li>
|
||
<li>Laurenne Chelan, organistrice des django girls bdx. Nouvelle dans cet
|
||
univers. Travaille dans des musées de science depuis quelques années. L'idée de
|
||
dj girs bdx part de l'idée de découvrir le code. Les djangogirls viennent de
|
||
berlin, créé par ???.</li>
|
||
<li>Alexia Sumois. organisatrice de django girls bdx. Nouvelle dans le milieu du
|
||
code. Les conférences d'aujourd'hui on donné envie d'apprendre.</li>
|
||
<li>Anna, créatrice de 4ideas. Essaye de faire en sorte que plus de femmes
|
||
viennent dans l'IT. En reconversion pro. Choisi ce domaine il ya un an. Trouve
|
||
que ce sujet est vraiment extremement important, et sur lequel il est possible
|
||
de faire quelque chose, et d'influencer positivement. L'idée étant de
|
||
démystifier l'IT, et laisser le choix aux femmes de choisir cette profession.</li>
|
||
<li>Jean Phillipe Campguillhem, secrétaire de l'AFPY</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="pourquoi-django-girls">
|
||
<h2>Pourquoi Django Girls ?</h2>
|
||
<p><strong>Alexia</strong> — Le déclencheur de cette aventure vient des goodies (!). La décoration
|
||
de l'évènement a attiré l'attention et donné envie de creuser.</p>
|
||
<p><strong>Laurenne</strong> — C’est pour ça qu’on se pose la question « comment attirer ces
|
||
publics, ces personnes-là ? », importance de l’image qu’on renvoie. Ce n’est
|
||
pas tant une question de genre, mais d’initié·e·s : on a souvent peur d’entrer
|
||
dans ce milieu. Django-girls vise une plus grande bienveillancet Carte de la
|
||
convivialité, chaleureux, et facile d'accès pour les débutants. Tout est livré
|
||
clé en main, et l'évènement est facile à prendre en main. Le 28 oct à bordeau,
|
||
recherche de coachs / sponsors pour l'évènement.
|
||
<a class="reference external" href="http://djangogirls.com/bordeaux">http://djangogirls.com/bordeaux</a></p>
|
||
<p><strong>Laurence</strong> — Aspect macho présent dans la communication de l’école (pas
|
||
forcément explicite). « On a toujours dessiné des symboles de métiers
|
||
identifiés par des garçons »</p>
|
||
<p><strong>Laurenceu</strong> — Il y a une partie d'inconscient dans l'ensemble de
|
||
l'enseignement qui est donné. Il y a peu de candidates qui essayent. Pas
|
||
question de discrimination positive puisque cela a des effets indésirables
|
||
(communautarisme). La question est tout de meme posée, mais il est impensable
|
||
d'accepter des gens grace / a cause de leur genre. L'ambiance change lorsqu'il
|
||
y a de la mixité. À la recherche d’idées pour faire venir plus de candidates.</p>
|
||
<p><strong>Viviane</strong> — En tant que femme, on reçoit en permanence le message que ce
|
||
métier n’est pas fait pour nous. Ces messages ont un impact, le résultat est
|
||
que les filles ne vont pas dans les écoles d’informatiques. Il faut aller
|
||
convaincre les jeunes filles que c’est aussi fait pour elles. Ça passe par
|
||
changer les plaquettes. Il faut réussir à changer l'image existante des confs /
|
||
communautés. Un développeur peut aussi etre une développeuse. Dans l'assemblée,
|
||
on se rend compte que certaines femmes sont en dehors du parcours. Il faut
|
||
qu'en tant que communauté on soit capables d'accueillir les nouvelles /
|
||
nouveaux. C’est en ayant une diversité qu’on parviendra à changer l’image du
|
||
métier. Les rencontres pyladies permettent aussi de rencontrer d'autres femmes
|
||
qui ont les mêmes problématiques. Accompagner les nouvelles entrantes pour
|
||
trouver du boulot, découvrir l'AFPY et les initatives existantes. Les
|
||
initiatives existantes django girls / pyladies est très important.</p>
|
||
<p><strong>Amandine</strong> — C’est pourquoi ce genre d’évènements non-mixtes permet de faire
|
||
des séances de rattrapage pour permettre d’intégrer la communauté dans son
|
||
ensemble. C’est le point clé pour faire accepter ce genre d’initiatives.</p>
|
||
<p><strong>Laurenne</strong> — DjangoGirls et Django Carrots ne sont pas des évènements
|
||
excluants. Ils sont simplement orientés en priorité aux femmes. Sur la question
|
||
de « comment amener des jeunes filles vers ces études-là », ça se joue bien
|
||
avant, dans l’enfance, bien avant l’école. cf les jeux genrés. Il faut
|
||
travailler à ce niveau-là.</p>
|
||
<p><strong>Anna</strong> — Pour illustrer ce que dit Laurenne, l'importance des clichés
|
||
existants. Avant le mi-80s, il y avait autant de femmes que dans d'autres
|
||
domaines. Si on regarde les stats, dans tousles autres domaines, le pourcentage
|
||
de femmes augmente. Et en IT, en 84 il y a un pic qui inverse la tendance. Ce
|
||
sont des stats américaines. A priori cela s'applique aussi en Europe. En IT, la
|
||
culture qui à été créé autour des hackers qui ont des super pouvoirs, mangent
|
||
des pizzas, etc. Ces clichés ont influencé le monde. Nous ne sommes pas
|
||
complètement autonomes, et nous sommes influencés par la culture autour de
|
||
nous. Les dommages qui ont été fait dans le domaine de l'IT sont graves, et il
|
||
est important de renverser la tendance. La question de l'image est centrale.
|
||
Les personnes ont besoin de place pour faire leurs évènements. Il est important
|
||
de comprendre et respecter que les autres veuillent faire de la discrimination
|
||
positive. Ce sont des actions qui sont supportées par la France. Ce sont des
|
||
valeurs qui sont beaucoup lus fortes en France qu'ailleurs (Anna souligne
|
||
qu'elle est Polonaise). On devrait respecter ce droit.</p>
|
||
<p><strong>Vivianne</strong> — Certaines evènements sont non-mixtes (pour les personnes qui
|
||
s'identifient comme des femmes). Ce ne doit pas etre les seules initiatives.
|
||
Elle est pour la mixté. PyLadies est assez spécifique : ce n’est pas de la
|
||
formation, mais principalement des évènements tournés autour du réseau. Il est
|
||
important d'avoir un endroit ou les jeunes femmes seront moins imprésionnées.
|
||
Les situations exposées dans la BD sont réelles. De se retrouver dans un
|
||
environnement où elles sont sûres qu’elles ne subiront pas de micro-agressions.</p>
|
||
<p><strong>Laurence</strong> — Témoignage d'une mère qui dit à sa fille, en passant devant un
|
||
panneau de l'école, mentionnant maths et informatique, et qui dit à sa fille «
|
||
oh non, c'est pas pour toi ça » . On dit « attention les garçons, vous devez
|
||
être sympas avec les filles ». Les garçons ont envie que ça se passe bien avec
|
||
les filles.</p>
|
||
<p><strong>JP</strong> — Sans revenir sur les décisions qui ont été prises, nous n'avons pas
|
||
dit que nous étions contre ces évènements (à l'AFPY). A plusieurs reprises,
|
||
j'ai du faire des blagues sexistes. Évidemment qu'on est mieux ensemble. Pour
|
||
revenir sur la discussion de la mailing-list, je me suis rendu compte que
|
||
j'avais un regard biaisé. Si on en est la, c'est quil y a énormement de
|
||
travail. Que faire, du coup ? En tant qu'hommes ? Qu'association ? Si il est
|
||
necessaire de créer une zone de confort / sécurité, c'est qu'il y a une zone
|
||
d'inconfort / insécurité qui est forte. Les couleurs, les jolis goodies, sont
|
||
le sommet de l’iceberg. Rappel de l'éxistence du Code of Conduct : il y a déjà
|
||
eu des incidents par le passé. On passe la parole à Florent, qui est à
|
||
l’origine du CoC. Remerciement envers les intervenantes.</p>
|
||
<p><strong>Florent (vice secrétaire de l'AFPY)</strong> — Comme le dit JP, un code of conduct
|
||
est affiché devant toutes les portes et à l'entrée. Tout le monde n’aimait pas
|
||
forcément l’idée d’en avoir, on a fini par trancher. Le but est d’avoir des
|
||
endroits safes. Avant d’avoir un CoC, on ne peut pas dire qu’on soit safes,
|
||
envers l'ensemble des minorités. On a écrit le CoC en conséquence des
|
||
agressions. Aujourd’hui, pas de tolérance pour des comportements qui n’ont pas
|
||
lieu d’être (qu’on a définis comme tels). Ça fonctionne sur la dénonciation
|
||
lorsque l’on est témoin de ça. On n’a pas vraiment de mal à rencontrer des
|
||
femmes, mais plus de mal à faire comprendre qu’elles sont bienvenues. Impact
|
||
important de blagues sexistes, qu’on défend comme « c’est pour rire ». Merci de
|
||
lire le Code of Conduct. Les blagues sexistes etc. ne sont pas les bienvenues.
|
||
Merci de réagir lors de ces cas.</p>
|
||
</div>
|
||
<div class="section" id="questions">
|
||
<h2>Questions.</h2>
|
||
<p><strong>Questiond de Gawel</strong>: Question pour Amandine. Est-ce que tu te sens bien à l'AFPY ? Si non, que faire pour que tu te sente mieux ?</p>
|
||
<p>Amandine — Oui je me sens bien, est-ce qu’il y a eu des évènements ? oui, sans
|
||
doute mais j’y suis aguerrie, donc je me rends peu compte. Qu’est-ce qu’on peut
|
||
faire ? L’idée du CoC est d’aller à l’encontre des comportements négatifs, mais
|
||
l’idée derrière est une ouverture à la différence dans son ensemble, promouvoir
|
||
l’ouverture à l’autre et à la différence. L’enjeu culturel est d’arriver à
|
||
changer d’état d’esprit et d’identifier ces biais cognitifs. Il faudrait pas
|
||
qu’on se dise « ho là là, il y a une fille, faut rien dire sinon je vais me
|
||
faire taper » Il faut cultiver la différence. et être curieux/se.</p>
|
||
<p><strong>Question</strong> : « c’est pas fait pour moi », mais plutôt « je suis mauvais, donc
|
||
je dois travailler », on en revient à l’importance de l’éducation. Il faut
|
||
continuer de pointer du doigt les problèmes. Je suis aussi membre d’un LUG,
|
||
nous sommes entre hommes diplomés blancs de 30 à 40 ans. La réflexion sur les
|
||
plaquettes pas accueillantes est pertinente : le site de l’asso est très
|
||
masculin.</p>
|
||
<p><strong>Question de Bruno</strong>. Pour l’école: quand j’étais étudiant, 20% de filles.
|
||
(Aujourd’hui on est partis de 7/8% pour arriver à 15%). Est-ce que les filles
|
||
réussissent plus ?</p>
|
||
<p>Laurence — on n’a pas de stats, mais elles posent moins de problèmes. Les
|
||
filles sont favorisées par les employeurs.</p>
|
||
<p>Vivianne — la motivation des filles à la sortie est identique aux garçons, mais
|
||
tout n’est pas rose. En entretien par exemple, ils sont faits par des hommes,
|
||
mais au niveau des stats, le nombre de femmes qui quittent le milieu est
|
||
important. Effort à faire au niveau de la communauté, des entreprises. Schémas
|
||
masculins, mais sur le long terme, on subit des agressions. Difficile de rester
|
||
dans le métier et faire une carrière intéressante, à compétences/motivation
|
||
identiques aux hommes. Il faut en avoir conscience</p>
|
||
<p><strong>Question de Benoit</strong>: il y a peut-être une façon de créer des
|
||
lieux/évènements protégés, en utilisant ceux qui existent déjà. Est-ce qu’on
|
||
peut aller organiser des évènements dans des écoles/lycées, des endroits où les
|
||
gens se sentent déjà à l’aise, où les populations sont plus représentées ?</p>
|
||
<p>Vivianne — ça se fait. En tant qu’enseignante, dès que j’ai une occasion, que
|
||
ce soit pour aller chercher des JF ou des étudiants maths/infos, même si c’est
|
||
ouvert à tous, je le fais. Si c’est que des hommes, les femmes n’ont pas envie
|
||
d’y aller.</p>
|
||
<p>Laurenne — c’est quelque chose qui se fait beaucoup. On met en avant des femmes
|
||
chercheuses dès qu’on le peut.</p>
|
||
<p><strong>Question d'Alexis</strong> : je suis très content qu’il y ait cette discussion qui
|
||
se fasse. Question par rapport aux discriminations positives, qu’on a pu voir
|
||
par le passé (notamment lors de conférences). Difficile de dire « on va
|
||
préférer des femmes ». Question irrésolue, parce que pour faire évoluer, on a
|
||
besoin d'initier quelque chose, d’essayer. Mais ça a un côté dérangeant.</p>
|
||
<p>Vivianne — à la PyCon (US), j’ai été impressionnée du nombre de femmes qui
|
||
parlaient. On va pas mettre un quota, ça serait stupide, on va forcer personne.
|
||
Mais il faut en avoir conscience. Cette année, on est 4 oratrices, y’a du
|
||
travail à faire. En tant qu’hommes, il faut aussi se mettre en retrait et
|
||
inviter des femmes à en parler à notre place. Faire le pas d'aller faire un
|
||
exposé dans une communauté où on ne se sent pas à sa place (même si on lutte
|
||
contre) est difficile. Inviter des gens, sans forcément passer par un énorme
|
||
processus. Ça passe par des events comme PyLadies.</p>
|
||
<p>Anna — pour les personnes par encore convaincues, juste apres le droit de vote
|
||
des femmes en 46, à l'assemblée nationale il y avait très peu de femmes. Puis
|
||
en 93, 6.1% apres que des mesures aient été prises. Ensuite de femmes puis vers
|
||
20% Les choses ne vont pas se changer toutes seules. Il est necessaire d'avoir
|
||
du temps pour faire évoluer les choses. Il est important de noter que PyconFR
|
||
fait déjà des choses. Et lors de django carrots, je me suis sentie très
|
||
accueillie. J'ai eu beaucoup de très bonnes expériences avec des personnes qui
|
||
étaient prêtes à aider.</p>
|
||
<p>JP — Remerciement pour Rémy qui abat un travail de ouf. C'est grace à Rémy si
|
||
il y a django carrots demain. Il faut faire des choses. :-) Merci !</p>
|
||
</div>
|
||
</content><category term="pyconfr2015"></category></entry><entry><title>Web distribution signing</title><link href="https://blog.notmyidea.org/web-distribution-signing.html" rel="alternate"></link><published>2015-10-12T00:00:00+02:00</published><updated>2015-10-12T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-10-12:/web-distribution-signing.html</id><summary type="html"><p><em>I'm not a crypto expert, nor pretend to be one. These are thoughts I
|
||
want to share with the crypto community to actually see if any solution
|
||
exists to solve this particular problem.</em></p>
|
||
<p>One <a href="http://www.tonyarcieri.com/whats-wrong-with-webcrypto">often pointed</a> flaw in
|
||
web-based cryptographic applications is the fact that there is no way to …</p></summary><content type="html"><p><em>I'm not a crypto expert, nor pretend to be one. These are thoughts I
|
||
want to share with the crypto community to actually see if any solution
|
||
exists to solve this particular problem.</em></p>
|
||
<p>One <a href="http://www.tonyarcieri.com/whats-wrong-with-webcrypto">often pointed</a> flaw in
|
||
web-based cryptographic applications is the fact that there is no way to
|
||
trust online software distributions. Put differently, you don't actually
|
||
trust the software authors but are rather trusting the software
|
||
distributors and certificate authorities (CAs).</p>
|
||
<p>I've been talking with a few folks in the past months about that and
|
||
they suggested me to publish something to discuss the matter. So here I
|
||
come!</p>
|
||
<h2>The problem (Attack vectors)</h2>
|
||
<p>Let's try to describe a few potential attacks:</p>
|
||
<p><em>Application Authors</em> just released a new version of their open source
|
||
web crypto messaging application. An <em>Indie Hoster</em> installs it on their
|
||
servers so a wide audience can actually use it.</p>
|
||
<p>Someone alters the files on <em>Indie Hoster</em> servers, effectively
|
||
replacing them with other <em>altered files</em> with less security properties
|
||
/ a backdoor. This someone could either be an <em>Evil Attacker</em> which
|
||
found its way trough, the <em>Indie Hoster</em> or a CDN which delivers the
|
||
files,</p>
|
||
<p>Trusted <em>Certificate Authorities</em> ("governments" or "hacking team") can
|
||
also trick the User Agents (i.e. Firefox) into thinking they're talking
|
||
to <em>Indie Hoster</em> even though they're actually talking to a different
|
||
server.</p>
|
||
<p><strong>Altered files</strong> are then being served to the User Agents, and <em>Evil
|
||
Attacker</em> now has a way to actually attack the end users.</p>
|
||
<h2>Problem Mitigation</h2>
|
||
<p>Part of the problem is solved by the recently introduced <a href="https://w3c.github.io/webappsec/specs/subresourceintegrity/">Sub Resource
|
||
Integrity</a>
|
||
(SRI). To quote them: "[it] defines a mechanism by which user agents
|
||
may verify that a fetched resource has been delivered without unexpected
|
||
manipulation.".</p>
|
||
<p>SRI is a good start, but isn't enough: it ensures the assets (JavaScript
|
||
files, mainly) loaded from a specific HTML page are the ones the author
|
||
of the HTML page intends. However, SRI doesn't allow the User Agent to
|
||
ensure the HTML page is the one he wants.</p>
|
||
<p>In other words, we miss a way to create trust between <em>Application
|
||
Authors</em> and <em>User Agents</em>. The User-Agent currently has to trust the
|
||
<em>Certificate Authorities</em> and the delivery (<em>Indie Hoster</em>).</p>
|
||
<p>For desktop software distribution: <em>Crypto Experts</em> audit the software,
|
||
sign it somehow and then this signature can be checked locally during
|
||
installation or runtime. It's not automated, but at least it's possible.</p>
|
||
<p>For web applications, we don't have such a mechanism, but it should be
|
||
possible. Consider the following:</p>
|
||
<ul>
|
||
<li><em>App Authors</em> publish a new version of their software; They provide
|
||
a hash of each of their distributed files (including the HTML
|
||
files);</li>
|
||
<li><em>Crypto Experts</em> audit these files and sign the hashes somehow;</li>
|
||
<li><em>User Agents</em> can chose to trust some specific <em>Crypto Experts</em>;</li>
|
||
<li>When a <em>User Agent</em> downloads files, it checks if they're signed by
|
||
a trusted party.</li>
|
||
</ul>
|
||
<h2>Chosing who you trust</h2>
|
||
<p>In terms of user experience, handling certificates is hard, and that's
|
||
where the community matters. Distributions such as
|
||
<a href="https://tails.boom.org">Tails</a> could chose who they trust to verify the
|
||
files, and issue warnings / refuse to run the application in case files
|
||
aren't verified.</p>
|
||
<p>But, as highligted earlier, CAs are hard to trust. A new instance of the
|
||
same CA system wouldn't make that much differences, expect the fact that
|
||
distributions could ship with a set of trusted authorities (for which
|
||
revocation would still need to be taken care of).</p>
|
||
<blockquote>
|
||
<p>[...] users are vulnerable to MitM attacks by the authority, which
|
||
can vouch for, or be coerced to vouch for, false keys. This weakness
|
||
has been highlighted by recent CA scandals. Both schemes can also be
|
||
attacked if the authority does not verify keys before vouching for
|
||
them.</p>
|
||
<p>-- <a href="http://cacr.uwaterloo.ca/techreports/2015/cacr2015-02.pdf">SoK : Secure
|
||
Messaging</a>;</p>
|
||
</blockquote>
|
||
<p>It seems that some other systems could allow for something more
|
||
reliable:</p>
|
||
<blockquote>
|
||
<p>Melara et al proposed CONIKS, using a series of chained commitments to
|
||
Merkle prefix trees to build a key directory [...] for which
|
||
individual users can efficiently verify the consistency of their own
|
||
entry in the directory without relying on a third party.</p>
|
||
<p>This “self- auditing log” approach makes the system partially have no
|
||
auditing required (as general auditing of non-equivocation is still
|
||
required) and also enables the system to be privacy preserving as the
|
||
entries in the directory need not be made public. This comes at a mild
|
||
bandwidth cost not reflected in our table, estimated to be about 10
|
||
kilobytes per client per day for self-auditing.</p>
|
||
<p>-- <a href="http://cacr.uwaterloo.ca/techreports/2015/cacr2015-02.pdf">SoK : Secure
|
||
Messaging</a>;</p>
|
||
</blockquote>
|
||
<p>Now, I honestly have no idea if this thing solves the whole problem, and
|
||
I'm pretty sure this design has many security problems attached to it.</p>
|
||
<p>However, that's a problem I would really like to see solved one day, so
|
||
here the start of the discussion, don't hesitate to <a href="/pages/about.html">get in
|
||
touch</a>!</p>
|
||
<h2>Addendum</h2>
|
||
<p>It seems possible to increase the level a user has in a Web Application
|
||
by adding indicators in the User-Agent. For instance, when using an
|
||
application that's actually signed by someone considered trustful by the
|
||
User-Agent (or the distributor of the User-Agent), a little green icon
|
||
could be presented to the User, so they know that they can be confident
|
||
about this.</p>
|
||
<p>A bit like User-Agents do for SSL, but for the actual signature of the
|
||
files being viewed.</p></content><category term="Technologie"></category></entry><entry><title>Service de nuages : Pourquoi avons-nous fait Cliquet ?</title><link href="https://blog.notmyidea.org/pourquoi-cliquet" rel="alternate"></link><published>2015-07-14T00:00:00+02:00</published><updated>2015-07-14T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-07-14:/pourquoi-cliquet</id><summary type="html"><p class="first last">Basé sur Pyramid, Cliquet est un projet qui permet de se concentrer sur l'essentiel
|
||
lors de la conception d'APIs.</p>
|
||
</summary><content type="html"><p><em>Cet article est repris depuis le blog « Service de Nuages » de mon équipe à Mozilla</em></p>
|
||
<p><strong>tldr; Cliquet est un toolkit Python pour construire des APIs, qui implémente
|
||
les bonnes pratiques en terme de mise en production et de protocole HTTP.</strong></p>
|
||
<div class="section" id="les-origines">
|
||
<h2>Les origines</h2>
|
||
<p>L'objectif pour le premier trimestre 2015 était de construire un service de
|
||
stockage et de <a class="reference external" href="{filename}2015.04.service-de-nuages.rst">synchronisation de listes de lecture</a>.</p>
|
||
<p>Au démarrage du projet, nous avons tenté de rassembler toutes les bonnes pratiques
|
||
et recommandations, venant de différentes équipes et surtout des derniers projets déployés.</p>
|
||
<p>De même, nous voulions tirer parti du protocole de <em>Firefox Sync</em>, robuste et éprouvé,
|
||
pour la synchronisation des données «offline».</p>
|
||
<p>Plutôt qu'écrire un <a class="reference external" href="http://blog.octo.com/en/design-a-rest-api/">énième</a>
|
||
<a class="reference external" href="http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api">article</a> de blog,
|
||
nous avons préféré les rassembler dans ce qu'on a appellé «un protocole».</p>
|
||
<p>Comme pour l'architecture envisagée nous avions deux projets à construire, qui
|
||
devaient obéir globalement à ces mêmes règles, nous avons décidé de mettre en
|
||
commun l'implémentation de ce protocole et de ces bonnes pratiques dans un
|
||
«toolkit».</p>
|
||
<p><em>Cliquet</em> est né.</p>
|
||
<img alt="Cliquet logo" class="align-center" src="{filename}/images/cliquet-logo.png" />
|
||
<div class="section" id="les-intentions">
|
||
<h3>Les intentions</h3>
|
||
<blockquote class="epigraph">
|
||
Quelle structure JSON pour mon API ? Quelle syntaxe pour filtrer la liste
|
||
via la querystring ? Comment gérer les écritures concurrentes ?
|
||
Et synchroniser les données dans mon application cliente ?</blockquote>
|
||
<p>Désormais, quand un projet souhaite bénéficier d'une API REST pour stocker et consommer
|
||
des données, il est possible d'utiliser le <strong>protocole HTTP</strong> proposé
|
||
et de se concentrer sur l'essentiel. Cela vaut aussi pour les clients, où
|
||
la majorité du code d'interaction avec le serveur est réutilisable.</p>
|
||
<blockquote class="epigraph">
|
||
Comment pouvons-nous vérifier que le service est opérationnel ? Quels indicateurs StatsD ?
|
||
Est-ce que Sentry est bien configuré ? Comment déployer une nouvelle version
|
||
sans casser les applications clientes ?</blockquote>
|
||
<p>Comme <em>Cliquet</em> fournit tout ce qui est nécessaire pour être conforme avec les
|
||
exigences de la <strong>mise en production</strong>, le passage du prototype au service opérationnel
|
||
est très rapide ! De base le service répondra aux attentes en terme supervision, configuration,
|
||
déploiement et dépréciation de version. Et si celles-ci évoluent, il suffira
|
||
de faire évoluer le toolkit.</p>
|
||
<blockquote class="epigraph">
|
||
Quel backend de stockage pour des documents JSON ? Comment faire si l'équipe
|
||
de production impose PostgreSQL ? Et si on voulait passer à Redis ou en
|
||
mémoire pour lancer les tests ?</blockquote>
|
||
<p>En terme d'implémentation, nous avons choisi de <strong>fournir des abstractions</strong>.
|
||
En effet, nous avions deux services dont le coeur consistait
|
||
à exposer un <em>CRUD</em> en <em>REST</em>, persistant des données JSON dans un backend.
|
||
Comme <em>Pyramid</em> et <em>Cornice</em> ne fournissent rien de tout prêt pour ça,
|
||
nous avons voulu introduire des classes de bases pour abstraire les notions
|
||
de resource REST et de backend de stockage.</p>
|
||
<p>Dans le but de tout rendre optionnel et «pluggable», <strong>tout est configurable</strong>
|
||
depuis le fichier <tt class="docutils literal">.ini</tt> de l'application. Ainsi tous les projets qui utilisent
|
||
le toolkit se déploieront de la même manière : seuls quelques éléments de configuration
|
||
les distingueront.</p>
|
||
<img alt="Une réunion à Paris..." class="align-center" src="{filename}/images/cliquet-notes-whiteboard.jpg" />
|
||
</div>
|
||
</div>
|
||
<div class="section" id="le-protocole">
|
||
<h2>Le protocole</h2>
|
||
<blockquote class="epigraph">
|
||
Est-ce suffisant de parler d'«API REST» ? Est-ce bien nécessaire de
|
||
relire la spec HTTP à chaque fois ? Pourquoi réinventer un protocole complet
|
||
à chaque fois ?</blockquote>
|
||
<p>Quand nous développons un (micro)service Web, nous dépensons généralement beaucoup
|
||
trop d'énergie à (re)faire des choix (arbitraires).</p>
|
||
<p>Nul besoin de lister ici tout ce qui concerne la dimension
|
||
de la spécification HTTP pure, qui nous impose le format des headers,
|
||
le support de CORS, la négocation de contenus (types mime), la différence entre
|
||
authentification et autorisation, la cohérence des code status...</p>
|
||
<p>Les choix principaux du protocole concernent surtout :</p>
|
||
<ul class="simple">
|
||
<li><strong>Les resources REST</strong> : Les deux URLs d'une resource (pour la collection
|
||
et les enregistrements) acceptent des verbes et des headers précis.</li>
|
||
<li><strong>Les formats</strong> : le format et la structure JSON des réponses est imposé, ainsi
|
||
que la <a class="reference external" href="{filename}/2015.05.continuation-token.rst">pagination des listes</a>
|
||
ou la syntaxe pour filtrer/trier les resources via la <a class="reference external" href="https://en.wikipedia.org/wiki/Query_string">querystring</a>.</li>
|
||
<li><strong>Les timestamps</strong> : un numéro de révision qui s'incrémente à chaque opération
|
||
d'écriture sur une collection d'enregistrements.</li>
|
||
<li><strong>La synchronisation</strong> : une série de leviers pour récupérer et renvoyer des
|
||
changements sur les données, sans perte ni collision, en utilisant les timestamps.</li>
|
||
<li><strong>Les permissions</strong> : les droits d'un utilisateur sur une collection ou un enregistrement
|
||
(<em>encore frais et sur le point d'être documenté</em>) <a class="footnote-reference" href="#id3" id="id1">[1]</a>.</li>
|
||
<li><strong>Opérations par lot</strong>: une URL qui permet d'envoyer une série de requêtes
|
||
décrites en JSON et d'obtenir les réponses respectives.</li>
|
||
</ul>
|
||
<p>Dans la dimension opérationnelle du protocole, on trouve :</p>
|
||
<ul class="simple">
|
||
<li><strong>La gestion de version</strong> : cohabitation de plusieurs versions en production,
|
||
avec alertes dans les entêtes pour la fin de vie des anciennes versions.</li>
|
||
<li><strong>Le report des requêtes</strong> : entêtes interprétées par les clients, activées en cas de
|
||
maintenance ou de surchage, pour ménager le serveur.</li>
|
||
<li><strong>Le canal d'erreurs</strong> : toutes les erreurs renvoyées par le serveur ont le même
|
||
format JSON et ont un numéro précis.</li>
|
||
<li><strong>Les utilitaires</strong> : URLs diverses pour répondre aux besoins exprimés par
|
||
l'équipe d'administrateurs (monitoring, metadonnées, paramètres publiques).</li>
|
||
</ul>
|
||
<p>Ce protocole est une compilation des bonnes pratiques pour les APIs HTTP (<em>c'est notre métier !</em>),
|
||
des conseils des administrateurs système dont c'est le métier de mettre à disposition des services
|
||
pour des millions d'utilisateurs et des retours d'expérience de l'équipe
|
||
de <em>Firefox Sync</em> pour la gestion de la concurrence et de l'«offline-first».</p>
|
||
<p>Il est <a class="reference external" href="http://cliquet.readthedocs.org/en/latest/api/index.html">documenté en détail</a>.</p>
|
||
<p>Dans un monde idéal, ce protocole serait versionné, et formalisé dans une RFC.
|
||
En rêve, il existerait même plusieurs implémentations avec des technologies différentes
|
||
(Python, Go, Node, etc.). <a class="footnote-reference" href="#id4" id="id2">[2]</a></p>
|
||
<table class="docutils footnote" frame="void" id="id3" rules="none">
|
||
<colgroup><col class="label" /><col /></colgroup>
|
||
<tbody valign="top">
|
||
<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>Voir notre <a class="reference external" href="{filename}/2015.05.cliquet-permissions.rst">article dédié sur les permissions</a></td></tr>
|
||
</tbody>
|
||
</table>
|
||
<table class="docutils footnote" frame="void" id="id4" rules="none">
|
||
<colgroup><col class="label" /><col /></colgroup>
|
||
<tbody valign="top">
|
||
<tr><td class="label"><a class="fn-backref" href="#id2">[2]</a></td><td>Rappel: nous sommes une toute petite équipe !</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="section" id="le-toolkit">
|
||
<h2>Le toolkit</h2>
|
||
<div class="section" id="choix-techniques">
|
||
<h3>Choix techniques</h3>
|
||
<p><em>Cliquet</em> implémente le protocole en Python (<em>2.7, 3.4+, pypy</em>), avec <a class="reference external" href="http://trypyramid.com/">Pyramid</a> <a class="footnote-reference" href="#id6" id="id5">[3]</a>.</p>
|
||
<p><strong>Pyramid</strong> est un framework Web qui va prendre en charge tout la partie HTTP,
|
||
et qui s'avère pertinent aussi bien pour des petits projets que des plus
|
||
ambitieux.</p>
|
||
<p><strong>Cornice</strong> est une extension de <em>Pyramid</em>, écrite en partie par Alexis et Tarek,
|
||
qui permet d'éviter d'écrire tout le code <em>boilerplate</em> quand on construit une
|
||
API REST avec Pyramid.</p>
|
||
<p>Avec <em>Cornice</em>, on évite de réécrire à chaque fois le code qui va
|
||
cabler les verbes HTTP aux méthodes, valider les entêtes, choisir le sérialiseur
|
||
en fonction des entêtes de négociation de contenus, renvoyer les codes HTTP
|
||
rigoureux, gérer les entêtes CORS, fournir la validation JSON à partir de schémas...</p>
|
||
<p><strong>Cliquet</strong> utilise les deux précédents pour implémenter le protocole et fournir
|
||
des abstractions, mais on a toujours <em>Pyramid</em> et <em>Cornice</em> sous la main pour
|
||
aller au delà de ce qui est proposé !</p>
|
||
<table class="docutils footnote" frame="void" id="id6" rules="none">
|
||
<colgroup><col class="label" /><col /></colgroup>
|
||
<tbody valign="top">
|
||
<tr><td class="label"><a class="fn-backref" href="#id5">[3]</a></td><td>Au tout début nous avons commencé une implémentation avec <em>Python-Eve</em>
|
||
(Flask), mais n'étions pas satisfaits de l'approche pour la configuration
|
||
de l'API. En particulier du côté magique.</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="section" id="concepts">
|
||
<h3>Concepts</h3>
|
||
<p>Bien évidemment, les concepts du toolkit reflètent ceux du protocole mais il y
|
||
a des éléments supplémentaires:</p>
|
||
<ul class="simple">
|
||
<li><strong>Les backends</strong> : abstractions pour le stockage, le cache et les permissions
|
||
(<em>ex. PostgreSQL, Redis, en-mémoire, ...</em>)</li>
|
||
<li><strong>La supervision</strong> : logging JSON et indicateurs temps-réel (<em>StatsD</em>) pour suivre les
|
||
performances et la santé du service.</li>
|
||
<li><strong>La configuration</strong> : chargement de la configuration depuis les variables
|
||
d'environnement et le fichier <tt class="docutils literal">.ini</tt></li>
|
||
<li><strong>La flexibilité</strong> : dés/activation ou substitution de la majorité des composants
|
||
depuis la configuration.</li>
|
||
<li><strong>Le profiling</strong> : utilitaires de développement pour trouver les <a class="reference external" href="https://fr.wiktionary.org/wiki/goulet_d%E2%80%99%C3%A9tranglement">goulets
|
||
d'étranglement</a>.</li>
|
||
</ul>
|
||
<img alt="Cliquet concepts" class="align-center" src="{filename}/images/cliquet-concepts.png" />
|
||
<p>Proportionnellement, l'implémentation du protocole pour les resources REST est
|
||
la plus volumineuse dans le code source de <em>Cliquet</em>.
|
||
Cependant, comme nous l'avons décrit plus haut, <em>Cliquet</em> fournit tout un
|
||
ensemble d'outillage et de bonnes pratiques, et reste
|
||
donc tout à fait pertinent pour n'importe quel type d'API, même sans
|
||
manipulation de données !</p>
|
||
<p>L'objectif de la boîte à outils est de faire en sorte qu'un développeur puisse constuire
|
||
une application simplement, en étant sûr qu'elle réponde aux exigeances de la
|
||
mise en production, tout en ayant la possibilité de remplacer certaines parties
|
||
au fur et à mesure que ses besoins se précisent.</p>
|
||
<p>Par exemple, la persistence fournie par défault est <em>schemaless</em> (e.g <em>JSONB</em>),
|
||
mais rien n'empêcherait d'implémenter le stockage dans un modèle relationnel.</p>
|
||
<p>Comme les composants peuvent être remplacés depuis la configuration, il est
|
||
tout à fait possible d'étendre <em>Cliquet</em> avec des notions métiers ou des
|
||
technologies exotiques ! Nous avons posé quelques idées dans <a class="reference external" href="http://cliquet.readthedocs.org/en/latest/ecosystem.html">la documentation
|
||
de l'éco-système</a>.</p>
|
||
<p>Dans les prochaines semaines, nous allons introduire la notion d'«évènements» (ou signaux),
|
||
qui permettraient aux extensions de s'interfacer beaucoup plus proprement.</p>
|
||
<p>Nous attachons beaucoup d'importance à la clareté du code, la pertinence des
|
||
<em>patterns</em>, des tests et de la documentation. Si vous avez des commentaires,
|
||
des critiques ou des interrogations, n'hésitez pas à <a class="reference external" href="https://github.com/mozilla-services/cliquet/issues">nous en faire part</a> !</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="cliquet-a-l-action">
|
||
<h2>Cliquet, à l'action.</h2>
|
||
<p>Nous avons écrit un <a class="reference external" href="http://cliquet.readthedocs.org/en/latest/quickstart.html">guide de démarrage</a>,
|
||
qui n'exige pas de connaître <em>Pyramid</em>.</p>
|
||
<p>Pour illustrer la simplicité et les concepts, voici quelques extraits !</p>
|
||
<div class="section" id="etape-1">
|
||
<h3>Étape 1</h3>
|
||
<p>Activer <em>Cliquet</em>:</p>
|
||
<div class="highlight"><pre><span></span><span class="hll"><span class="kn">import</span> <span class="nn">cliquet</span>
|
||
</span><span class="kn">from</span> <span class="nn">pyramid.config</span> <span class="kn">import</span> <span class="n">Configurator</span>
|
||
|
||
<span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">global_config</span><span class="p">,</span> <span class="o">**</span><span class="n">settings</span><span class="p">):</span>
|
||
<span class="n">config</span> <span class="o">=</span> <span class="n">Configurator</span><span class="p">(</span><span class="n">settings</span><span class="o">=</span><span class="n">settings</span><span class="p">)</span>
|
||
|
||
<span class="hll"> <span class="n">cliquet</span><span class="o">.</span><span class="n">initialize</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="s1">&#39;1.0&#39;</span><span class="p">)</span>
|
||
</span> <span class="k">return</span> <span class="n">config</span><span class="o">.</span><span class="n">make_wsgi_app</span><span class="p">()</span>
|
||
</pre></div>
|
||
<p>À partir de là, la plupart des outils de <em>Cliquet</em> sont activés et accessibles.</p>
|
||
<p>Par exemple, les URLs <em>hello</em> (<tt class="docutils literal">/v1/</tt>) ou <em>supervision</em> (<tt class="docutils literal">/v1/__heartbeat__</tt>).
|
||
Mais aussi les backends de stockage, de cache, etc.
|
||
qu'il est possible d'utiliser dans des vues classiques <em>Pyramid</em> ou <em>Cornice</em>.</p>
|
||
</div>
|
||
<div class="section" id="etape-2">
|
||
<h3>Étape 2</h3>
|
||
<p>Ajouter des vues:</p>
|
||
<div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">global_config</span><span class="p">,</span> <span class="o">**</span><span class="n">settings</span><span class="p">):</span>
|
||
<span class="n">config</span> <span class="o">=</span> <span class="n">Configurator</span><span class="p">(</span><span class="n">settings</span><span class="o">=</span><span class="n">settings</span><span class="p">)</span>
|
||
|
||
<span class="n">cliquet</span><span class="o">.</span><span class="n">initialize</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="s1">&#39;1.0&#39;</span><span class="p">)</span>
|
||
<span class="hll"> <span class="n">config</span><span class="o">.</span><span class="n">scan</span><span class="p">(</span><span class="s2">&quot;myproject.views&quot;</span><span class="p">)</span>
|
||
</span> <span class="k">return</span> <span class="n">config</span><span class="o">.</span><span class="n">make_wsgi_app</span><span class="p">()</span>
|
||
</pre></div>
|
||
<p>Pour définir des resources CRUD, il faut commencer par définir un schéma,
|
||
avec <em>Colander</em>, et ensuite déclarer une resource:</p>
|
||
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">cliquet</span> <span class="kn">import</span> <span class="n">resource</span><span class="p">,</span> <span class="n">schema</span>
|
||
|
||
<span class="k">class</span> <span class="nc">BookmarkSchema</span><span class="p">(</span><span class="n">schema</span><span class="o">.</span><span class="n">ResourceSchema</span><span class="p">):</span>
|
||
<span class="n">url</span> <span class="o">=</span> <span class="n">schema</span><span class="o">.</span><span class="n">URL</span><span class="p">()</span>
|
||
|
||
<span class="hll"><span class="nd">@resource</span><span class="o">.</span><span class="n">register</span><span class="p">()</span>
|
||
</span><span class="hll"><span class="k">class</span> <span class="nc">Bookmark</span><span class="p">(</span><span class="n">resource</span><span class="o">.</span><span class="n">BaseResource</span><span class="p">):</span>
|
||
</span><span class="hll"> <span class="n">mapping</span> <span class="o">=</span> <span class="n">BookmarkSchema</span><span class="p">()</span>
|
||
</span></pre></div>
|
||
<p>Désormais, la resource CRUD est disponible sur <tt class="docutils literal">/v1/bookmarks</tt>, avec toutes
|
||
les fonctionnalités de synchronisation, filtrage, tri, pagination, timestamp, etc.
|
||
De base les enregistrements sont privés, par utilisateur.</p>
|
||
<div class="highlight"><pre><span></span><span class="err">$</span> <span class="err">http</span> <span class="err">GET</span> <span class="s2">&quot;http://localhost:8000/v1/bookmarks&quot;</span>
|
||
<span class="err">HTTP/</span><span class="mf">1.1</span> <span class="mi">200</span> <span class="err">OK</span>
|
||
<span class="err">...</span>
|
||
<span class="p">{</span>
|
||
<span class="nt">&quot;data&quot;</span><span class="p">:</span> <span class="p">[</span>
|
||
<span class="p">{</span>
|
||
<span class="nt">&quot;url&quot;</span><span class="p">:</span> <span class="s2">&quot;http://cliquet.readthedocs.org&quot;</span><span class="p">,</span>
|
||
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="s2">&quot;cc103eb5-0c80-40ec-b6f5-dad12e7d975e&quot;</span><span class="p">,</span>
|
||
<span class="nt">&quot;last_modified&quot;</span><span class="p">:</span> <span class="mi">1437034418940</span><span class="p">,</span>
|
||
<span class="p">}</span>
|
||
<span class="p">]</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
<div class="section" id="etape-3">
|
||
<h3>Étape 3</h3>
|
||
<p>Évidemment, il est possible choisir les URLS, les verbes HTTP supportés, de modifier
|
||
des champs avant l'enregistrement, etc.</p>
|
||
<div class="highlight"><pre><span></span><span class="hll"><span class="nd">@resource</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">collection_path</span><span class="o">=</span><span class="s1">&#39;/user/bookmarks&#39;</span><span class="p">,</span>
|
||
</span><span class="hll"> <span class="n">record_path</span><span class="o">=</span><span class="s1">&#39;/user/bookmarks/{{id}}&#39;</span><span class="p">,</span>
|
||
</span><span class="hll"> <span class="n">collection_methods</span><span class="o">=</span><span class="p">(</span><span class="s1">&#39;GET&#39;</span><span class="p">,))</span>
|
||
</span><span class="k">class</span> <span class="nc">Bookmark</span><span class="p">(</span><span class="n">resource</span><span class="o">.</span><span class="n">BaseResource</span><span class="p">):</span>
|
||
<span class="n">mapping</span> <span class="o">=</span> <span class="n">BookmarkSchema</span><span class="p">()</span>
|
||
|
||
<span class="hll"> <span class="k">def</span> <span class="nf">process_record</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">new</span><span class="p">,</span> <span class="n">old</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||
</span><span class="hll"> <span class="k">if</span> <span class="n">old</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">new</span><span class="p">[</span><span class="s1">&#39;device&#39;</span><span class="p">]</span> <span class="o">!=</span> <span class="n">old</span><span class="p">[</span><span class="s1">&#39;device&#39;</span><span class="p">]:</span>
|
||
</span><span class="hll"> <span class="n">device</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">request</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;User-Agent&#39;</span><span class="p">)</span>
|
||
</span><span class="hll"> <span class="n">new</span><span class="p">[</span><span class="s1">&#39;device&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">device</span>
|
||
</span><span class="hll"> <span class="k">return</span> <span class="n">new</span>
|
||
</span></pre></div>
|
||
<p><a class="reference external" href="http://cliquet.readthedocs.org/en/latest/reference/resource.html">Plus d'infos dans la documentation dédiée</a> !</p>
|
||
<div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">Il est possible de définir des resources sans validation de schema.
|
||
<a class="reference external" href="https://github.com/mozilla-services/kinto/blob/master/kinto/views/records.py">Voir le code source de Kinto</a>.</p>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="etape-4-optionelle">
|
||
<h3>Étape 4 (optionelle)</h3>
|
||
<p>Utiliser les abstractions de <em>Cliquet</em> dans une vue <em>Cornice</em>.</p>
|
||
<p>Par exemple, une vue qui utilise le backend de stockage:</p>
|
||
<div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">cliquet</span> <span class="kn">import</span> <span class="n">Service</span>
|
||
|
||
<span class="n">score</span> <span class="o">=</span> <span class="n">Service</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">&quot;score&quot;</span><span class="p">,</span>
|
||
<span class="n">path</span><span class="o">=</span><span class="s1">&#39;/score/</span><span class="si">{game}</span><span class="s1">&#39;</span><span class="p">,</span>
|
||
<span class="n">description</span><span class="o">=</span><span class="s2">&quot;Store game score&quot;</span><span class="p">)</span>
|
||
|
||
<span class="nd">@score</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">ScoreSchema</span><span class="p">)</span>
|
||
<span class="k">def</span> <span class="nf">post_score</span><span class="p">(</span><span class="n">request</span><span class="p">):</span>
|
||
<span class="n">collection_id</span> <span class="o">=</span> <span class="s1">&#39;scores-&#39;</span> <span class="o">+</span> <span class="n">request</span><span class="o">.</span><span class="n">match_dict</span><span class="p">[</span><span class="s1">&#39;game&#39;</span><span class="p">]</span>
|
||
<span class="n">user_id</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">authenticated_userid</span>
|
||
<span class="n">value</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">validated</span> <span class="c1"># c.f. Cornice.</span>
|
||
|
||
<span class="hll"> <span class="n">storage</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">registry</span><span class="o">.</span><span class="n">storage</span>
|
||
</span><span class="hll"> <span class="n">record</span> <span class="o">=</span> <span class="n">storage</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">collection_id</span><span class="p">,</span> <span class="n">user_id</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
|
||
</span> <span class="k">return</span> <span class="n">record</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="vos-retours">
|
||
<h2>Vos retours</h2>
|
||
<p>N'hésitez pas à nous faire part de vos retours ! Cela vous a donné envie
|
||
d'essayer ? Vous connaissez un outil similaire ?
|
||
Y-a-t-il des points qui ne sont pas clairs ? Manque de cas d'utilisation concrets ?
|
||
Certains aspects mal pensés ? Trop contraignants ? Trop de magie ? Overkill ?</p>
|
||
<p>Nous prenons tout.</p>
|
||
<div class="section" id="points-faibles">
|
||
<h3>Points faibles</h3>
|
||
<p>Nous sommes très fiers de ce que nous avons construit, en relativement peu
|
||
de temps. Et comme nous l'exposions dans <a class="reference external" href="{filename/2015.07.whistler-use-cases.rst}">l'article précédent</a>, il y a du potentiel !</p>
|
||
<p>Cependant, nous sommes conscients d'un certain nombre de points
|
||
qui peuvent être vus comme des faiblesses.</p>
|
||
<ul class="simple">
|
||
<li><strong>La documentation d'API</strong> : actuellement, nous n'avons pas de solution pour qu'un
|
||
projet qui utilise <em>Cliquet</em> puisse intégrer facilement toute
|
||
<a class="reference external" href="http://cliquet.readthedocs.org/en/latest/api/index.html">la documentation de l'API</a>
|
||
obtenue.</li>
|
||
<li><strong>La documentation</strong> : il est très difficile d'organiser la documentation, surtout
|
||
quand le public visé est aussi bien débutant qu'expérimenté. Nous sommes probablement
|
||
victimes du «<a class="reference external" href="https://en.wikipedia.org/wiki/Curse_of_knowledge">curse of knowledge</a>».</li>
|
||
<li><strong>Le protocole</strong> : on sent bien qu'on va devoir versionner le protocole. Au
|
||
moins pour le désolidariser des versions de <em>Cliquet</em>, si on veut aller au
|
||
bout de la philosophie et de l'éco-système.</li>
|
||
<li><strong>Le conservatisme</strong> : Nous aimons la stabilité et la robustesse. Mais surtout
|
||
nous ne sommes pas tout seuls et devons nous plier aux contraintes de la mise
|
||
en production ! Cependant, nous avons très envie de faire de l'async avec Python 3 !</li>
|
||
<li><strong>Publication de versions</strong> : le revers de la médaille de la factorisation. Il
|
||
arrive qu'on préfère faire évoluer le toolkit (e.g. ajouter une option) pour
|
||
un point précis d'un projet. En conséquence, on doit souvent releaser les
|
||
projets en cascade.</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="quelques-questions-courantes">
|
||
<h3>Quelques questions courantes</h3>
|
||
<blockquote>
|
||
Pourquoi Python ?</blockquote>
|
||
<p>On prend beaucoup de plaisir à écrire du Python, et le calendrier annoncé
|
||
initialement était très serré: pas question de tituber avec une technologie
|
||
mal maitrisée !</p>
|
||
<p>Et puis, après avoir passé près d'un an sur un projet Node.js, l'équipe avait
|
||
bien envie de refaire du Python.</p>
|
||
<blockquote>
|
||
Pourquoi pas Django ?</blockquote>
|
||
<p>On y a pensé, surtout parce qu'il y a plusieurs fans de <em>Django REST Framework</em>
|
||
dans l'équipe.</p>
|
||
<p>On l'a écarté principalement au profit de la légèreté et la modularité de
|
||
<em>Pyramid</em>.</p>
|
||
<blockquote>
|
||
Pourquoi pas avec un framework asynchrone en Python 3+ ?</blockquote>
|
||
<p>Pour l'instant nos administrateurs système nous imposent des déploiements en
|
||
Python 2.7, à notre grand désarroi /o\</p>
|
||
<p>Pour <em>Reading List</em>, nous <a class="reference external" href="https://github.com/mozilla-services/readinglist/blob/1.7.0/readinglist/__init__.py#L19-L26">avions activé</a>
|
||
<em>gevent</em>.</p>
|
||
<p>Puisque l'approche consiste à implémenter un protocole bien déterminé, nous n'excluons
|
||
pas un jour d'écrire un <em>Cliquet</em> en <em>aiohttp</em> ou <em>Go</em> si cela s'avèrerait pertinent.</p>
|
||
<blockquote>
|
||
Pourquoi pas JSON-API ?</blockquote>
|
||
<p>Comme nous l'expliquions <a class="reference external" href="{filename}/2015.05.retour-apidays.rst">au retour des APIdays</a>,
|
||
JSON-API est une spécification qui rejoint plusieurs de nos intentions.</p>
|
||
<p>Quand nous avons commencé le protocole, nous ne connaissions pas JSON-API.
|
||
Pour l'instant, comme notre proposition est beaucoup plus minimaliste, le
|
||
rapprochement n'a <a class="reference external" href="https://github.com/mozilla-services/cliquet/issues/254">pas dépassé le stade de la discussion</a>.</p>
|
||
<blockquote>
|
||
Est-ce que Cliquet est un framework REST pour Pyramid ?</blockquote>
|
||
<p>Non.</p>
|
||
<p>Au delà des classes de resources CRUD de Cliquet, qui implémentent un
|
||
protocole bien précis, il faut utiliser Cornice ou Pyramid directement.</p>
|
||
<blockquote>
|
||
Est-ce que Cliquet est suffisamment générique pour des projets hors Mozilla ?</blockquote>
|
||
<p>Premièrement, nous faisons en sorte que tout soit contrôlable depuis la
|
||
configuration <tt class="docutils literal">.ini</tt> pour permettre la dés/activation ou substitution des
|
||
composants.</p>
|
||
<p>Si le protocole HTTP/JSON des resources CRUD vous satisfait,
|
||
alors Cliquet est probablement le plus court chemin pour construire une
|
||
application qui tient la route.</p>
|
||
<p>Mais l'utilisation des resources CRUD est facultative, donc Cliquet reste pertinent
|
||
si les bonnes pratiques en terme de mise en production ou les abstractions fournies
|
||
vous paraissent valables !</p>
|
||
<p>Cliquet reste un moyen simple d'aller très vite pour mettre sur pied
|
||
une application Pyramid/Cornice.</p>
|
||
<blockquote>
|
||
Est-ce que les resources JSON supporte les modèles relationnels complexes ?</blockquote>
|
||
<p>La couche de persistence fournie est très simple, et devrait
|
||
répondre à la majorité des cas d'utilisation où les données n'ont pas de
|
||
relations.</p>
|
||
<p>En revanche, il est tout à fait possible de bénéficier de tous les aspects
|
||
du protocole en utilisant une classe <tt class="docutils literal">Collection</tt> maison, qui se chargerait
|
||
elle de manipuler les relations.</p>
|
||
<p>Le besoin de relations pourrait être un bon prétexte pour implémenter le
|
||
protocole avec Django REST Framework :)</p>
|
||
<blockquote>
|
||
Est-il possible de faire ci ou ça avec Cliquet ?</blockquote>
|
||
<p>Nous aimerions collecter des besoins pour écrire un ensemble de «recettes/tutoriels». Mais
|
||
pour ne pas travailler dans le vide, nous aimerions <a class="reference external" href="https://github.com/mozilla-services/cliquet/issues">connaitre vos idées</a> !
|
||
(<em>ex. brancher l'authentification Github, changer le format du logging JSON, stocker des
|
||
données cartographiques, ...</em>)</p>
|
||
<blockquote>
|
||
Est-ce que Cliquet peut manipuler des fichiers ?</blockquote>
|
||
<p><a class="reference external" href="https://github.com/mozilla-services/cliquet/issues/236">Nous l'envisageons</a>,
|
||
mais pour l'instant nous attendons que le besoin survienne en interne pour se
|
||
lancer.</p>
|
||
<p>Si c'est le cas, le protocole utilisé sera <a class="reference external" href="http://remotestorage.io/">Remote Storage</a>,
|
||
afin notamment de s'intégrer dans l'éco-système grandissant.</p>
|
||
<blockquote>
|
||
Est-ce que la fonctionnalité X va être implémentée ?</blockquote>
|
||
<p><em>Cliquet</em> est déjà bien garni. Plutôt qu'implémenter la fonctionnalité X,
|
||
il y a de grandes chances que nous agissions pour s'assurer que les abstractions
|
||
et les mécanismes d'extension fournis permettent de l'implémenter sous forme
|
||
d'extension.</p>
|
||
</div>
|
||
</div>
|
||
</content><category term="Technologie"></category></entry><entry><title>Rôles</title><link href="https://blog.notmyidea.org/roles.html" rel="alternate"></link><published>2015-06-29T00:00:00+02:00</published><updated>2015-06-29T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-06-29:/roles.html</id><summary type="html"><p>Headline : De l'importance des rôles informels et de leur partage au sein d'un groupe.</p>
|
||
<blockquote>
|
||
<p>Un […] dispositif consiste à tenter de faire bouger les rôles
|
||
(pré)acquis ou qui se fixent dans le groupe, les pousser ailleurs que
|
||
là où ils ont pris l’habitude de se réfugier suivant leur pente …</p></blockquote></summary><content type="html"><p>Headline : De l'importance des rôles informels et de leur partage au sein d'un groupe.</p>
|
||
<blockquote>
|
||
<p>Un […] dispositif consiste à tenter de faire bouger les rôles
|
||
(pré)acquis ou qui se fixent dans le groupe, les pousser ailleurs que
|
||
là où ils ont pris l’habitude de se réfugier suivant leur pente «
|
||
naturelle ».</p>
|
||
<p>Pour ce faire, le groupe prendra du temps pour identifier les types de
|
||
positions qu’adoptent ses protagonistes et les affects qui y sont
|
||
liés, imaginer ensuite des questions à résoudre ou des propositions à
|
||
travailler qui soient susceptibles d’enrichir la palette, les couleurs
|
||
de la fonction de chacun dans le groupe et les manières qui sont les
|
||
siennes d’intervenir et de faire évoluer l’histoire.</p>
|
||
<p>-- David Vercauteren, <a href="http://micropolitiques.collectifs.net/Role">Micropolitiques des
|
||
groupes</a></p>
|
||
</blockquote>
|
||
<p>Réussir la transformation d'un espace compétitif vers un groupe soudé
|
||
demande de réaliser quels sont les points forts de chacun au sein d'un
|
||
groupe.</p>
|
||
<p>Une solution évoquée par <a href="http://www.starhawk.org/about/">StarHawk</a>,
|
||
reprise par <em>David Vercauteren</em> repose sur l'existence de rôles
|
||
informels au sein des groupes et la nécessité de les faire tourner
|
||
(ainsi que les responsabilités attachées).</p>
|
||
<p>Parmi les rôles principaux, quelques autres citations:</p>
|
||
<div class="note">
|
||
|
||
<div class="admonition-title">
|
||
|
||
Note
|
||
|
||
</div>
|
||
|
||
l'emphase est de mon fait, et je retravaillé très legèrement certains
|
||
passages afin d'avoir une lecture plus fluide. Je vous invite à suivre
|
||
les liens pour voir les "questions que chaque rôle fait exister", et
|
||
poursuivre la lecture du livre, qui est entièrement disponible en
|
||
ligne.
|
||
|
||
</div>
|
||
|
||
<h2><a href="http://micropolitiques.collectifs.net/Role?artpage=2-5#outil_sommaire_0">Les corbeaux</a></h2>
|
||
<blockquote>
|
||
<p>Les Corbeaux sont visionnaires […] Ils voient à long terme, et
|
||
gardent en ligne de mire les objectifs du groupe. Ils suggèrent de
|
||
nouvelles directions, dressent des plans, développent des stratégies
|
||
et anticipent les problèmes et les besoins.</p>
|
||
<p>Les Corbeaux ont souvent beaucoup d’influence sur le groupe. Si une ou
|
||
deux personnes pensent à des plans au long-terme, les autres
|
||
acquiesceront, simplement parce qu’ils n’ont pas amené d’autres
|
||
propositions. <strong>Le groupe aurait intérêt à considérer ensemble les
|
||
questions du
|
||
Corbeau</strong></p>
|
||
</blockquote>
|
||
<h2><a href="http://micropolitiques.collectifs.net/Role?artpage=2-5#outil_sommaire_1">Les graces</a></h2>
|
||
<blockquote>
|
||
<p>Les Grâces sont toujours attentives à l’énergie du groupe, prêtes à la
|
||
renforcer au moment où elle faiblit, à la diriger et à la canaliser
|
||
quand elle est forte.</p>
|
||
<p>Elles apportent au groupe […] enthousiasme, énergie, capacité à
|
||
s’agrandir. <strong>Elles font en sorte que les gens se sentent bien</strong>,
|
||
génèrent de l’enthousiasme pour le groupe, accueillent les nouveaux
|
||
venus, amènent de nouvelles personnes. Elles offrent au groupe
|
||
l’inspiration et génèrent de nouvelles
|
||
idées.</p>
|
||
</blockquote>
|
||
<h2><a href="http://micropolitiques.collectifs.net/Role?artpage=2-5#outil_sommaire_2">Les dragons</a></h2>
|
||
<blockquote>
|
||
<p>Le dragon permet au groupe de rester connecté à […] l’aspect
|
||
pratique et réaliste des choses. […] Le dragon veille aux ressources
|
||
du groupe, à ses frontières et donne voix à ses limites.</p>
|
||
<p>Questions que fait exister le dragon:</p>
|
||
<ul>
|
||
<li>Notre manière de travailler est-elle viable ?</li>
|
||
<li>Nos ressources sont-elles renouvelées ?</li>
|
||
<li>Les gens s’épuisent-ils ? Pourquoi ?</li>
|
||
<li>Pouvons-nous vraiment nous lancer dans ce projet et le mener à
|
||
bien convenablement ?</li>
|
||
<li>De quelles frontières avec l’extérieur avons-nous besoin et
|
||
voulons-nous ?</li>
|
||
<li>Comment établissons-nous ces frontières ? Comment nous
|
||
protégeons-nous des intrusions ? Invasions ? Distractions ? De ce
|
||
qui épuise nos énergies ?</li>
|
||
</ul>
|
||
<p><strong>Les Dragons établissent des frontières qui donnent au groupe un
|
||
sentiment de sécurité et des limites qui le rendent viable dans le
|
||
temps</strong>. Ils peuvent être perçus comme des rabat-joie, mais ils
|
||
peuvent gagner l’estime de ceux qui, dans le groupe, se sentent
|
||
dépassés et ne peuvent partager l’énergie des Corbeaux et des
|
||
Grâces.</p>
|
||
<p>Nourrir les Dragons peut permettre au groupe de se maintenir dans le
|
||
temps. Mais une fois encore, si ce rôle ne tourne pas, même les
|
||
Dragons risquent de
|
||
s’épuiser.</p>
|
||
</blockquote>
|
||
<h2><a href="http://micropolitiques.collectifs.net/Role?artpage=2-5#outil_sommaire_3">Les araignées</a></h2>
|
||
<blockquote>
|
||
<p>Le centre d’un groupe peut consister en un « cœur spirituel », <strong>un
|
||
but ou une vision commune</strong>, ou peut se manifester à travers une
|
||
personne. Dans les modes de pensée hiérarchique, le professeur ou le
|
||
gourou occupe le centre du réseau. […]</p>
|
||
<p>Dans les groupes non-hiérarchiques, certaines personnes peuvent être
|
||
perçues comme centrales : en disposant des informations dont les
|
||
autres ont besoin, en étant le point de contact pour les autres.</p>
|
||
<p>Une Araignée est toutefois plus efficace en ne monopolisant pas la
|
||
communication et les informations mais en posant les questions
|
||
susceptibles de créer et de renforcer un véritable réseau
|
||
d’interactions
|
||
complexes.</p>
|
||
</blockquote>
|
||
<h2><a href="http://micropolitiques.collectifs.net/Role?artpage=2-5#outil_sommaire_4">Les serpents</a></h2>
|
||
<blockquote>
|
||
<p>Les serpents cultivent une attention particulière à la manière dont
|
||
les gens se sentent. […]</p>
|
||
<p>Les serpents sont au courant de ce qui se murmure dans les couloirs,
|
||
des conflits naissants, et les mettent sur la place publique, là où
|
||
ils pourraient aider à une médiation, à une résolution du problème.
|
||
[…]</p>
|
||
<p>Les serpents transgressent les lois du Censeur, <strong>parlent des
|
||
non-dits, mettent en évidence ce que d’autres ne voient pas ou
|
||
préfèrent garder caché</strong>. […]</p>
|
||
<p>Les serpents peuvent diminuer l’antipathie dont ils font l’objet s’ils
|
||
prennent la peine de poser des questions au groupe et non d’apporter
|
||
des analyses.</p>
|
||
</blockquote>
|
||
<p>Ainsi, il est possible de se rendre compte de la complexité et de
|
||
l'importance d'une position ou d'une autre, et de les faire évoluer
|
||
ensemble, en prenant en compte leur impact positif sur le groupe.</p>
|
||
<p>Il est par exemple possible, après avoir expérimenté des rôles, de
|
||
questionner leur pertinence et d'établir des pistes d'amélioration en
|
||
enlevant une part importante d'affect personnel qui parfois empêche des
|
||
discussions constructives.</p>
|
||
<p>Je n'ai pour l'instant pas pu expérimenter l'évolution des rôles au sein
|
||
d'un groupe donné, mais je peux d'ores et déjà me rendre compte que
|
||
selon les groupes et selon les moments je n'ai pas le même rôle (tour à
|
||
tour dragon, araignée et grace, parfois corbeau, rarement serpent)</p>
|
||
<p>Aussi, il semble que le groupe doive souhaiter l'établissement d'un
|
||
environnement <em>horizontal</em>, avec une considération partagée de la
|
||
direction que le groupe souhaite prendre pour qu'un tel dispositif ait
|
||
du sens.</p></content><category term="Réfléxions"></category></entry><entry><title>Les problèmes de PGP</title><link href="https://blog.notmyidea.org/les-problemes-de-pgp.html" rel="alternate"></link><published>2015-05-25T00:00:00+02:00</published><updated>2015-05-25T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2015-05-25:/les-problemes-de-pgp.html</id><summary type="html"><blockquote>
|
||
<p>Flip a bit in the communication between sender and recipient and they
|
||
will experience decryption or verification errors. How high are the
|
||
chances they will start to exchange the data in the clear rather than
|
||
trying to hunt down the man in the middle?</p>
|
||
<p>-- <a href="http://secushare.org/PGP">http://secushare.org/PGP</a></p>
|
||
</blockquote>
|
||
<p>Une fois …</p></summary><content type="html"><blockquote>
|
||
<p>Flip a bit in the communication between sender and recipient and they
|
||
will experience decryption or verification errors. How high are the
|
||
chances they will start to exchange the data in the clear rather than
|
||
trying to hunt down the man in the middle?</p>
|
||
<p>-- <a href="http://secushare.org/PGP">http://secushare.org/PGP</a></p>
|
||
</blockquote>
|
||
<p>Une fois passé l'euphorie du "il faut utiliser PGP pour l'ensemble de
|
||
nos communications", j'ai réalisé lors de discussions que PGP avait
|
||
plusieurs problèmes, parmi ceux-ci:</p>
|
||
<ul>
|
||
<li>Les <em>meta données</em> (y compris le champ "sujet" de la conversation)
|
||
sont quand même échangées en clair (il est possible de savoir qu'un
|
||
message à été échangé entre telle et telle personne, a telle date);</li>
|
||
<li>PGP se base sur un protocole de communication qui est lui non
|
||
chiffré, et il est donc facile de soit se tromper, soit dégrader le
|
||
mode de conversation vers une méthode non chiffrée;</li>
|
||
<li>Il est facile de connaître votre réseau social avec PGP, puisque
|
||
tout le principe est de signer les clés des personnes dont vous
|
||
validez l'identité;</li>
|
||
<li>En cas de fuite de votre clé privée, tous les messages que vous avez
|
||
chiffrés avec elle sont compromis. On dit que PGP ne fournit pas de
|
||
<em>forward secrecy</em>;</li>
|
||
<li>La découverte de la clé de pairs se passe souvent <em>en clair</em>, sans
|
||
utiliser une connexion "sécurisée" (HTTPS). Tout le monde peut donc
|
||
voir ces échanges et savoir de qui vous cherchez la clé;</li>
|
||
<li>Les discussions de groupes sont très difficiles: il faut chiffrer
|
||
pour chacun des destinataires (ou que ceux-ci partagent une paire de
|
||
clés).</li>
|
||
</ul>
|
||
<p>Je suis en train de creuser à propos les alternatives à PGP, par exemple
|
||
<a href="https://pond.imperialviolet.org/">Pond</a>, qui lui ne construit pas par
|
||
dessus un standard déjà établi, et donc n'hérite pas de ses défauts
|
||
(mais pas non plus de son réseau déjà établi).</p>
|
||
<p>En attendant, quelques bonnes pratiques sur PGP ;)</p>
|
||
<h2>Bonnes pratiques</h2>
|
||
<p>Il est en fait assez facile d'utiliser PGP de travers. Riseup à fait <a href="https://help.riseup.net/en/security/message-security/openpgp/best-practices">un
|
||
excellent
|
||
guide</a>
|
||
qui explique comment configurer son installation correctement.</p>
|
||
<ul>
|
||
<li>J'en ai déjà parlé, mais il faut absolument choisir des phrases de
|
||
passes suffisamment longues. Pas facile de les retenir, mais
|
||
indispensable. Vous pouvez aussi avoir un document chiffré avec une
|
||
clé que vous ne mettez jamais en ligne, qui contiens ces phrases de
|
||
passe, au cas ou vous les oubliez.</li>
|
||
<li>Générez des clés RSA de 4096 bits, en utilisant sha512;</li>
|
||
<li>Il faut utiliser une date d'expiration de nos clés suffisamment
|
||
proche (2 ans). Il est possible de repousser cette date si
|
||
nécessaire, par la suite.</li>
|
||
</ul>
|
||
<p>Parmi les choses les plus frappantes que j'ai rencontrées:</p>
|
||
<ul>
|
||
<li>Utiliser le <em>flag</em> –hidden-recipient avec PGP pour ne pas dévoiler
|
||
qui est le destinataire du message;</li>
|
||
<li>Ne pas envoyer les messages de brouillons sur votre serveur, ils le
|
||
seraient en clair !;</li>
|
||
<li>Utilisez HPKS pour communiquer avec les serveurs de clés, sinon tout
|
||
le trafic est en clair.</li>
|
||
</ul>
|
||
<p>Le <a href="https://bitmask.net/">projet Bitmask</a> vise lui à rendre les outils
|
||
de chiffrement d'échanges de messages et de VPN simples à utiliser,
|
||
encore quelque chose à regarder.</p>
|
||
<p>Enfin bref, y'a du taf.</p></content><category term="Technologie"></category></entry></feed> |