Planète AFPy RSS

[afpyro] AFPyro à Bruxelles (BE) - le 31 Janvier

Publié le 2015-01-31 00:00:00

Dear Pythonista friends, write down in your agenda the date of the next AFPyro!

The next Aperos Python Belgium will take place on saturday, January 31st in Brussels, during the FOSDEM conference that takes place at ULB from 31st January to 1st February.

In addition to the regulars of AFPyro, we are also pleased to meet the attendees of FOSDEM using Python.

As usual, you can come just for drinking and sharing one (or many) drinks or if you wish, you can also register for the meal that follows, in a near place, at “Chez Léon” for 20:30, rue des Bouchers 18, B-1000 Brussels.

Meeting from 19:45, on first floor of Delirium cafe, Impasse De La Fidélité 4, 1000 Brussels.

If you are a FOSDEM attendee, you can meet us at the Python devroom, after the end of lightning talks, (H.1301 room) to go to Delirium cafe together.

Please sign up in order to book the place: http://doodle.com/ngdeesgbr6dcx3f5

Further information about the next AFPyros in Belgium: Aperos Python Belgium


Amis Pythonistes, notez dans vos agendas la date du prochain AFPyro !

Le prochain Aperos Python Belgium se tiendra le samedi 31 Janvier à Bruxelles, lors du FOSDEM qui se tient à ULB du 31 Janvier au 1 Février.

En plus des habitués de l’AFPyro, nous attendons également avec plaisir les participants du FOSDEM qui utilisent Python.

Comme chaque fois, vous pouvez venir juste pour l’apéro et partager un (ou des) verres, ou si vous le souhaitez, vous inscrire également pour le repas qui suivra, “Chez Léon” à 20h30, rue des Bouchers 18, B-1000 Bruxelles.

Rendez-vous à partir de 19h45, au premier étage du Délirium café, Impasse De La Fidélité 4, 1000 Brussels.

Si vous participez au FOSDEM, nous vous donnons rendez-vous à la salle Python-devroom, après la fin des lightning talks, (salle H.1301), afin d’aller au Délirium café ensemble.

Pour dimensionner au mieux la réservation, merci de vous inscrire sur: http://doodle.com/ngdeesgbr6dcx3f5

Toutes les infos des prochains AFPyros en Belgique: Aperos Python Belgium

[afpyro] AFPyro à Lyon - mercredi 28 janvier

Publié le 2015-01-28 00:00:00

Un Afpyro aura lieu le mercredi 28 janvier à partir de 19h à l’Antre Autre - 11 rue Terme - 69001 Lyon.

Une présentation sur l’utilisation et les dernières fonctionnalités de Radicale sera donnée par Guillaume Ayoub.

L’Antre Autre est un lieu où nous pouvons discuter autour d’un verre, et, pour ceux qui le souhaitent, prendre un repas.

Pour se rendre à l’Antre Autre :

  • en métro : arrêt Hôtel de Ville
  • en bus : lignes C13 et C18 arrêt Mairie du 1er ou lignes 19, C14 et C3 à l’arrêt Terreaux
  • en vélo’v : stations Place Sathonay, Carmélites Burdeau, Place de la paix

[Biologeek] Luxe, espace et temps

Publié le 2015-01-24 11:00:00

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

Better - Merlin Mann (cache)

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

[Biologeek] Payez ce que vous pouvez

Publié le 2015-01-23 11:00:00

Pay-as-you-can!

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

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

Budget and Pricing - hillhacks (cache)

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

[Biologeek] Optimisation de lecture

Publié le 2015-01-22 11:00:00

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

Recopié depuis l’image d’un tweet

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

[Biologeek] Bloquer les publicités

Publié le 2015-01-21 11:00:00

Here’s a lovely bit of irony for you: Adblock Plus, which is by far the most popular add-on for Firefox and Chrome, is actually increasing the amount of memory used by your web browser, rather than decreasing it. Furthermore, ABP also increases the amount of time (and CPU cycles) required to render a website. Instead of making web surfing more responsive, ABP actually makes your surfing experience slower.

Iframe irony: Adblock Plus is probably the reason Firefox and Chrome are such memory hogs (cache)

Suite à ce billet, j’ai commencé à expérimenter ce qu’il est possible de faire en jouant avec le fichier /etc/hosts. Emmanuel me demandait quels étaient mes retours sur ce changement (attention tout ce qui suit est purement du ressenti) :

  • une plus faible consommation de mémoire, rien d’extraordinaire mais quand on a beaucoup de tabs ça finit par jouer ;
  • des iframes qui s’affichent avec des pages d’erreurs Firefox, ça pourrait être résolu avec un serveur local (cd /tmp && touch index.html && sudo python3 -m http.server 80) sauf pour celles affichées en https (ce qui est normal) ;
  • moins de publicités bloquées, le filtre utilisé doit être plus permissif que celui d’AdBlock ;
  • en application sur tous les navigateurs à la fois :-).

Ce n’est donc pas l’idéal non plus, il faudra que je teste uBlock à l’occasion.

[Biologeek] Automatisation et topographie

Publié le 2015-01-20 11:00:00

David Mentré réagissait par mail à ma précédente note sur le régulateur de consommation (vous êtes d’ailleurs invités à le faire pour l’instant, je ne sais pas encore si je vais ouvrir la liste de diffusion aux notes).

« régler la vitesse entre 105 et 120 sans dépasser les 5 litres aux 100 kilomètres »

Bonne idée. Mais les accélérations rendraient cela probablement impossible (car trop de consommation). Et même si c’est possible, cela aurait probablement des impacts sur la sécurité (accélération impossibles), même si on peut envisager des débrayages automatiques en cas d’appui violent sur une pédale (comme pour les régulateurs actuels).

« Au passage, je ne comprends pas qu’il puisse y avoir une telle diversité dans les formes de voitures alors qu’il ne devrait y en avoir qu’une par catégorie dont l’aérodynamisme est optimal… »

Ce serait un peu monotone non ? Je ne suis pas spécialement pour la société de consommation actuelle, mais un soucis écologique n’empêche pas design et originalité.

Considérant que le GPS de ma voiture connait la topographie du trajet ainsi que les limitations de vitesses, il est possible qu’il arrive à avoir des accélérations raisonnées (plus longues, plus utiles aussi, prise d’élan, etc).

Pour ce qui est du design et de l’originalité, je suis persuadé qu’il y a déjà bien à faire sans avoir à modifier la forme (habillage et éclairage par exemple mais aussi interactions entre véhicules proches).

[sciunto] Don du mois : archlinux

Publié le 2015-01-19 23:00:00

Je trouve intéressante l'idée de Sam et Max de présenter les organisations pour lesquelles on a donné quelques euros (il n'y a pas de petit don). Je me lance donc aussi dans l'idée.

Ce mois-ci, ce fût archlinux, $5. Les raisons sont les suivantes :

  • Grande qualité et rapidité des mises à jour, je n'ai jamais eu de problème majeure, au pire quelques petits désagréments qui se sont résolus très vite.
  • Wiki clair et à jour, on y trouve beaucoup d'informations pertinentes et de qualités.
  • Forum agréable, mes rares questions ont trouvé réponse, les dev de la distribution prennent le temps de répondre.
  • Enorme choix de paquets, notamment grâce à AUR auquel je participe. Pouvoir faire mes propres paquets est une raison qui motive mon choix pour cette distribution.
  • J'utilise cette distribution depuis 4 ou 5 ans maintenant. L'installation n'est faire qu'à l'achat de ma machine.
  • J'ai la dernière version de tous les composants, je ne me pose aucune question lorsque j'utilise une lib ou un soft pour mon travail.

Je donne donc à archlinux pour cette satisfaction quotidienne.

Pour donner à archlinux.

[Biologeek] Squatting et transit

Publié le 2015-01-19 11:00:00

Quand je vois l’impact de pratiquer le squat sur mon transit, je me dis qu’il n’y a pas que du bullshit (haha) dans ce type de produits. Science. It works, bitches.

[Biologeek] Améliorer un produit

Publié le 2015-01-18 11:00:00

Your job is to improve our product for our users. If you want to get technical about it, your job is to improve our product for our users in a way that improves the key metrics of the company. But honestly, you don’t always have a lot of control over that second bit. You do, however, have an enormous amount of control over the first bit!

Your Job Is Not to Write Code (cache)

C’est la raison pour laquelle j’ai du mal à me rapprocher de tous ces mouvements craftsmanship qui consistent à se regarder le nombril. Votre code est beau, testé et déployé dans la minute. Soit. Et il sert à quoi au fait ?

[Biologeek] Effacez mes (méta-)données

Publié le 2015-01-17 11:00:00

Mais ce qui constitue la vraie nouveauté, l’information principale du programme PRISM et de ses suites, c’est que l’information recherchée n’est pas ce que nous disons, mais à qui nous le disons. Le contenu de nos conversations reste intéressant bien sûr (surtout pour les entreprises qui ont intérêt à tout savoir de nos vies), mais pas tellement pour les états. Ce que veulent les états, c’est tout savoir de nos réseaux.

[…]

C’est pour cette raison que j’ai beaucoup de mal à supporter les réponses habituelles à La Grande Question du Je N’ai Rien À Cacher. Parce que la question n’est plus « pourquoi doit-on se protéger », mais bien « pourquoi doit-on protéger ceux avec qui on échange ».

Rien à cacher (cache)

C’est une requête que je souhaite faire depuis longtemps à mes correspondants : veuillez effacer nos échanges s’ils ont eu lieu sur des plateformes comme Gmail, Twitter (incluant DM) ou n’importe quel service centralisé. Ces échanges ne servent plus qu’à des algorithmes qui nous profilent tous les deux. Merci.

[Biologeek] ★ Formations et explorations

Publié le 2015-01-16 11:00:00

Je trouve que les formations techniques traditionnelles apportent très peu de valeur. Se retrouver entre 4 murs pendant 7/8h sur 4 jours n’apprend pas grand chose, ni sur la techno, ni sur ses pairs. Au mieux cela donne des pistes qu’une personne très motivée pourra explorer par la suite. Seule. En essayant de se raccrocher à un support de cours forcément insuffisant.

Partant de ce constat, partagé par les membres de l’équipe, on explore différents formats. Vincent teste les formations en immersion (la première est à Naples début mars), Stéphane cherche des lieux pour accueillir des formations itinérantes a.k.a. WalkingDev et pour ma part je souhaite explorer les formations continues. J’ai pu observer les bénéfices de travailler sur un temps plus long :

  • Les concepts peuvent être intégrés entre les sessions, il n’est pas impératif de tout comprendre immédiatement. Cela demande une plus grande implication de la part des participants mais les résultats sont là.
  • Les problèmes concrets sont rencontrés, on ne reste pas confinés à des exemples théoriques ou des problématiques tirées de ma propre expérience, il s’agit de discuter de contraintes propres à chaque participant.
  • La formation est réajustée plus facilement en fonction des besoins, cela donne une certaine flexibilité d’une séance sur l’autre pour s’adapter en fonction des niveaux et des appétences.
  • L’étalement dans le temps rend la répétition moins fastidieuse, et la répétition (combinée à la pratique) reste la base de l’apprentissage. Elle rend possible les interactions entre participants sur la durée pour progresser ensemble.

A priori, le coût d’une telle formation n’est pas plus élevé qu’une formation ordinaire. Ce ne sont plus 4 jours mais 8 demi-journées réparties sur 2 mois par exemple. Reste la problématique de la logistique car il est plus simple de trouver une salle sur un temps court et qu’il est plus économique (et écologique) de limiter les déplacements aussi. La seule réponse que j’ai à cela est de travailler avec des petits groupes qui ne nécessitent pas d’avoir forcément une salle dédiée et de rester sur des déplacements locaux.

Qui serait motivé et par quoi ? Je peux me déplacer sur Paris, Lyon, Marseille, Montpellier ou autour d’Arles. Je peux transmettre/partager sur Python/Django (avancés), HTML5/CSS3/ES6 (basiques), Performances web (mobile), Workflows de travail (tactique) et Lean (stratégique). L’idéal serait une ou deux petites équipes qui souhaitent améliorer la qualité de leurs produits ou monter en compétence sur une technologie. Je reste ouvert à d’autres propositions.

[Biologeek] Esthétique et API

Publié le 2015-01-16 11:00:00

Je n’ai finalement pas pu résister à une réécriture partielle de mon outil dans le but d’avoir une API plus jolie tirant partie des dernières possibilités de fabric :

$ fab -l
Available commands:

    generate_all     GENERATE ALL THE THINGS!!! WARNING: boolean param.
    caches.generate  (Re)generate caches MD files into HTML files.
    caches.new       Cache the given `url` into a MD and a HTML file.
    family.generate  Generate the family history.
    notes.generate   Generate notes and archives for the stream.
    notes.new        Generate the template file to post a note.
    notes.publish    Publish the daily note after generating the feed.
    pages.generate   Generate all static pages.
    posts.generate   Generate posts and archives for the blog.
    posts.publish    Publish the article after generating the feed.
    server.commit    Add/rm files and then commit with the `message`.
    server.deploy    Push/pull the repository from the production server.
    server.errors    Display latest 200 errors lines from production.
    server.infos     Display infos (mail+web) about disk usage in prod.
    server.log       Display access logs continuously from production.

Pour initier cette note :

$ fab notes.new:"Esthétique et API"
[larlet@ssh.alwaysdata.com] Executing task notes.new
[localhost] local: open -a "iA Writer" "larlet.fr/david/stream/2015/01/16/index.md"

Done.

Pour la déployer :

$ fab notes.publish
[larlet@ssh.alwaysdata.com] Executing task notes.publish
Done: http://larlet.dev:8089/david/stream/2015/
Done: http://larlet.dev:8089/david/
Feed:  Livre et diffusion (2015-01-07)
Feed:  Cours IUT : jQuery et Bonus (2015-01-06)
Feed:  Publier, enseigner et cultiver (2015-01-03)
Feed:  Rétrospective Mozilla (2014-12-27)
Feed:  Père Noël (2014-12-22)
Feed: Acheter des polices (2015-01-15)
Feed: Sadapter à la luminosité ambiante (2015-01-14)
Feed: Régulateur de consommation (2015-01-13)
Feed: Teenagers, AirDrop et P2P (2015-01-12)
Feed: Code et écriture (2015-01-11)
Feed: Devenir conférencier (2015-01-10)
Feed: Unanimisme émotionnel (2015-01-09)
Feed: Kilian Jornet et Aconcagua (2015-01-08)
Feed: Bouncer IRC et backlog (2015-01-07)
Feed: Résister à la généralisation (2015-01-06)
Feed: Cacher le Web (2015-01-05)
Feed: Illettrisme technologique (2015-01-04)
Feed: Écoutés en 2014 (2015-01-03)
Feed: Économie de partage vs. économie de location (2015-01-02)
Feed: Publication quotidienne (2015-01-01)
[localhost] local: hg addremove
adding larlet.fr/david/stream/2015/01/15/index.html
adding larlet.fr/david/stream/2015/01/15/index.md
[localhost] local: hg ci -m "Add new note"
[localhost] local: hg push
pushing to ssh://hg@bitbucket.org/david/larlet.fr
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 5 changes to 5 files
[larlet@ssh.alwaysdata.com] run: hg pull -u -R /home/larlet/www
INFO:ssh.transport:Connected (version 2.0, client OpenSSH_5.5p1)
INFO:ssh.transport:Authentication (publickey) successful!
INFO:ssh.transport:Secsh channel 1 opened.
[larlet@ssh.alwaysdata.com] out: pulling from ssh://hg@bitbucket.org/david/larlet.fr
[larlet@ssh.alwaysdata.com] out: searching for changes
[larlet@ssh.alwaysdata.com] out: adding changesets
[larlet@ssh.alwaysdata.com] out: adding manifests
[larlet@ssh.alwaysdata.com] out: adding file changes
[larlet@ssh.alwaysdata.com] out: added 1 changesets with 5 changes to 5 files
[larlet@ssh.alwaysdata.com] out: 5 files updated, 0 files merged, 0 files removed, 0 files unresolved

Done.
Disconnecting from ssh.alwaysdata.com... done.

Une doc. Deux lignes. Futile ? Certainement, mais c’est comme un changement de police, ça contribue à l’amélioration d’une expérience d’écriture en la rendant plus fluide.

[Biologeek] Acheter des polices

Publié le 2015-01-15 11:00:00

Je connaissais le livre Practical Typography de Matthew Butterick depuis un moment et j’apprécie vraiment le travail qu’il a fait à la fois en terme de fond et de forme. Aussi lorsque j’ai voulu le remercier il m’a semblé naturel de me tourner vers ses polices comme il le recommande. Vous pouvez retrouver Equity sur ce site et Triplicate pour l’histoire familiale.

Je suis allé plus loin en utilisant Equity pour mon éditeur de textes longs, mes mails et mon agrégateur. Puis Triplicate pour mon éditeur de code, mon terminal et IRC (il y a une variante pour le code). Je suis vraiment très satisfait du résultat.

P.S. : J’ai découvert que les typographes sont des perfectionnistes lors des rencontres de Lure… et à quel point la réalisation d’une police demande du travail.

Mise à jour : à la demande de Nicolas Charlery, une capture avec Equity et une autre avec Triplicate.

[Biologeek] S’adapter à la luminosité ambiante

Publié le 2015-01-14 11:00:00

Ambient light detection is one of those features that looks great in simple demos, but which we struggle to put to practical use. It’s not new – many satnav systems automatically change the contrast for driving at night or in tunnels, and our laptops may alter the screen brightness or keyboard backlighting to better adapt to our surroundings. Using web technologies we can adapt our presentation to be better suited to ambient light levels.

Making Sites More Responsive, Responsibly (cache)

Je vous ai déjà parlé de f.lux (prenez 2 minutes pour lire les conditions d’utilisation quand même) pour adapter la luminosité/le rendu de votre écran. Il se trouve qu’il existe aussi des plugins pour changer le thème de votre éditeur. Ça me donne envie d’essayer les événements de lumière ambiante en JavaScript (uniquement disponible sous Gecko/Firefox à ce jour).

[Biologeek] Régulateur de consommation

Publié le 2015-01-13 11:00:00

J’ai la possibilité de régler la vitesse de ma voiture de manière fixe. J’aimerais pouvoir rendre la vitesse variable mais y adjoindre une notion de consommation fixe. Par exemple : régler la vitesse entre 105 et 120 sans dépasser les 5 litres aux 100 kilomètres.

Au passage, je ne comprends pas qu’il puisse y avoir une telle diversité dans les formes de voitures alors qu’il ne devrait y en avoir qu’une par catégorie dont l’aérodynamisme est optimal…

[cubicweb] CubicWeb roadmap meeting on January 8th, 2015

Publié le 2015-01-12 16:28:00

The Logilab team holds a roadmap meeting every two months to plan its CubicWeb development effort. The previous roadmap meeting was in November 2014.

Here is the report about the January 8th, 2015 meeting.

Christophe de Vienne (Unlish) and Aurélien Campéas (self-employed) joined us to express their concerns and discuss the future of CubicWeb.

Versions

Version 3.18

This version is stable but old and maintained (current is 3.18.7).

Version 3.19

This version is stable and maintained (current is 3.19.8).

Version 3.20

This version has been released a few days ago. It has not been deployed on production systems yet.

Its main features are:

  • virtual relations: a new ComputedRelation class can be used in schema.py; its rule attribute is an RQL snippet that defines the new relation.

  • computed attributes: an attribute can now be defined with a formula argument (also an RQL snippet); it will be read-only, and updated automatically.

    Both of these features are described in CWEP-002, and the updated "Data model" chapter of the CubicWeb book.

  • cubicweb-ctl plugins can use the cubicweb.utils.admincnx function to get a Connection object from an instance name.

  • new 'tornado' wsgi backend

  • session cookies have the HttpOnly flag, so they're no longer exposed to javascript

  • rich text fields can be formatted as markdown

  • the edit controller detects concurrent editions, and raises a ValidationError if an entity was modified between form generation and submission

  • cubicweb can use a postgresql "schema" (namespace) for its tables

  • cubicweb-ctl configure can be used to set values of the admin user credentials in the sources configuration file

For details read list of tickets for CubicWeb 3.20.0.

We would have loved to integrate the pyramid cube in this release, but the debian packaging effort needed by the pyramid stack is quite big and is acceptable if we target jessie only (at decent price).

Version 3.21

For now, the roadmap for 3.21 is still the complete removal of the dbapi, the merging of Connection and ClientConnection.

Integrate the pyramid cube to provide the pyramid command if the pyramid framework can be imported.

Integration of CWEP-003 (FROM clause for RQL) and CWEP-004 (cubes as standard python packages) is being discussed.

Version 4.0

We expect to accelerate development of CubicWeb 4, which exact roadmap is still to be discussed, but we may already want:

  • be pyramid-based (remove twisted, auth management, etc.),
  • do not have anything left of old dbapi and ClientConnection,
  • integrate squareui as main (and only) web-ui "template" or remove web generation (almost) completely from cubicweb-core and provide it only through the cube system.

Agenda

Next roadmap meeting will be held at the beginning of march 2015 at Logilab. Interested parties are invited to get in touch.

Open Discussions

Refactoring the documentation

Christophe de Vienne suggested to completely revamp the documentation and intends to lead this effort.

Training material

Aurélien Campéas asks if Logilab would be willing to share its training material under a free license to help interested parties organize and sell trainings.

Towards making squareui the default rendering engine for cubicweb

We are expecting to be able to use squareui/bootstrap as "rendering engine" for our forge applications (like http://www.cubicweb.org and http://www.logilab.org) as soon as possible. However to achieve to goal, there are still too many "visual bugs", some of which may require a discussion.

Among others:

  • put the ctxtoolbar component in the <nav> div
  • each box component should have an icon (what API for this?)
  • we cannot easily make the left column of the main template responsive-aware (requires to change the html flow), so it's probably best to take inspiration from things like http://wrapbootstrap.com/preview/WB0N89JMK
  • facet boxes are a mess, there is no simple solution to have a "smart layout"

Migration

  • AppObjects should not be loaded by default
  • Have a look at Alembic the migration tool for SQLAlchemy and take inspiration from there.

[Biologeek] Teenagers, AirDrop et P2P

Publié le 2015-01-12 11:00:00

The most-used app during school hours with these kids at their New Jersey school isn’t Snapchat or Instagram. In fact, it’s not an app at all. These teens are now using AirDrop, a feature built into their iPhones, to send pictures to each other during class. When I asked why they didn’t just use Snapchat instead, since it’s essentially the same thing, I was informed that they’re actually very different.

AirDrop is superior, my cousin declared, because unlike with Snapchat, you don’t need anyone’s username to send something to them. She also said that this is what makes AirDrop better than texting: you don’t need anybody’s phone number. As long as you have AirDrop enabled on your phone, anyone nearby can send you a file. Plus, she told me some schools have blocked Snapchat, so AirDrop is essentially a workaround. And unlike Snapchat, where you’re limited to pictures and video taken in the app, with AirDrop you can send anything you already have on your phone.

Teens Using Apple Airdrop Instead Of Snapchat And Instagram (cache)

Intéressant de voir les ados innover et finalement être les premiers à utiliser le réseau en pair à pair. Génération A(centrée) ? C’est assez éloigné de la compartimentation qui opère chez les plus vieux (cache).

[Biologeek] Code et écriture

Publié le 2015-01-11 11:00:00

Software engineers should write because it promotes many of the same skills required in programming. A core skill in both disciplines is an ability to think clearly. The best software engineers are great writers because their prose is as logical and elegant as their code.

Software engineers should write (cache)

Je vois souvent cet argument et je pense qu’il est incomplet. Chacune de nos activités a des répercussions sur les autres. Je code différemment depuis que je fais la cuisine. Je conduis différemment depuis que je fais du sport. J’écris différemment depuis que je suis père. Nous sommes des systèmes complexes (qui essayent de s’interfacer avec d’autres systèmes complexes).

[Biologeek] Devenir conférencier

Publié le 2015-01-10 11:00:00

Et je dis cela parce qu’en tant que conférencier, on partage souvent nos bonnes expériences, mais rarement ce que nous ressentons qui était mauvais. Un conférencier se met en danger, pas pour sa réputation, mais bien par la conscience de ne pas délivrer quelque chose qui représente une matière que l’on peut transmettre et qui évoluera au delà de ce que l’on peut imaginer. Les échecs sont un bon moyen de se rappeler d’être au plus proche de son sujet. Que ce sujet soit utile d’abord à l’audience.

Le temps d’un précipice (cache)

J’avais commencé une intervention sur ce que j’avais appris à chacune de mes interventions (so meta!) un peu avant la publication du billet de Karl. Et ça me trotte dans la tête et dans les onglets depuis. Une sorte de FailConCon mais ça sonne tout de suite moins bien en français. Il y aurait beaucoup à partager sur le sujet, peut-être pour HorsWeb ? #VaporCon

[Biologeek] Unanimisme émotionnel

Publié le 2015-01-09 11:00:00

Mais cet unanimisme émotionnel, quasiment institutionnel pour ceux qui écoutent les radio de service public et lisent les grands media, j’ai l’impression qu’on a déjà essayé de me foutre dedans à deux reprises. La société française est complètement anomique, mais on continue à se raconter des histoires.

"Je ne suis pas Charlie. Et croyez-moi, je suis aussi triste que vous." (cache)

La seule analyse depuis 2 jours qui me semble intéressante. Et elle ne vient pas d’un journaliste.

[Biologeek] Kilian Jornet et Aconcagua

Publié le 2015-01-08 11:00:00

I suffered from altitude sickness all the way to Plaza de Mulas. I kept losing my balance, my muscles seemed unwilling to follow my head and made me fall. At Plaza de Mulas I stopped for twenty minutes. I had something to eat, hydrated well and I gradually began to feel a bit better. Ahead was the descent to Horcones, where I was able to run well and ended up making good time.

ACONCAGUA, KILIAN JORNET’S NEW RECORD (cache)

Lorsqu’on lit le récit de Kilian et que l’on connait ses capacités physiologiques, on peut se demander à quel point il frôle ce qu’il est humainement possible de faire. Ça donne des idées (cache)…

[Biologeek] ★ Livre et diffusion

Publié le 2015-01-07 11:00:00

Car si l’on y réfléchit un instant, un ebook n’est rien d’autre qu’un mini-site web encapsulé pour être consulté en mode offline, rien de plus. Et c’est notre besoin de jouer à la marchande « en échange de ton argent, je te transmets un fichier tangible et stockable » qui nous a propulsés droit dans le mur, et poussés à inventer des solutions toujours moins pratiques, plus compliquées et plus fermées. Alors que le web était là depuis le début, et qu’il nous tendait les mains. Nous avons réinventé le web, en moins bien.

Le livre numérique est mort : vive le livre numérique (cache)

Suite à mes envies de publications, je me renseigne sur des projets comme LeanPub ou GitBook en évitant d’écrire le mien. Au-delà des outils, il y a la question de la plateforme de diffusion, cruel dilemme lorsque l’on a les compétences techniques pour le faire chez soi.

I should make sure to negotiate permission to make the book available for free on my web site. He told me that compared with the effort that you put into the book, the money you get back is insignificant. So if you write a book it should not be because you want to make a lot of money from it but because you have an idea that you want to present to the world. And as an author, you owe it to yourself to get your idea in front of as many people as possible.

Why my book can be downloaded for free (cache)

J’ai suivi avec grand intérêt les aventure dans l’auto-édition de Ninja-Squad (cache) (aux limites de la légalité (cache)) ou de STPo pour sa BD (cache). Je suis en pleine réflexion et si vous avez des retours qui ne soient pas des success stories ça m’intéresse.

[Biologeek] Bouncer IRC et backlog

Publié le 2015-01-07 11:00:00

Connection to david.typhon.net closed.

J’essaye de me séparer de tout ce qui demande mon attention numérique de manière récurrente avec un faible rapport signal/bruit (coucou Twitter !). Mon serveur Typhon gracieusement mis à disposition par les fondateurs a été arrêté, l’occasion de voir si je peux me passer de bouncer IRC et de backlog.

[AFPy-Nantes] Premier meetup Python 2015 !

Publié le 2015-01-06 23:00:00

Pythonistes nantais, attaquons l'année 2015 comme il se doit avec un meetup dès la fin de ce mois de janvier, le 27, toujours à partir de 19h à la Cantine.

Pour partir du bon pied, deux présentations vous seront proposées :

  • Pyramid : Pyramid est un framework python léger et pleinement compatible WSGI. Nous présenterons les principaux concept du framework. Création de projet, dispatching vs traversing, rendu de template, sécurité, événements, intégration d'application WSGI tierce.
  • Générateurs & co-routines : Durant cette présentation il sera question du langage Python en tant que tel et en particulier de deux concepts voisins : les générateurs, qui permettent une expression "paresseuse" et les co-routines, qui introduisent un style de programmation relativement méconnu. Après une présentation des aspects syntaxiques, nous pourrons échanger sur les cas d'utilisation possibles de ces concepts.

Nous espérons donc vous compter nombreux parmi nous le 27 janvier à la Cantine, ainsi pour le verre qui s'en suivra probablement :).

Si vous avez des questions ou des remarques concernant nos meetups, rejoignez-nous sur le chan IRC de l'AFPy Nantes ou inscrivez vous sur la liste de diffusion . :)

À bientôt !

[Biologeek] Résister à la généralisation

Publié le 2015-01-06 11:00:00

“Wow, I can simplify this; if I just generalize this class or build this Framework it would be so much easier to accomplish what I want to do!”. It happened all the time. I would write Game Engines when I was trying to write games, or forum software when I was trying to start a forum. […] I loved writing beautiful, generic code, that could easily be re-used in the future.

I kept doing this for a long time. I kept generalizing stuff, I kept trying to make things generic. And eventually I learned, the hard way, the truth about generalization: It is (almost always) a waste of time.

On Generalization (cache)

Le fichier fabric qui génère l’intégralité de ce site fait maintenant plus de 1000 lignes. C’est énorme vu la concision que permet Python. Mais c’est presque avec nostalgie que j’évite de refactoriser tout ça. Il est le témoin de mes errements et de mes erreurs, de mes contradictions et de mes habitudes qui évoluent. Et il me retient surtout de le partager et de subir le poids de la maintenance.

[Biologeek] ★ Cours IUT : jQuery et Bonus

Publié le 2015-01-06 11:00:00

As I’ve mentioned (many times) before, this blog is not about bad-mouthing jQuery. jQuery is, without a doubt, ubiquitous in the world of web development. In the earlier days of web development, jQuery was required to smooth out the significant implementation differences and bugs found in various browsers when dealing with the DOM and the Web API as a whole. Also, the Web API was quite primitive at the time, in some respects, and jQuery helped to make development a bit more intuitive.

Browsers, and the Web API, have come a long way in the last several years. You can do a lot without jQuery, and I have mostly avoided jQuery in my new projects for the last several years. The jQuery approach may take less keystrokes, or look a bit more elegant in some cases. That’s fine, but the point of this blog isn’t to help you reduce the number of keystrokes, or write more beautiful code.

You Don’t Need jQuery! (cache)

Quand il n’y en a plus, il y en a encore :-). On était passés un peu rapidement sur jQuery la dernière fois alors les étudiants en redemandent. Suite à une sondage à la représentativité douteuse sur Twitter, je me suis rendu compte que jQuery n’était plus utilisé que pour quelques raisons :

  1. la compatibilité IE8
  2. le support du code existant et de sa qualité inégale selon les intervenants
  3. l’inclusion par défaut dans Bootstrap

J’exclus la première raison vu que j’enseigne pour aujourd’hui et demain. Je mets de côté la seconde car il faudrait les mettre en situation avec du code en production et je peux difficilement gérer ce type d’interactions à 24. Il reste l’intégration de morceaux de code existants et/ou celui de Bootstrap. C’est assez éloigné d’un carousel ou d’une galerie d’images comme ils me l’avaient demandé mais ça me semble plus pertinent (et de toute façon ça existe maintenant en vanilla-js).

Partons sur un exemple concret à base de gabarits sous Creative Commons et d’images libres de droits, ça changera des images récupérées sous Google Images et du copier/coller d’anciens projets. Premier exercice, intégrer jQuery dans une maquette existante. Deuxième exercice, animer une partie de manière pertinente pour l’utilisateur. Troisième exercice, vérifier que c’est beaucoup plus compliqué à faire en CSS ou JS (c’est le moment d’introduire You Don’t Need jQuery! de manière très subtile !). Quatrième exercice, explorer Bootstrap et ce qui utilise réellement jQuery dans les différents composants/animations proposés et la notion de plugins.

Ce sera aussi l’occasion de reparler de la correction précédente de l’auto-évaluation et des notes qui en ont découlées. Donner quelques derniers conseils pratiques notamment sur les styleguides. Et pour terminer ? Une petite note récente du W3C au sujet des différences HTML4/HTML5 ça peut toujours servir.

Il est temps qu’ils aillent faire leurs propres expériences, j’espère les recroiser.

[Biologeek] Cacher le Web

Publié le 2015-01-05 11:00:00

J’ai entrepris de mettre en cache les articles (sans indexation, via robots.txt + nofollow) dont je propose une citation ou qui me semblent importants pour la compréhension de mes propos. Sans me prendre la tête avec les histoires de copyright et compagnie, par contre j’enlève immédiatement sur simple demande. Je n’ai pas encore tranché sur ce que je vais faire des images distantes. Si ça marche bien, je m’occuperai des 48 articles de 2014.

[Biologeek] Illettrisme technologique

Publié le 2015-01-04 11:00:00

Par contre, la croyance populaire comme quoi toute personne de moins de 18 est un magicien de l’informatique est tout simplement fausse. Ils savent utiliser certains logiciels, particulièrement des applications web. Ils savent utiliser Facebook et Twitter. Ils peuvent utiliser YouTube et Pinterest. Ils savent même utiliser Word et PowerPoint et Excel. Par contre, demandez-leur de réinstaller un système d’exploitation et ils sont perdus. Demandez-leur de changer leur disque dur ou leur mémoire vive et ils font une crise d’angoisse. Demandez-leur ce que veut dire https et pourquoi c’est important, et ils vous regarderont comme si vous leur aviez parlé Klingon.

Les gamins ne savent pas utiliser les ordinateurs… Voici pourquoi ça devrait vous inquiéter. (cache)

Chaque réunion familiale me permet de vérifier cela. Chaque cours à l’IUT aussi.

Une idée : quand ils atteignent onze ans, donnez leur un fichier texte avec 10.000 clés WPA2 et dites leur que la vraie est cachée dans le lot. Vous allez voir qu’il ne leur faudra pas longtemps pour découvrir Python ou Bash.

Ibid.

Bonne idée :-).

[Biologeek] ★ Publier, enseigner et cultiver

Publié le 2015-01-03 11:00:00

One more question before we get going: who here has started to write something, maybe about web development or design, and then encountered problems?

Because writing is difficult, isn’t it? There’s so much to consider when you’re writing words to convey something to someone else. But writing is difficult like parenting is difficult, or like playing a musical instrument is difficult, or like web design is difficult: we can all learn how to do it, given enough time to practice, and there’s always room for improvement, and you’re going to get it wrong some of the time.

The web is read/write

Publier

J’ai commencé à publier un flux en dehors de Twitter, ce n’est pas nouveau mais ça rejoint un mouvement de micro-décentralisation. Il me suffit de 2 commandes shell/fabric pour me décharger cognitivement, la première pour générer le gabarit à partir des paramètres et l’ouvrir dans iA Writer, la seconde pour compiler, commiter et publier. Cela me semble suffisamment simple pour que je puisse le faire quotidiennement.

J’ai aussi des projets d’écritures plus longues qui ne tiennent pas forcément dans un billet de blog. J’aimerais pouvoir concrétiser cela même si je suis encore très incertain sur la forme que ça pourrait prendre.

Enseigner

Très heureux d’avoir pu donner une vingtaine d’heures de cours à l’IUT d’Arles en 2014, j’ai rempilé pour une trentaine en ce début d’année. Je prends vraiment beaucoup de plaisir à transmettre et à échanger avec des néophytes, cela me permet de revoir les bases et de repenser certaines de mes pratiques. J’en profite pour me mettre sérieusement à CSS 3 et ECMAScript 6.

Je souhaite aussi aller plus loin dans l’enseignement car je me renseigne beaucoup sur l’instruction en famille et cela requiert certaines qualités pédagogiques.

Cultiver

Cultiver du positif. Faire germer les petites graines de bonheur et de joie qui croisent ma route. Je me considère être actuellement en environnement hostile et violent qui me laisse 2 options : investir du temps et de l’énergie pour transformer des sourires ou fuir et s’exiler dans un lieu plus propice à la bienveillance. Je ne vous cache pas que la tentation est grande de rejoindre un environnement avec moins de haine au quotidien. Pour l’instant, je vais essayer de pousser les initiatives positives qui tendent à changer de paradigme et de société.

Dans les épisodes précédents

[Biologeek] Écoutés en 2014

Publié le 2015-01-03 11:00:00

Alt-J, Agnès Obel, Aphex Twin, Asaf Avidan, Bibio, Calexico, Caribou, Clark, Daft Punk, Détroit, Django Django, Emilie Simon, Grimes, James Vincent McMorrow, Jamie xx, LCD Soundsystem, Lisa Simone, Little Dragon, London Grammar, Marianne Faithfull, Max Richter, Melody Gardot, Metronomy, Mogwai, Mount Kimbie, Rodriguez, Tame Impala, Todd Terje, Woodkid.

[raspberry-python] L'étonnant Python: à grande échelle

Publié le 2015-01-02 23:30:00

Perception

De temps a autres, j'entends dire des choses complètement ridicules:

"Ah oui vous utilisez Python. Je connais, c'est un langage de programmation pour écrire des petits scripts, ce n'est pas utilisable à grande échelle.

(En fait il y avait 2 autres points encore plus ridicule dans cette conversation, j'y reviendrai plus tard)

Réalité

Une connaissance travaille chez Bank Of America sur le programme Quartz. Ils sont passes de 0 a 5000 développeurs Python et des millions (plus de 10) de lignes de code en quelques années seulement. On parle de la même échelle pour YouTube. Les projets de 10 millions+ de lignes de code Python sont rares bien sur, mais ce n'est pas du a une raison technique, mais plutôt parce que l'on accomplis beaucoup en peu de lignes de code.

François
@f_dion

[Biologeek] Économie de partage vs. économie de location

Publié le 2015-01-02 11:00:00

the “sharing economy” was outed as the “rental economy.” nobody is sharing anything. people are making money, plain and simple. technology has made renting things (even in real time) as simple as it made buying things a decade ago.

Source

Cet article et sa suite sont culturellement intéressants. Capitalisme, Web et Oncle Sam.

[Biologeek] Publication quotidienne

Publié le 2015-01-01 11:00:00

J’inaugure une nouvelle forme de publication courte qui est destinée à remplacer mon usage de Twitter. L’idée est de continuer à partager des liens et des idées sans pour autant abreuver une machine publicitaire. Le format restera court et un seul article devrait être publié par jour. C’est expérimental.

[Biologeek] Rétrospective Mozilla

Publié le 2014-12-27 11:00:00

But really the details of this are not that important. What I believe is really, really important is the ability to critically examine your job and projects and examine their worth.

What normally happens is that you get a group of people and tell them to work on project X. They will iterate through features and complete features. And repeat and keep going. And if you don’t stop at some point and critically examine what is going on, it will keep repeating. People will find new features, new enhancements, new areas to add to the project. Just as they have been trained to do so. And the project will keep growing.

That’s a perfectly normal thing for a team to do. It’s harder to call a project done, the features complete and realize that there might be an end.

Self Examination

Timeline

Ce qui s’est bien passé

  • la montée en compétence ET en humilité sur Python et JavaScript et la découverte de l’intérêt des revues de code, je n’envisage plus de travailler sans ;
  • la flexibilité qui m’a permis de bosser quand je voulais et combien je voulais pour avoir le temps de m’occuper de mon fils souvent au cours de la dernière année (et de payer au moins un salaire) ;
  • l’adrénaline liée au fait de travailler sur un site très populaire (~1 milliard de requêtes/jour) et la contrainte de performance associée ;
  • l’équipe francophone pour travailler à 3 sur le site des add-ons, parfois en pair-programming distribué, parfois en présence dans des coins sympas.

Ce qui pourrait être amélioré

  • le manque de collaboration, c’est vraiment ce qui m’a choqué en arrivant dans une équipe distribuée (attention cela s’applique uniquement aux équipes par lesquelles je suis passé, pas forcément toutes les équipes Mozilla) ;
  • la communication/stratégie interne, je ne peux pas dire grand chose publiquement là-dessus à part ce qui fuite mais certains épisodes ont été clairement décevants ;
  • l’absence de stratégie claire sur les projets qui nuit grandement à la motivation nécessaire à tout travail ;
  • mon anglais, j’aurais pu profiter de cette période pour que ma communication dans cette langue soit plus fluide.

Actions pour la suite

  • éviter les projets complexes (un billet est à venir là-dessus) ;
  • éviter les projets sans stratégie bien définie ;
  • réussir à travailler sur un projet commun avec scopyleft.

Au final c’était vraiment une très bonne expérience car cela m’a permis de réaliser à quel point je n’étais pas fait pour travailler dans une entreprise de cette taille. J’ai pu expérimenter de nouvelles technologies et de nouvelles façons de collaborer. J’ai pu confirmer certains points sur la relation qu’ont les geeks au travail qui feront peut-être l’objet de futurs billets.

PS : je redeviens disponible pour de nouvelles aventures via scopyleft si vous voulez que l’on travaille ensemble, je suis toujours motivé par des projets utiles et citoyens ainsi que la transmission de mes savoirs.

[carlchenet] Le Journal Du Pirate, nouveau média propulsé par un Logiciel Libre qui trouve sa place

Publié le 2014-12-22 23:00:00
Suivez-moi aussi sur Identi.ca  ou Twitter  ou Diaspora* Un peu plus d’une semaine après le lancement en grande pompe du Journal du Pirate, site d’infos participatif francophone inspiré de son grand frère américain Hacker News, nous revenons sur le parcours de ce nouveau média propulsé par un Logiciel Libre. Quelques statistiques intéressantes à nos yeux…

[AFPy-Nantes] Meetup Python du 23 décembre : boire un verre !

Publié le 2014-12-19 23:00:00

Ce mardi 23 décembre, nous proposons au pythonistas de Nantes de se retrouver pour prendre un verre.

Le rendez-vous est à 19h au Delirium Tremens, 19 allée Baco à Nantes.

Certains seront absents, le système de distribution du Père Noël semble-t'il repose sur Python (ce qui explique peut-être qu'il dépasse celui d'Amazon écrit en Perl !).

Joyeuses fêtes !

[afpyro] AFPyro à Lyon - mardi 16 décembre

Publié le 2014-12-16 00:00:00

Un Afpyro aura lieu le mardi 16 décembre à partir de 20h à l’Antre Autre - 11 rue Terme - 69001 Lyon.

Une présentation sur Sentry sera donnée. Sentry est un logiciel permettant de suivre les erreurs pouvant se produire dans vos applications.

L’Antre Autre est un lieu où nous pouvons discuter autour d’un verre, et, pour ceux qui le souhaitent, prendre un repas.

Pour se rendre à l’Antre Autre :

  • en métro : arrêt Hôtel de Ville
  • en bus : lignes C13 et C18 arrêt Mairie du 1er ou lignes 19, C14 et C3 à l’arrêt Terreaux
  • en vélo’v : stations Place Sathonay, Carmélites Burdeau, Place de la paix

[logilab] Generate stats from your SaltStack infrastructure

Publié le 2014-12-15 15:52:00

As presented at the November french meetup of saltstack users, we've published code to generate some statistics about a salstack infrastructure. We're using it, for the moment, to identify which parts of our infrastructure need attention. One of the tools we're using to monitor this distance is munin.

You can grab the code at bitbucket salt-highstate-stats, fork it, post issues, discuss it on the mailing lists.

If you're french speaking, you can also read the slides of the above presentation (mirrored on slideshare).

Hope you find it useful.

[sciunto] Champ de vitesse dans une mousse

Publié le 2014-12-13 23:00:00

J'ai récemment écrit un petit guide sur le tracking de bulles dans une mousse. A défaut de temps, voici donc un billet court plutôt que rien afin de référencer cette contribution. J'ai utilisé la bibliothèque Trackpy écrite en Python afin de tracker les bulles. Cependant, une étape supplémentaire d'identification a été nécessaire (car en dehors des clous des particules plus classiques) et j'ai utilisé scikit-image.

Le tuto a ainsi pour ambition de montrer la versatilité de trackpy pour des objets moins conventionnels. Il est disponible ici.

[AFPy Salt-fr] Compte rendu Salt Meetup Paris - novembre 2014

Publié le 2014-12-10 23:00:00

La communauté Salt s'est a nouveau réunie pour son meetup bi-mestriel autour de trois présentations. Voici un compte rendu (très court) pour vous renvoyer vers les références.

Utilisation de salt pour gérer des machines desktop sous windows et mac os.

Aurélien Minet de l'ENS Cachan nous a présenté son utilisation de salt dans la gestion de postes utilisateurs OS X et Windows.

Support de sa présentation

Création de statistiques pour une infrastructure salt

Arthur Lutz de Logilab nous a présenté un développement pour évaluer la distance entre l'état souhaité de son infrastructure salt et l'état réel.

Arthur Lutz

SaltPad

Boris Feld

Boris Feld de tinyclues nous a présenté une interface web pour piloter salt.

Conclusion

Merci à tinyclues d'avoir acceuilli et apporté à boire, ainsi qu'à Logilab pour les pizzas.

Pour le prochain meetup (en janvier), votez pour une date sur framadate et n'hésitez pas à inscrire une proposition de présentation ou de lieu sur le pad d'organisation.

[carlchenet] Site comme Hacker News en français : Le Journal Du Pirate

Publié le 2014-12-08 23:00:41
Suivez-moi aussi sur Identi.ca  ou Twitter  ou Diaspora* Avant tout l’adresse du site : Le Journal Du Pirate https://infos.mytux.fr Un site web comme Hacker News mais francophone propulsé par un Logiciel Libre, je trouve que ça manquait à la communauté francophone. C’est maintenant chose faite avec un site dérivé du moteur de Lobste.rs. Les sources…

[tarek] 5 work week tips

Publié le 2014-12-06 07:05:00

Our Mozilla work week just ended with an amazing evening. We had a private Mackelmore concert. Just check out Twitter with the #mozlandia tag and feel the vibe. example.

When they got on stage I must admit I did not know who Mackelmore was. yeah sorry. I live in a Spotify-curated music world and I have no TV.

At some point they played a song that got me thinking: ooohhh yeah that song, ok.

Anyways.

During some conversations a lot of folks told me that they where overwhelmed by the work week and har a very hard time to keep up with all the events. Some of them were very frustrated and felt like they were completely disconnected.

I went through this a lot in the past but things improved throughout the years. This blog post collect a few tips.

1. List the folks you want to meet

This one is a given. Before you arrive, make a list of the folks you want to meet and the topics you want to talk about with them.

Make that list short. 10, no more.

2. Do not code

This is the worst thing to do: dive into your laptop and code. It's easy to do and time will fly by once you've started to code. People that don't know you well will be afraid of disturbing you.

Coding is not something to do during your work weeks. If you need a break from the crowd that's the next tip.

3. Listen to your body

A work week is intense for your body. By the end of the week you will look like a Zombie and you will not be able to fully enjoy what's happening. If you are coming for a far place, the jetlag is going to make the problem worse. If you're a partygoer that's not going to help either. All the food and drinks are not really helping.

I've seen numerous folks getting really sick on day 3 or 4 because they had intensive days at the beginning of the event. It's hard not to burn out.

Some (young) folks are doing fine on this. I know I am not. What I did for the Portland work week was to skip everything on day 2 starting at 5pm, ate a soup and went to sleep at 8pm. Skipping on all the cookies and beers and goodies gives your body a bit of rest :)

That gave me the energy I needed for day 3.

4. Don't hang with your team all the time

You talk to those folks all the time. Meet other folks, check out other sessions, etc.

This is especially important if your native langage is not English. I got trapped many time by this problem: just hanging with a few french guys.

5. Walk away from meetings

Don't be shy of walking away from meetings that don't bring you any value. Walk out discretly and politely. You are not in a meeting to read hackernews on your laptop. You can do this at home.

People won't get offended in the context of a work week - unless this is a vital team meeting or something.

What are your tips?

[tarek] DNS-Based soft releases

Publié le 2014-12-06 05:30:00

Firefox Hello is this cool WebRTC app we've landed in Firefox to let you video chat with friends. You should try it, it's amazing.

My team was in charge of the server side of this project - which consists of a few APIs that keep track of some session information like the list of the rooms and such things.

The project was not hard to scale since the real work is done in the background by Tokbox - who provide all the firewall traversal infrastructure. If you are curious about the reasons we need all those server-side bits for a peer-2-peer technology, this article is great to get the whole picture: http://www.html5rocks.com/en/tutorials/webrtc/infrastructure/

One thing we wanted to avoid is a huge peak of load on our servers on Firefox release day. While we've done a lot of load testing, there are so many interacting services that it's quite hard to be 100% confident. Potentially going from 0 to millions of users in a single day is... scary ? :)

So right now only 10% of our user base sees the Hello button. You can bypass this by tweaking a few prefs, as explained in many places on the web.

This percent is going to be gradually increased so our whole user base can use Hello.

How does it work ?

When you start Firefox, a random number is generated. Then Firefox ask our service for another number. If the generated number is inferior to the number sent by the server, the Hello button is displayed. If is superior, the button is hidden.

Adam Roach proposed to set up an HTTP endpoint on our server to send back the number and after a team meeting I suggested to use a DNS lookup instead.

The reason I wanted to use a DNS server was to rely on a system that's highly available and freaking fast. On the server side all we had to do is to add a new DNS entry and let Firefox do a DNS lookup - yeah you can do DNS lookups in Javascript as long as you are within Gecko.

Due to a DNS limitation we had to move from a TXT field to an A field - which returns an IP field. But converting IP to integer values is not a problem, so that worked out.

See https://wiki.mozilla.org/Loop/Load_Handling#Service_Soft_Start for all the details.

Generalizing the idea

I think using DNS as a distributed database for simple values like this is an awesome idea. I am happy I thought of this one :)

Based on the same technique, you can also set up some A/B testing based on the DNS server ability to send back a different value depending on things like a user location for example.

For example, we could activate a feature in Firefox only for people in Connecticut, or France or Europe.

We had a work week in Portland and we started to brainstorm on how such a service could look like, and if it would be practical from a client-side point of view.

The general feedback I had so far on this is: Hell yeah we want this!

To be continued...

[AFPy-Nantes] Compte-rendu des conférences : Pélican et (i)Python

Publié le 2014-12-03 23:00:00

Un meetup tardif, dû à la PyConFr, centré sur deux présentations opposées en termes de technicité : une présentation d’un outil (presque) clés-en-mains, et un survol des possibilités de iPython dans la dataviz cartographique, ainsi que quelques bibliothèques utiles.

Pelican : le futur du web vintage

Intervenant : Damien Nicolas, Gordon

Principe

Pelican est un générateur de site statique écrit en Python initialement par Alexis Métaireau.

Le site est réalisé via un langage de template ensuite traduit en HTML. Le contenu généré peut ensuite être déployé sur un serveur sans configuration supplémentaire. Il n’y a donc pas d’applicatif sur le serveur.

Les avantages d’un tel système sont nombreux. D’abord la simplicité. Un simple éditeur de texte suffit pour écrire le contenu. Étant purement textuel, le contenu est facilement versionnable et recevoir/fournir un patch peut se résumer à un envoi de mail. L'absence d’applicatif côté serveur rend la configuration serveur aisée et la sécurité proche de la perfection : pas d’applicatif = pas de faille.

Bon évidemment, il y a quelques inconvénients. En terme de fonctionnalité d’abord, l’absence native de recherche ou de commentaire. Mais heureusement, il est possible via des extensions de remédier à ces problèmes. En revanche, la barrière à l’entrée est immuable. Pour faire du Pelican, il faut pouvoir écrire du RestructuredText ou du Markdown. Pour profiter pleinement de tout ça, il est bon de savoir invoquer une commande “make” ou “git push”. Plus que rébarbatif pour un néophyte.

En pratique

L’installation se fait comme n’importe quelle bibliothèque Python. On crée un environnement virtuel (e.g. via pyvenv en Python 3). On l’active et via pip on peut installer Pelican. A noter que par défaut, Pelican supporte uniquement le RestructuredText pour les articles, pour markdown, il faudra installer le paquet markdown en plus. On peut ensuite préparer le site via l'installer de Pelican, qui de façon interactive pose quelques questions qui facilitent grandement la configuration. A cette étape, on paramètre notamment les différents moyens utiliser pour déployer le site web sur le serveur.

Une fois configuré, on peut écrire des articles. Ces derniers pourront être placés dans un dossier articles dans le dossier content (tout ceci est paramétrable). Pour générer le site, le plus simple est d'utiliser la commande make :

make html

Et on déploie :

make upload

Et la magie opère. Le site est redéployé !

Il est assez facile de tester localement, Pelican permet d’utiliser un simple serveur HTTP en local pour vérifier ses modifications avant de publier des erreurs ;).

Extensions

On l’a écrit, nativement, il n’existe pas de gestion des commentaires ni de fonction de recherche. Rien d’insurmontable cependant.

Commentaires

Pour les commentaires, une solution simple est d’intégrer Disqus. Disqus est un service permettant de stoquer des commentaires sur un autre serveur que celui de l’application. L’extension disqus_static permet d’utiliser l’API de ce service pour gérer les commentaires dans Pelican. Il y a d’autres alternatives, comme par exemple gérer des commentaires statiquement dans des fichiers sur le serveur hébergeant Pelican. Cette dernière solution permet d’éviter les dépendances à un service tiers.

Recherche

Ici, on pourra fait appel à tipue_search, qui permet d’intégrer une fonctionnalité de recherche côté client. Sur le serveur, un fichier JSON est généré. Celui-ci est ensuite utilisé côté client pour de la recherche via JQuery. Le thème elegant intègre cette fonctionnalité nativement.

Autres extensions

Très extensible, il est possible de faire tout un tas de choses avec Pelican. C’est d’ailleurs le moteur utilisé pour le blog que vous lisez en ce moment. Pour vous faire une idée des possibilités, c’est par là : <https://github.com/Python-Nairobi/pelican-plugins>`_.

Les slides de la présentation sont disponibles ici : Pelican

Dataviz avec iPython

Intervenant : Thomas Gratier

IPython est un shell Python interactif offrant autocomplétion et historique des commandes. Il peut également s’utiliser sous forme de notebook dans un navigateur. De nombreuses bibliothèques sont disponibles et peuvent être chargées dynamiquement. Ainsi, il est très aisé de préparer des présentations dynamiques avec démonstration Python en temps réel et image générée directement dans un navigateur. IPython permet aussi de déployer les notebooks sur un site web. C’est donc un outil très puissant à la fois pour expérimenter avec Python mais aussi pour préparer des présentations interactives.

Pas plus de mots, lors du meetup, nous avons pu voir des résultats assez chouettes que vous invités à expérimenter par vous-même ici : Dataviz avec iPython.

Merci à tous pour votre présence et à très bientôt :) !

[afpyro] AFPyro à Lyon - mercredi 26 novembre

Publié le 2014-11-26 00:00:00

Un Afpyro aura lieu le mercredi 26 novembre à partir de 19h à l’Antre Autre - 11 rue Terme - 69001 Lyon.

Cet apéro python sera l’occassion de rencontrer à nouveau les gens de l’AFUP/apéro PHP, autour d’une présentation sur Ruby. Ruby est un langage open source qui met l’accent sur la simplicité et la productivité.

L’Antre Autre est un lieu où nous pouvons discuter autour d’un verre, et, pour ceux qui le souhaitent, prendre un repas.

Pour se rendre à l’Antre Autre :

  • en métro : arrêt Hôtel de Ville
  • en bus : lignes C13 et C18 arrêt Mairie du 1er ou lignes 19, C14 et C3 à l’arrêt Terreaux
  • en vélo’v : stations Place Sathonay, Carmélites Burdeau, Place de la paix

[unlish] Nose, coverage, and CubicWeb

Publié le 2014-11-25 13:11:14
CubicWeb
Writing unittests in CubicWeb cubes requires to use pytest, a test runner provided by logilab-devtools. Trying to use an other test runner is problematic, if not doomed to fail, as well as doing code coverage.
Fortunately, we can do something about it.


nose

Using nosetests to run the tests immediately fails with an obscure:
TypeError: unbound method __init__() must be called with SkipAwareTextTestRunner instance as first argument (got TextTestRunner instance instead)

After some digging, I discovered that CubicWebTC, from which we inherit all the test cases, ultimately depends on logilab pytest... which is meant to be a test runner, or so it should.
Logilab pytest, as a runner, introduce features missing from the early versions of unittests. To do so, it monkey-patch unittests itself. And I have a feeling that nose is doing something similar... which leads to the ugly error we have.
The solution is to un-monkey-patch unittests, by including these few lines somewhere loaded before any of the test (we do that in test/__init__.py):
import unittest
save_testrunner = unittest.TextTestRunner

import logilab.common.pytest # noqa
unittest.TextTestRunner = save_testrunner
After that, we can happily use nose to run the cube unittests!

coverage

The Logilab pytest tool is supposed to do code coverage measurement. Thing is: 1) I could not get it working 2) we want to use another test runner.
The naïve approach, using directly coverage or the cover extension of nose (or py.test), unfortunately fails because pytest is still messing with the trace function. The result will invariably be a coverage of 0%.
To avoid CubicWebTC to call any of the tracing-related functions of pytest, we simply inject noop() operations where they are used:
def noop(): pass

import cubicweb.devtools.testlib

cubicweb.devtools.testlib.pause_tracing = noop
cubicweb.devtools.testlib.resume_tracing = noop

And voilà!

In the end, we can use the test runner we want and get coverage to work properly. It remains a hackish workaround though, I think we ultimately need to cut the dependency from CubicWebTC to logilab.devtools.pytest.

[cubicweb] CubicWeb roadmap meeting on November 6th, 2014

Publié le 2014-11-12 09:22:00

The Logilab team holds a roadmap meeting every two months to plan its CubicWeb development effort. The previous roadmap meeting was in September 2014.

Here is the report about the November 6th, 2014 meeting. Christophe de Vienne (Unlish) joined us to express their concerns and discuss the future of CubicWeb. Dimitri Papadopoulos (CEA) could not come.

Versions

Version 3.17

This version is stable but old and maintainance will continue only as long as some customers will be willing to pay for it (current is 3.17.17).

If you're still using 3.17, you should go directly to 3.19.

Version 3.18

This version is stable but old and maintained (current is 3.18.6).

Version 3.19

This version is stable and maintained (current is 3.19.5).

Version 3.20

This version is still under development but should be released very soon now (expected next week). Its main feature being the inclusion of CWEP-002 (computed attributes and relations), along with many small improvement patches.

For details read list of tickets for CubicWeb 3.20.0.

We would have loved to integrate the pyramid cube in this release, but the debian packaging effort needed by the pyramid stack is quite big and is acceptable if we target jessie only (at decent price).

Version 3.21

For now, the roadmap for 3.21 is still the complete removal of the dbapi, the merging of Connection and ClientConnection, and possibly including CWEP-003 (adding a FROM clause to RQL).

Integrate the pyramid cube to provide the pyramid command if the pyramid framework can be imported.

Integration of CWEP-004 is being discussed.

Version 4.0

We expect to accelerate development of CubicWeb 4, which exact roadmap is still to be discussed, but we may already want:

  • be pyramid-based (remove twisted, auth management, etc.),
  • do not have anything left of old dbapi and ClientConnection,
  • integrate squareui as main (and only) web-ui "template" or remove web generation (almost) completely from cubicweb-core and provide it only through the cube system.

CWEPs

Here is the status of open CubicWeb Evolution Proposals:

to be written

Work in progress

Some work is in progress around CKAN, DCAT and othr Open Data and Semantic Web related technologies.

Agenda

Next roadmap meeting will be held at the beginning of january 2015 at Logilab, and Christophe and Dimitri (or Yann) are invited.

Open Discussions

Migration:

  • AppObjects should not be loaded by default
  • Have a look at Alembic the migration tool for SQLAlchemy and take inspiration from there

[logilab] PyconFR 2014 : jour 1, bus de communication, packaging et fin

Publié le 2014-11-04 19:26:00

Suite à :

XBUS

Florent Aide nous a présenté son projet XBUS, un bus de communication pour les applications. L'idée est de gérer l'historique : pour faire parler des applications métier entre elles, on les connecte toutes au même bus. Dans certains cas, notamment quand la sécurité des données est en jeux, l'application qui traite le message renvoie un accusé de réception et de traitement (ACK).

Côté technique, il s'agit de :

  • un cœur écrit en Go
  • zmq pour la communication
  • Python pour la logique

Lors des questions un projet similaire a été mentionné : autobahn. Le projet XBUS est libre et publié sur bitbucket.

Comment le packaging m'a simplifié la vie

Étant donné qu'à Logilab, nous avons des avis assez arrêté sur les questions de packaging, je suis allé voir cette conférence.

Xavier Ordoquy nous a présenté en détail virtualenv (pyvenv directement dans python à partir de 3.4) ainsi que l'outil pip.

Historiquement pypi a été instable, mais la situation s'est améliorée depuis qu'il est sur un CDN. Il y a un travail en cours sur la sécurité (vérification d'intégrité, ssl obligatoire etc). devpi permet d'avoir un pypi en interne comme cache, mais aussi comme système de "staging" avant de publier sur le pypi "officiel".

Selon Xavier, la guerre des distutils, python.packaging, distutils2, distribute, etc est finie. Il faut à présent utiliser setuptools et le connaître sur le bouts des doigts. Xavier nous recommande de copier un setup.py pour démarrer nos projets, par exemple celui de sentry.

Côté numéro de version, il faut aller lire la PEP440 Version Identification and Dependency Specification.

extra_requires permet de faire : pip install sentry[postgres] qui installe sentry mais aussi les dépendances pour le faire marcher avec PostgreSQL.

Côté packaging, il va falloir selon Christophe apprendre à utiliser wheel et stevedore (code).

Lors des questions, un membre du public mentionne le projet diecutter (docs, pypi).

Support de présentation : https://speakerdeck.com/xordoquy/packaging-pratique-fr

Autres liens collectés

  • Pour travailler sur les docstrings d'un projet python, pyment peut être utile.
  • fedmsg est un bus de communication utilisé chez fedora/redhat pour un grand nombre d'applications, il y a probablement de bonnes choses dedans. Il y a un début de travail sur un bus similaire chez debian

Prochain épisode

Prochain épisode: jour 2

[logilab] PyconFR 2014 : jour 1, frameworks web et gestion de source

Publié le 2014-11-04 11:28:00

Suite de pyconfr 2014 jour 1 épisode 1.

Performance des frameworks web : Python vs the world

Ronan Amicel nous a présenté le travail de benchmark publié par TechEmpower. Ces tests et résultats sont forcement faux et biaisés, mais le code source des tests est publié en libre et il est donc possible d'apporter des corrections via le projet sur github

Pour l'instant, Python3 serait plus lent que Python2, mais on peut espérer que Python3 rattrape son retard, puisqu'il est toujours développé. La comparaison avec pypy est surprenante, celui-ci est bien plus lent, l'hypothèse étant qu'il est ralenti lorsqu'il parle au driver mysql. En revanche, pour le test pypy + tornado, les performances peuvent être meilleures que nodejs car tornado est écrit en pur python il peut être optimisé par pypy.

Dans le comparatif entre python et php, un acteur surprenant est phalcon qui a pris le parti de tout coder en C (plutôt qu'une partie seulement comme on peut le trouver dans nombre de projets python).

Support de présentation : https://speakerdeck.com/ronnix/performance-des-frameworks-web-python-vs-the-world-v1-dot-1

CubicWeb - Vos données ont du sens

Nous attendions avec impatience cette présentation, et Christophe de Vienne a très bien présenté CubicWeb, le framework web dont Logilab est à l'origine.

https://www.logilab.org/file/269991/raw/logo-cubicweb.png

Après une courte introduction aux concepts du web sémantique (les URIS, les relations, le Linked Data), il a appuyé sur la nécéssité de donner du sens aux données que l'on stoque dans nos applications. Il a expliqué la finesse des réglages dans le moteur de permissions de CubicWeb.

Il a expliqué certaines fonctionnalités intéressantes selon lui dans Cubicweb :

  • les hooks: équivalent des procédures stockées déclenchées par des triggers, ils sont écrits en Python et permettent de modifier des données en cascades, implémenter des règle de gestion ou générer des notifications.
  • les adaptateurs : permettent de maximiser la réutilisation de code en adaptant une entité à une nouvelle interface

Selon Christophe, CubicWeb permet de développer une "base de donnée métier" strictement structurée, mais restant souple. Il a expliqué que l'interface par défaut n'est pas très sexy, mais qu'elle est néanmoins fonctionnelle comme backend d'édition.

Une petite introduction aux cubes qui sont les "plugins" ou les "extensions" dans le monde CubicWeb, ils contiennent :

  • un schéma
  • du code métier
  • des vues
  • des contrôleurs

Pour manipuler les données, CubicWeb utilise RQL, qui a été inventé avant SPARQL (langage de requête du web sémantique) et est plus pragmatique et lisible. Une fonctionnalité notable de RQL : plus besoin d'écrire des jointures SQL !

Finalement Christophe a conclu en présentant le mariage de Pyramid et Cubicweb. Selon lui, en regardant dedans, ils ont des philosophies communes. Le code permettant de développer une application Pyramid sur une base CubicWeb est publié sur la forge de CubicWeb. Christophe a aussi expliqué qu'il pousse des modifications pour que CubicWeb soit plus accessible aux développeurs habitués aux modes de développement "à la python".

Support de présentation : https://dl.dropboxusercontent.com/u/36590471/pyconfr-2014-pres-cubicweb/index.html

La gestion de version, ce problème tellement simple…

Pierre-Yves David (marmoute) nous a concocté un petit panorama des problèmes traités par les gestionnaires de source, avec des anecdotes de problèmes non-triviaux et quelques rappels historiques sur notre "science" informatique (merci les encodages!) Pierre-Yves s'est concentré sur les systèmes de gestion de version de "nouvelle génération", les outils décentralisés (hg, git, bzr). Forcément, étant donné qu'il travaille sur mercurial (et oui, celui écrit en python) il s'est concentré sur celui-là.

http://mercurial.selenic.com/images/mercurial-logo.png

Quand il travaillait chez Logilab, Pierre-Yves a notamment rajouté à Mercurial la notion de changeset obsolete et de phase pour faciliter la revue de code et le travail en équipe.

Manipuler son code python avec RedBaron

baron et RedBaron sont des projets assez prometteurs (et assez dingues) de manipulation de code en utilisant du code (plutôt que des éditeurs).

Laurent Peuch est revenu sur les outils historiques du domaine : rope qui a pris la suite de bicycle repair man. Il y a aussi pyfmt par le même auteur, et autopep8 écrit par d'autres.

Un exemple qui m'a parlé : ajouter @profile sur toutes les fonctions d'un script devient faisable en 3 lignes de python, et inversement pour les enlever. À suivre...

Support de présentation : https://psycojoker.github.io/pyconfr-redbaron/presentation.html

Prochain épisode

Prochain épisode: jour 1, bus de communication, packaging et fin