Planet Python francophone Nouvelles autour de Python en français https://www.afpy.org/planet/rss.xml fr <![CDATA[ [Emplois AFPy] Développeur python / django à Paris XX ]]> https://www.afpy.org/posts/emplois/1534426753 Thu, 16 Aug 2018 12:39:13 -0000 <![CDATA[ [Emplois AFPy] Admin sys junior - stage longue durée ou alternance ]]> https://www.afpy.org/posts/emplois/1533656453 Tue, 07 Aug 2018 14:40:53 -0000 <![CDATA[ [Yaal] Yaal recrute 3 développeurs agiles ]]> Offre de CDI - H/F - Bordeaux St Michel - Package attractif

#front-end #back-end #adminsys #mobile #python #ES6 #linux

Pour accompagner sa croissance, Yaal recrute 3 développeurs, avec une tête bien faite plutôt qu'avec une tête bien pleine !

Vous rejoignez une startup d'une vingtaine de personnes à l'organisation distribuée. Vous intégrez une des équipes auto-organisées où vous travaillerez en autonomie et assumerez vos choix techniques.

Nous pensons que pour des résultats comblant nos clients, il est d'abord essentiel de constituer une excellente équipe : fiable, réactive, astucieuse, apprenante, communicante, bienveillante, et aux compétences complémentaires.

Nous nous efforçons de créer les conditions de réussite :

  • En équipe plutôt que seul·e ;
  • En collaboration plutôt qu'en subordination ;
  • Sur du matériel efficace plutôt que sur une machine premier prix ;
  • Dans un endroit convivial et bien situé (local proche de la victoire, salle de repos) ;
  • En conjuguant professionnalisme et plaisir au travail ;
  • Possibilité de devenir associé à moyen terme ;
  • Mutuelle famille prise en charge à 100 % ;
  • Ticket restaurant, PC et téléphone portables, vélo de fonction, etc.

Rencontrons-nous ! contact@yaal.fr

18 rue Gratiolet, 33000 Bordeaux

L'annonce au format pdf

]]>
https://www.yaal.fr/blog/yaal-recrute-3-developpeurs-agiles Tue, 17 Jul 2018 21:00:00 -0000
<![CDATA[ [Anybox] Configuration initiale d'Odoo - gestion des langues ]]> https://anybox.fr/blog/configuration-initiale-odoo-gestion-des-langues Tue, 17 Jul 2018 15:19:00 -0000 <![CDATA[ [Nouvelles AFPy] AFPyro Parisien sur la dernière barge avant la fin de l'été ]]> https://www.afpy.org/posts/actualites/1531753004 Mon, 16 Jul 2018 13:56:44 -0000 <![CDATA[ [Emplois AFPy] Développeur Back-end (Rhône-Alpes) ]]> https://www.afpy.org/posts/emplois/1531747856 Mon, 16 Jul 2018 12:30:56 -0000 <![CDATA[ [Emplois AFPy] Back-end Developer ]]> https://www.afpy.org/posts/emplois/1531489981 Fri, 13 Jul 2018 12:53:01 -0000 <![CDATA[ [Emplois AFPy] Front-End Developer ]]> https://www.afpy.org/posts/emplois/1531124037 Mon, 09 Jul 2018 07:13:57 -0000 <![CDATA[ [Emplois AFPy] Développeur généraliste pour pipeline d'images 3d ]]> https://www.afpy.org/posts/emplois/1530885254 Fri, 06 Jul 2018 12:54:14 -0000 <![CDATA[ [Emplois AFPy] Full Stack Python Developer (Paris, France) ]]> https://www.afpy.org/posts/emplois/1530609125 Tue, 03 Jul 2018 08:12:05 -0000 <![CDATA[ [Emplois AFPy] CDI à Paris - Développeurs Python / Talend ]]> https://www.afpy.org/posts/emplois/1528709409 Mon, 11 Jun 2018 08:30:09 -0000 <![CDATA[ [Emplois AFPy] Python dev a Geneve ]]> https://www.afpy.org/posts/emplois/1528192810 Tue, 05 Jun 2018 09:00:10 -0000 <![CDATA[ [Emplois AFPy] Senior Python Developper / Paris ]]> https://www.afpy.org/posts/emplois/1528108575 Mon, 04 Jun 2018 09:36:15 -0000 <![CDATA[ [Ascendances] Installer Matomo sur Debian 9 ]]> https://ascendances.wordpress.com/2018/06/01/installer-matomo-sur-debian-9/ Fri, 01 Jun 2018 14:51:56 -0000 <![CDATA[ [Emplois AFPy] Python & Javascript Developer ]]> https://www.afpy.org/posts/emplois/1527582437 Tue, 29 May 2018 07:27:17 -0000 <![CDATA[ [Emplois AFPy] CDI Paris - Développeur « Analytics » ]]> https://www.afpy.org/posts/emplois/1527339200 Sat, 26 May 2018 11:53:20 -0000 <![CDATA[ [Emplois AFPy] Senior Software Engineer ]]> https://www.afpy.org/posts/emplois/1527154241 Thu, 24 May 2018 08:30:41 -0000 <![CDATA[ [Emplois AFPy] Développeur PYTHON H/F ]]> https://www.afpy.org/posts/emplois/1526649220 Fri, 18 May 2018 12:13:40 -0000 <![CDATA[ [Emplois AFPy] Ingénieur R&D (H/F) à Nantes ]]> https://www.afpy.org/posts/emplois/1526460162 Wed, 16 May 2018 07:42:42 -0000 <![CDATA[ [Emplois AFPy] Développeur(se) Python/Django full stack (H/F) à Nantes ]]> https://www.afpy.org/posts/emplois/1526037635 Fri, 11 May 2018 10:20:35 -0000 <![CDATA[ [Emplois AFPy] Poste d'ingénieur·e de recherche au Laboratoire d'informatique de Paris 6 ]]> https://www.afpy.org/posts/emplois/1525767470 Tue, 08 May 2018 07:17:50 -0000 <![CDATA[ [Anybox] Monter une instance Odoo depuis les sources ]]> https://anybox.fr/blog/monter-une-instance-odoo-depuis-les-sources Mon, 07 May 2018 12:24:00 -0000 <![CDATA[ [Emplois AFPy] Développeur(se) senior Python ]]> https://www.afpy.org/posts/emplois/1524746863 Thu, 26 Apr 2018 11:47:43 -0000 <![CDATA[ [Anybox] eCommerce avec Odoo ]]> https://anybox.fr/blog/ecommerce-avec-odoo Wed, 25 Apr 2018 06:27:00 -0000 <![CDATA[ [Emplois AFPy] Développeur(se) senior Python ]]> https://www.afpy.org/posts/emplois/1524585206 Tue, 24 Apr 2018 14:53:26 -0000 <![CDATA[ [Emplois AFPy] CDI Paris - Développeur web Fullstack ]]> https://www.afpy.org/posts/emplois/1523624098 Fri, 13 Apr 2018 11:54:58 -0000 <![CDATA[ [Nouvelles AFPy] Meetup Python Amiens #1 ]]> https://www.afpy.org/posts/actualites/1523519011 Thu, 12 Apr 2018 06:43:31 -0000 <![CDATA[ [Anybox] Exemple de matrice de McKinsey appliquée à Anybox ]]> https://anybox.fr/blog/exemple-de-matrice-de-mckinsey-appliquee-a-anybox Tue, 10 Apr 2018 20:21:00 -0000 <![CDATA[ [Emplois AFPy] Developpeur Python ]]> https://www.afpy.org/posts/emplois/1523353771 Tue, 10 Apr 2018 08:49:31 -0000 <![CDATA[ [Emplois AFPy] Software Engineer - Python ]]> https://www.afpy.org/posts/emplois/1522849556 Wed, 04 Apr 2018 12:45:56 -0000 <![CDATA[ [Emplois AFPy] Fullstack Python, Angular (CDI) ]]> https://www.afpy.org/posts/emplois/1522142335 Tue, 27 Mar 2018 08:18:55 -0000 <![CDATA[ [Emplois AFPy] Fullstack Python, Angular (CDI) ]]> https://www.afpy.org/posts/emplois/1522142326 Tue, 27 Mar 2018 08:18:46 -0000 <![CDATA[ [Emplois AFPy] Développeur Python - (télétravail partiel) - Editeur ]]> https://www.afpy.org/posts/emplois/1522077851 Mon, 26 Mar 2018 14:24:11 -0000 <![CDATA[ [Emplois AFPy] Développeur Python / Django (Paris, Marseille, Nancy) ]]> https://www.afpy.org/posts/emplois/1522066577 Mon, 26 Mar 2018 11:16:17 -0000 <![CDATA[ [Emplois AFPy] Senior Backend Developer H/F ]]> https://www.afpy.org/posts/emplois/1521730667 Thu, 22 Mar 2018 13:57:47 -0000 <![CDATA[ [Yaal] Mise en forme de tracebacks python ]]> (sans saigner des yeux)

Chercher des informations dans des logs informes ou dans des tracebacks est à bien des égards une activité frustrante. À Yaal nous utilisons donc sentry, qui est capable d'agréger, de contextualiser et de mettre en forme les logs et les tracebacks que nous générons. Couplé à un système d'alertes efficace, l'outil s'avère très utile pour savoir ce qui se passe en production, et diagnostiquer rapidement lorsque surgissent des problèmes.

Dans la phase itérative du développement d'une fonctionalité, on génère souvent beaucoup d'erreurs temporaires et sans grande valeur. Les capacités qu'a Sentry à contextualiser et mettre en forme une erreur sont intéressante, mais on se passerait bien de l'historique et des alertes dans ce cas de figure. En plus de ça, ça fait un outil (de plus) à ouvrir, une page à actualiser... Bref, lorsque l'on développe et qu'un bug se produit, on veut avoir une information riche et lisible rapidement.

D'aucuns argueront que pour débugger, on utilise un debugger. Certes, mais l'utilisation d'un debugger est assez lourde, et de fait elle n'est pas automatique. De plus, on peut chercher à obtenir une information claire et instantanée sur des exceptions dans des contextes où un debugger n'est pas forcément pertinent. Je pense notamment dans des cas où l'on exécute en même temps plusieurs programmes qui interagissent entre eux (des démons, des serveurs web...), on ne lance pas un débugger derrière chaque programme dans ces cas-là avant (du moins, pas avant d'avoir rencontré un bug).

Comparons quelques outils de mise en forme de backtrace python, en gardant quelques critères en tête :

  • La capacité de mettre une traceback en couleur ;
  • La capacité de contextualiser les appels (afficher les quelques lignes de code avant ou après) ;
  • La capacité d'afficher les variables locales à chaque étape de la stack ;
  • Les methodes d'utilisation et l'invasivité (hook qui s'installe et attrape toutes les exceptions, utilisation manuelle dans des try-except, utilisation comme module python ex:python -m foobar monscript.py) ;
  • L'intégration dans une stack web (middleware WSGI) ;
  • Le packaging avec pip et les dépendances ;
  • L'activité et la taille du projet.

Une traceback par défaut Un exemple de traceback dans sentry

Nous ne nous intéresseront pas à l'affichage des tracebacks dans les programmes de test unitaires.

Outils orienté terminal

Prenons un exemple de code en python s'exécutant dans un terminal.

Une traceback par défaut Un script simple

L'affichage par défaut des tracebacks python donne le minimum d'information, mais on pourrait sans doute faire mieux. Où est la mise en forme ? Quelles sont les variables locales à chaque étape de la pile ?

backtrace

backtrace est un petit projet (30 commits) disponible dans pip. Il s'utilise seulement en hook, s'axe sur une mise en forme succincte et colorée, avec quelques options de personnalisation. Les variables locales ne peuvent pas être affichées mais la fonctionnalité est envisagée.

Un script simple avec backtrace backtrace comme hook

colored-traceback

colored-traceback est un petit projet (9 commits) disponible dans pip. Il se présente comme un module python ou un hook, et se contente de rajouter de la couleur aux tracebacks générées par python, en gardant la même mise en forme. Il y a un petit problème dans l'utilisation par le module python : colored-traceback apparaît lui-même dans la traceback, ce qui n'est facilite pas sa lisibilité.

colored-traceback utilisé comme module colored-traceback utilisé comme module

colored-traceback utilisé comme hook colored-traceback comme hook

pygments

pygments est un outil de coloration syntaxique en python actif, disponible sur pip. pygments est capable de colorer des tracebacks python mais se cantonne à son rôle de coloration syntaxique, donc aucune mise en forme ou contexte ne sont ajoutés. Aucune aide n'est disponible non plus pour attraper les exceptions de manière automatique dans le code. On peut s'en sortir en écrivant un hook, ou une fonction de traitement dans un block try-except. Le binaire pygmentize fourni dans le paquet permet tout de coloriser la sortie standard d'un script python.

hook fait main avec pygments hook fait-main avec pygments

sortie standard capturée avec pygmentize sortie standard capturée avec pygmentize

IPython ultratb

IPython est shell python assez puissant (avec coloration, autocomplétion et autres) disponible dans pip. Par défaut il met en forme les tracebacks avec son module ultratb. Ultratb peut s'utiliser soit comme un hook qui attrape et traîte les exception d'un script, ou dans un bloc try-except. Ultratb est surtout utilisé par défaut dans IPython, donc utiliser ipython comme interpréteur à la place de python peut suffir à afficher une traceback mise en forme. Plusieurs thèmes de couleur, et plusieurs mises en formes sont disponibles. Parmi les mises en forme proposés, on peut afficher une traceback simple, colorée avec ColorTB, ou une traceback avec du contexte, de la couleur, et le contenu des variables locales avec VerboseTB. Il semblerait qu'on ne puisse pas installer ultratb sans installer IPython.

Un script simple avec ipython Un script simple avec IPython

ultratab comme hook ultratab comme hook

ultratab dans un try-except ultratab dans un try-except

ultratab en mode verbeux ultratab en mode verbeux

Outils orienté web

cgitb

cgitb est un mystère. C'est un module cœur de python, originellement utilisé pour générer des pages HTML mettant en forme des tracebacks, mais il peut aussi être utilisé pour du texte. Le module existe depuis Python 2.2 mais il a l'air assez peu connu du web, les deux paragraphes de documentation n'inspirent pas confiance, (deux nouveaux paragraphes ont été écrits pour python 3.8 \o/). Il existe un hook, mais il ne fait qu'écrire sur la sortie standard, sans doute est-ce un reliquat de l'époque où on l'utilisait dans des CGI. Néanmoins, en utilisant les fonctions non documentées du module, on peut arriver à générer des backtraces plutôt riches et avec du contexte. Par contre, pour des couleurs ou des pages web lisibles, on repassera. Les pages web générées sont aussi hideuses que leur code, et la sortie texte est monochrome. Les hooks, l'affichage dans un try-except sont possibles, mais en l'écrivant à la main.

try-except avec cgitb try-except avec cgitb

magnifique page web avec cgitb Une magnifique page web générée par cgitb

django

Le célèbre framework web django permet de mettre en forme les tracebacks python qui peuvent survenir lors de la génération d'une page web. Le module est dans le cœur de django, et n'est pas facilement réutilisable hors django. Il ne génère une traceback monochrome mise en forme, avec du contexte et des variables locales.

traceback web avec django Traceback web avec django

werkzeug

Werkzeug embarque un middleware WSGI qui produit des pages HTML riches et belles, avec des accordéons pour ne pas la charger. L'intégration est très facile. Werkzeug permet en plus d'ouvrir un debugger interactif si le serveur d'application le permet. On regrettera cependant l'absence de variables locales et de couleurs.

traceback web avec werkzeug Traceback web avec werkzeug

Conclusion

Voici un tableau récapitulant les résultats des critères que nous avons observé sur les différents outils :

sentry ultratb backtrace colored-traceback pygments cgitb django werkzeug
couleur
contexte
variables locales
hook (pour CGI)
try except
module python ou interpréteur (bof)
lecture sur l'entrée standard
middleware WSGI
sortie texte
sortie html (mais hiddeuse)
projet très actif dans python peu soutenu
dédié à l'affichage de tracebacks
paquet pip (déjà dans python)

La conclusion que l'on peut tirer est qu'il n'existe pas d'outil remplissant tous les critères. ultratb semble être la meilleure option pour l'affichage en console, même s'il est embarqué dans IPython. Quant au monde du web, seul werkzeug semble sortir du lot, malgré qu'il ne soit pas dédié à la fonction d'afficher des tracebacks.

L'outil idéal pour mettre en forme des tracebacks, polyvalent, lisible et puissant, reste à développer. On peut cependant s'en tirer relativement correctement en utilisant ultratb pour l'affichage en terminal et werkzeug pour l'affichage web.

]]>
https://www.yaal.fr/blog/mise-en-forme-de-tracebacks-python Wed, 21 Mar 2018 22:00:00 -0000
<![CDATA[ [Emplois AFPy] Tech Lead Backend Python (H/F) - Paris 15 ]]> https://www.afpy.org/posts/emplois/1521560550 Tue, 20 Mar 2018 14:42:30 -0000 <![CDATA[ [Anybox] Un colloque au format Startup Weekend ]]> https://anybox.fr/blog/un-colloque-au-format-startup-weekend Mon, 19 Mar 2018 09:55:00 -0000 <![CDATA[ [Emplois AFPy] Back-end developer chez meltygroup ]]> https://www.afpy.org/posts/emplois/1520522135 Thu, 08 Mar 2018 14:15:35 -0000 <![CDATA[ [Emplois AFPy] Recrutement Dev Python / Django (Lyon) ]]> https://www.afpy.org/posts/emplois/1519829876 Wed, 28 Feb 2018 13:57:56 -0000 <![CDATA[ [Anybox] 5 bonnes raisons d'utiliser un CRM ]]> https://anybox.fr/blog/5-bonnes-raisons-dutiliser-un-crm Mon, 26 Feb 2018 10:00:00 -0000 <![CDATA[ [Anybox] Le format Startup Weekend du colloque Anybox ]]> https://anybox.fr/blog/le-colloque-anybox-au-format-startup-week Thu, 15 Feb 2018 13:14:00 -0000 <![CDATA[ [Ascendances] Modèles féminins en informatique ]]> https://ascendances.wordpress.com/2018/02/13/modeles-feminins-en-informatique/ Tue, 13 Feb 2018 18:29:44 -0000 <![CDATA[ [Code en Seine] Atelier du 14 février 2018 ]]> Le prochain atelier code-en-seine aura lieu le 14 février 2018 de 19h à 21h rue du Faubourg St Jacques.

]]>
https://codeenseine.fr/atelier-2018-02-14.html Thu, 08 Feb 2018 07:50:00 -0000
<![CDATA[ [Nouvelles AFPy] Soirée Python à Marseille le 9/2/2018 ]]> https://www.afpy.org/posts/actualites/1518042512 Wed, 07 Feb 2018 21:28:32 -0000 <![CDATA[ [Emplois AFPy] Django en télétravail (et autre) ]]> https://www.afpy.org/posts/emplois/1517331762 Tue, 30 Jan 2018 16:02:42 -0000 <![CDATA[ [Emplois AFPy] Lead dev python / django orienté data (H/F) à Nantes ]]> https://www.afpy.org/posts/emplois/1516286666 Thu, 18 Jan 2018 13:44:26 -0000 <![CDATA[ [Anybox] Résolutions 2018 : ERP et Optimisation ]]> https://anybox.fr/blog/resolutions-2018-erp-et-optimisation Wed, 17 Jan 2018 08:32:00 -0000 <![CDATA[ [Emplois AFPy] Ingenieur logiciel / data scientist (COD 3 ans) ]]> https://www.afpy.org/posts/emplois/1515684439 Thu, 11 Jan 2018 14:27:19 -0000 <![CDATA[ [Nouvelles AFPy] Atelier : Contribuez à la traduction de la doc de Python en français ]]> https://www.afpy.org/posts/actualites/1515405342 Mon, 08 Jan 2018 08:55:42 -0000 <![CDATA[ [Code en Seine] Atelier du 17 janvier 2018 ]]> Le prochain atelier code-en-seine aura lieu le 17 janvier 2018 de 19h à 21h rue du Faubourg St Jacques.

]]>
https://codeenseine.fr/atelier-2018-01-17.html Sun, 07 Jan 2018 09:24:00 -0000
<![CDATA[ [Ascendances] Avec with : plus d’indentations, moins d’instructions ]]> https://ascendances.wordpress.com/2017/12/30/avec-with-plus-dindentations-moins-dinstructions/ Sat, 30 Dec 2017 17:29:16 -0000 <![CDATA[ [Nouvelles AFPy] À vos framewoks ! ]]> https://www.afpy.org/posts/actualites/1512996562 Mon, 11 Dec 2017 11:49:22 -0000 <![CDATA[ [Code en Seine] Atelier du 20 décembre 2017 ]]> Le prochain atelier code-en-seine aura lieu le 20 décembre 2017 de 19h à 21h rue du Faubourg St Jacques.

]]>
https://codeenseine.fr/atelier-2017-12-20.html Wed, 06 Dec 2017 07:08:00 -0000
<![CDATA[ [Nouvelles AFPy] Où sont mes variables ? ]]> https://www.afpy.org/posts/actualites/1512378516 Mon, 04 Dec 2017 08:08:36 -0000 <![CDATA[ [Anybox] Pourquoi l'open-source ? ]]> https://anybox.fr/blog/pourquoi-l-open-source Fri, 24 Nov 2017 19:03:00 -0000 <![CDATA[ [Nouvelles AFPy] Hackaton "La Boîte" — Incubateur IMT Atlantique #Rennes ]]> https://www.afpy.org/posts/actualites/1511358816 Wed, 22 Nov 2017 12:53:36 -0000 <![CDATA[ [Code en Seine] Atelier du 6 décembre 2017 ]]> Le prochain atelier Code-en-Seine aura lieu le 6 décembre à 19h

]]>
https://codeenseine.fr/atelier-2017-12-06.html Mon, 20 Nov 2017 14:55:00 -0000
<![CDATA[ [Code en Seine] Atelier du 22 novembre 2017 ]]> Le prochain atelier Code-en-Seine aura lieu le 22 novembre à 19h

]]>
https://codeenseine.fr/atelier-2017-11-22.html Tue, 14 Nov 2017 19:55:00 -0000
<![CDATA[ [Nouvelles AFPy] Rencontre Python à Lyon : Une carte pour les amener tous, Et dans la connaissance les lier. ]]> https://www.afpy.org/posts/actualites/1510650668 Tue, 14 Nov 2017 08:11:08 -0000 <![CDATA[ [Anybox] Créer son site internet avec Odoo ]]> https://anybox.fr/blog/creer-son-site-internet-avec-odoo Mon, 13 Nov 2017 07:54:00 -0000 <![CDATA[ [Ascendances] Ignorer des fichiers, de ack à ag ]]> https://ascendances.wordpress.com/2017/11/08/ignorer-des-fichiers-de-ack-a-ag/ Wed, 08 Nov 2017 12:44:22 -0000 <![CDATA[ [Nouvelles AFPy] Atelier de contribution à Ansible à Paris ]]> https://www.afpy.org/posts/actualites/1509982513 Mon, 06 Nov 2017 14:35:13 -0000 <![CDATA[ [Nouvelles AFPy] Cours en ligne : Python 3, des fondamentaux aux concepts avancés du langage ]]> https://www.afpy.org/posts/actualites/1509982321 Mon, 06 Nov 2017 14:32:01 -0000 <![CDATA[ [Anybox] Au travail, on fait ce que l'on souhaite ! ]]> https://anybox.fr/blog/au-travail-on-fait-ce-que-l-on-souhaite Fri, 03 Nov 2017 17:09:00 -0000 <![CDATA[ [Anybox] Le Colloque de la Team Anybox ]]> https://anybox.fr/blog/le-colloque-de-la-team-anybox Mon, 30 Oct 2017 14:34:00 -0000 <![CDATA[ [Nouvelles AFPy] Rencontre Python à Lyon ]]> https://www.afpy.org/posts/actualites/1508335902 Wed, 18 Oct 2017 13:11:42 -0000 <![CDATA[ [Anybox] Interesting new features Odoo V10 vs Odoo V8 ]]> https://anybox.fr/blog/interesting-new-features-odoo-v10-vs-odoo-v8 Tue, 17 Oct 2017 13:35:00 -0000 <![CDATA[ [Anybox] 5 bonnes raisons d'adopter des personnas ]]> https://anybox.fr/blog/5-bonnes-raisons-dadopter-des-personnas Mon, 16 Oct 2017 12:29:00 -0000 <![CDATA[ [Code en Seine] Atelier du 8 novembre 2017 ]]> Le prochain atelier Code-en-Seine aura lieu le 8 novembre à 19h

]]>
https://codeenseine.fr/atelier-2017-10-18.html Mon, 16 Oct 2017 09:01:00 -0000
<![CDATA[ [Code en Seine] Les ateliers Code-en-Seine ]]> Les ateliers Code-en-Seine, un moment pour apprendre ou s'améliorer en Python.

]]>
https://codeenseine.fr/ateliers-code-en-seine.html Mon, 16 Oct 2017 08:46:00 -0000
<![CDATA[ [Emplois AFPy] [stage] développeur Backend python sur Bordeaux ]]> Dans le cadre de ce stage vous allez intégrer notre équipe back-end afin de l’assister dans la réalisation d’une infrastructure de collecte, de stockage, de traitement et de mise à disposition des données.

]]> https://www.afpy.org/posts/emplois/1507905621 Fri, 13 Oct 2017 13:40:21 -0000 <![CDATA[ [Nouvelles AFPy] Code en Seine ]]> https://www.afpy.org/posts/actualites/1507801636 Thu, 12 Oct 2017 08:47:16 -0000 <![CDATA[ [Emplois AFPy] Développeurs Python sur Lyon ]]> https://www.afpy.org/posts/emplois/1506949143 Mon, 02 Oct 2017 11:59:03 -0000 <![CDATA[ [Nouvelles AFPy] PV de l'Assemblée Générale Ordinaire 2017 ]]> https://www.afpy.org/posts/actualites/1506345679 Mon, 25 Sep 2017 12:21:19 -0000 <![CDATA[ [Anybox] Top 5 benefits implementing an ERP system ]]> https://anybox.fr/blog/top-5-benefits-implementing-an-erp-system Fri, 22 Sep 2017 07:54:00 -0000 <![CDATA[ [Ascendances] Coder une variante de FizzBuzz basée sur le jeu 6 qui prend ]]> https://ascendances.wordpress.com/2017/09/15/coder-une-variante-de-fizzbuzz-basee-sur-le-jeu-6-qui-prend/ Fri, 15 Sep 2017 06:01:12 -0000 <![CDATA[ [Emplois AFPy] Développeur(se) Python/Django full stack (H/F) à Nantes ]]> https://www.afpy.org/posts/emplois/1504014864 Tue, 29 Aug 2017 12:54:24 -0000 <![CDATA[ [Emplois AFPy] Pilot Systems recherche un Développeur Front et Back Python / Django pour une mission de 6 mois chez un client Media ]]> https://www.afpy.org/posts/emplois/1502369242 Thu, 10 Aug 2017 11:47:22 -0000 <![CDATA[ [Yaal] Choisir une technologie de monitoring ]]> Le monde de l'open source est une vaste jungle où se cotoient des projets en taille, formes et couleurs diverses et variées. Devant la diversité et la technicité, il est difficile de faire des choix technologiques éclairés. Faute d'arguments tangibles, les développeurs, comme tout consommateurs, sont sujets à des biais importants liés à leurs habitudes et leur ressenti affectif.

Les projets redoublent alors d'imagination pour vanter leurs mérites : «scalable», «lightweight», «performant», «flexible», «easy to use», «no dependency»... Ces fourre-tous, à la fois subjectifs et non quantifiés, sont des exemples de discours marketing, alors qu'un professionel doit pouvoir comparer des solutions sur des bases objectives.

Je vais vous donner quelques clés d'évaluations des solutions de monitoring que je connais, ce que nous avons choisi à Yaal et pourquoi. Je vous partage ici mon expérience, d'une part en tant que développeur de solution de monitoring, d'autre part en tant qu'utilisateur de divers outils.

Du besoin de monitoring

Le monitoring est un secteur en plein boom dans l'industrie informatique qui connait depuis plusieurs années des croissances fortes. Les études de marché lui donnent des perspectives pour le moins encourageantes : le marché devrait prendre encore 50% d'ici 2024 (source). La startup Datadog a réalisé début 2016 une levée de fond de près de 100 000 000$ (source). Une longue liste de projets de monitoring opensource ont vu s'accumuler des communautés respectables, telles que celle de Sensu (2600 «stars» sur github), et d'autres projets stables tels que Shinken, Nagios ou Zabbix...

Les raisons sous-jacentes sont liés à l'évolution des systèmes informatiques. Ils sont non seulement toujours plus nombreux, mais aussi toujours plus vastes, toujours plus complexes, leurs enjeux sont aussi économiquement critiques. Surveiller l'évolution et le bon fonctionnement des systèmes a donc intrinsèquement une valeur croissante.

Pour une entreprise technologique les enjeux du monitoring sont multiples : avoir un système monitoré, c'est se donner les chances d'être réactif en cas de panne, de cibler les optimisations, et de provisionner correctement le besoin matériel. En somme, le monitoring est à l'informatique ce que la business intelligence est au commerce : un enjeu stratégique de premier ordre.

Il existe près d'une centaine de solutions avec des approches parfois très différentes. Pour ce secteur encore plus que pour d'autres, le choix est difficile car il n'existe aucune référence incontestable. La raison est qu'il est difficile de quantifier ce qui constitue un monitoring efficace, ce qui est «le besoin» : le monitoring recouvre en fait un ensemble de besoins.

Se pose alors la question, comment mesurer l'efficacité d'une solution ? Quelles métriques choisir, et quel coût raisonnable pour les atteindre ?

Une définition claire

Tel que je définis le monitoring, le monitoring d'un système s'évalue simplement par le fait que les informations pertinentes sont accessibles.

Un fantasme communément admis serait qu'un système puisse efficacement proactivement notifier d'un dysfonctionnement. Cela peut exister pour des événements exceptionnels simple, comme par exemple avertir que le site principal ne répond plus (et encore, on s'expose à nombre de faux positifs type coupure réseau localisée momentanée, du spam pendant les maintenances etc. et bon nombre de faux négatifs également). Mais il est impossible de généraliser ce fonctionnement à l'ensemble d'un système complexe, car il est difficile ou impossible pour un système de qualifier précisément l'importance d'une 404, d'une 500, d'un crash d'application, voire même d'une machine. Cette importance est entièrement situationnelle et demande de connaître l'organisation qui utilise ce système.

Les solutions lourdes de monitoring tentent de résoudre ces problèmes par effort de configuration. L'idée est de pré-qualifier l'importance de certains systèmes ou erreurs afin de pré-filtrer les avertissements. Mais on s'aperçoit en réalité que même avec cet effort coûteux, après mise en place, les avertissements sont lus à posteriori et requalifiés par un être humain qui suit une routine - lui envoyer un mail équivalait donc à lui rendre des informations pertinentes accessibles !

Mais qu'est-ce que la pertinence et l'accessibilité d'une information ?

Patterns et anti-patterns

La pertinence

Pour qu'une information soit pertinente, elle doit être en premier lieu entièrement qualifiée : elle doit répondre à quoi (qu'est-ce qui se passe ?), quand (un timestamp), (sur quelle machine/processus), et assez souvent également combien (une quantité ou une fréquence).

Elle doit également répondre à une question, couvrir une éventualité impactante. Pour cela, il peut être nécessaire de la condenser ou de la coupler avec d'autres informations. Par exemple, un événement de visite sur un site, en tant que seule information, est peu pertinent, mais avoir une vue globale du nombre de visites et pouvoir rapprocher ces événements avec une charge serveur peut constituer une information pertinente. C'est pourquoi il est intéressant de collecter un vaste panel d'information.

Le panel choisi gagne à être diversifié. Il est intéressant de combiner des métriques précises et concrètes, correspondant à une réalité tangible (Exemple : un temps de réponse exprimé en ms) avec des agrégations de résultats dont les seuils sont aisément interprétés (Exemple : le load average); avoir également une approche multiniveau en combinant des métriques système, universelles, à des métriques applicatives, spécifique, de haut niveau.

C'est de cette façon que l'on peut créer à la fois la vue d'ensemble nécessaire comme de pouvoir descendre au plus près de problèmes précis.

L'accessibilité

Une fois cette collecte effectuée, il est indispensable d'avoir la possibilité de filtrer et explorer les données : filtrer par date, par type (erreur/warning/debug/métrique etc.), par application et par machine, sans que ces opérations soient pénibles : puisqu'accéder à ces informations est une routine, elle doit être au maximum simplifiée.

Sur tous ces points, certains canaux ou technologies sont plus ou moins efficaces. Les technologies classiques présentes d'ailleurs souvent de grosses faiblesses. Prenons l'exemple d'un fichier de log : il est indexé par le temps, et son information est plutôt qualifiée. La pertinence des informations est variable : il s'agit d'informations isolées et souvent redondantes. Il s'agit également d'un des pires média quant à l'accès à l'information : pour y accéder, je dois d'abord savoir quel fichier ouvrir sur quelle machine, et je n'ai pas beaucoup d'options de filtre. La présentation des quantités est également crue. En bref, c'est facile à mettre en place, mais la qualité est au mieux médiocre. Le mail n'est pas beaucoup mieux : en terme pratique, il s'agit d'un log dépliable.

Le bon pattern constitue l'élaboration d'un dashboard interactif et efficacement présenté. Les informations qu'il contient sont automatiquement synthétisées et mises à jour. Il peut se compléter par un certain nombre d'options pour naviguer parmis différentes données. Il doit contenir autant des données chiffrées que des informations d'événements pouvant servir de base à un ticket de développement ou de maintenance.

Notre choix

Ce premier balayage fait, il intervient alors des considérations concernant la pérénité de la solution choisie, de manière à minimiser le risque d'avoir choisi une technologie dépréciée. Il est toujours plus confortable de bénéficier d'une solution ayant un large écosystème présent et futur. Pour cette dernière partie, j'ai tendance à penser qu'il est préférable de se tourner solutions ayant découplé la collecte, le stockage et le rendu. Ces briques logicielles faisant appel à des expertises différentes, elles bénéficient généralement à être séparées et intéragir par un standard ouvert qui permet la libre concurrence.

Dans ce cas, c'est la technologie de stockage qui définit le plus profondément la solution. Il existe deux orientations : une orientation plus orientée événement, c'est le cas en particulier de la technologie Elasticsearch (fréquemment associé à Logstash et Kibana donnant ELK) : elle est éprouvée et solide. L'autre solution est plus récente et plus orientée métrique : il s'agit de notre choix, InfluxDb. Cette base de données permet la gestion du stockage des données indexées dans le temps, à la fois métriques et logs. Lorsqu'elle est correctement structurée, la base de données permet une compression temporelle des données (retention policy et downsampling), aussi bien que la gestion des filtres par des tags qui peuvent représenter les machines, les types de logs...

Nous y avons associé Grafana qui permet de voir des dashboard, produit des graphes lisibles qu'il est possible de templater, et les deux s'interfacent avec un effort de configuration minimale. Il est par ailleurs très joli.

screen-grafana

Notre processus de collecte est quant à lui en cours d'industrialisation, mais pourrait être réalisé soit par de simple scripts, par Collectd ou Telegraph.

]]>
https://www.yaal.fr/blog/choisir-une-technologie-de-monitoring Mon, 24 Jul 2017 21:00:00 -0000
<![CDATA[ [Emplois AFPy] CTO à San Francisco chez le Netflix de l'Art ! - H/F ]]> https://www.afpy.org/posts/emplois/1499330164 Thu, 06 Jul 2017 07:36:04 -0000 <![CDATA[ [Emplois AFPy] Api Engineer chez le leader Européen du Big Data - H/F ]]> https://www.afpy.org/posts/emplois/1497432670 Wed, 14 Jun 2017 08:31:10 -0000 <![CDATA[ [Emplois AFPy] Lead Developer Python Web Back-End ]]> https://www.afpy.org/posts/emplois/1497264303 Mon, 12 Jun 2017 09:45:03 -0000 <![CDATA[ [Emplois AFPy] Ingénieur développement logiciel expérimenté ]]> https://www.afpy.org/posts/emplois/1495630170 Wed, 24 May 2017 11:49:30 -0000 <![CDATA[ [Emplois AFPy] Développeur junior python / data (H/F) ]]> https://www.afpy.org/posts/emplois/1494948231 Tue, 16 May 2017 14:23:51 -0000 <![CDATA[ [Emplois AFPy] Ingénieur Web Python Senior ]]> https://www.afpy.org/posts/emplois/1494909332 Tue, 16 May 2017 03:35:32 -0000 <![CDATA[ [Emplois AFPy] LEAD DEV PYTHON 3 H/F ]]> https://www.afpy.org/posts/emplois/1494870175 Mon, 15 May 2017 16:42:55 -0000 <![CDATA[ [Emplois AFPy] Développeu|r|se Python (Paris) ]]> https://www.afpy.org/posts/emplois/1494344163 Tue, 09 May 2017 14:36:03 -0000 <![CDATA[ [Emplois AFPy] Développeu.r.se Fullstack (Bordeaux) ]]> https://www.afpy.org/posts/emplois/1493973041 Fri, 05 May 2017 07:30:41 -0000 <![CDATA[ [Emplois AFPy] Développeur web Python (stage) ]]> https://www.afpy.org/posts/emplois/1493742785 Tue, 02 May 2017 15:33:05 -0000 <![CDATA[ [Emplois AFPy] Développeur web Python junior ]]> https://www.afpy.org/posts/emplois/1493742529 Tue, 02 May 2017 15:28:49 -0000 <![CDATA[ [Emplois AFPy] LEAD DEVELOPPEUR PYTHON / DJANGO (H/F) ]]> https://www.afpy.org/posts/emplois/1493291154 Thu, 27 Apr 2017 10:05:54 -0000 <![CDATA[ [Emplois AFPy] CTO expert Python cherchant à uberiser uber - H/F ]]> https://www.afpy.org/posts/emplois/1493106912 Tue, 25 Apr 2017 06:55:12 -0000 <![CDATA[ [Yaal] Un an de commits ]]> Les logiciels et les services web évoluent au fil du temps, selon les redéfinitions des besoins utilisateurs, l'émergence de nouveaux besoins, l'adaptation à de nouveaux marchés, etc.

Pour cela, le code source est modifié et complété. Il faut modifier l'existant, au minimum pour insérer le nouveau code. Le plus souvent, il s'agit de raffiner l'existant et donc principalement faire des modifications. L'exemple suivant montre un an d'évolution du code sur un projet existant depuis quelques années, sur lequel plusieurs personnes travaillent au quotidien. La quantité d'évolution montre les lignes de code ajoutées, modifiées et supprimées :

En valeur absolue

Graphique du nombre d'ajout, de modification et de suppression de lignes de code par jour

En part relative

Graphique du nombre d'ajout, de modification et de suppression de lignes de code par jour

Le graphique montre bien le fait les programmeurs passent surtout du temps à relire le code existant et le faire évoluer plutôt que d'écrire des pans entiers à partir d'une feuille vierge. D'où l'importance d'avoir un code source simple et lisible.

Les projets grossissent au fil du temps puisqu'il faut surtout modifier et ajouter des nouveautés. Supprimer des fonctionnalités n'arrive quasiment jamais. Les principales opportunités pour enlever du code sont donc :

  • la factorisation : supprimer des duplications de code source
  • l'externalisation : remplacer du code spécifique au projet pour le remplacer par une bibliothèque, un framework, etc.

NB : les données proviennent d'un projet existant depuis quelques années, sur lequel plusieurs personnes travaillent au quotidien.

]]>
https://www.yaal.fr/blog/un-an-de-commits Tue, 21 Mar 2017 22:00:00 -0000
<![CDATA[ [Yaal] PyConFr 2016 ]]> Comme tous les ans depuis 2013, Yaal a sponsorisé la PyConFr 2016. Arthur, Pierre, Stéphane et moi-même nous sommes rendus cette année à Rennes pour participer à l’événement.

Logo PyConFr 2016

Nous avons eu l’occasion de partager de bons moments avec la communauté Python francophone, mais également quelques intervenants internationaux. Je pense notamment à Ipsha Bhidonia qui nous a présenté les Web Push Notifications et nous fait part de son retour d’expérience sur son blog.

Nous en profitons également pour remercier tous les intervenants qui au cours de ces quatre jours ont contribué à différent projets dans les sprints et présentés des conférences de qualité dont les vidéos sont disponibles en ligne.

Yaal a également pris part à ces conférences grâce à Pierre et sa présentation Test Tout Terrain, encourageant les non-initiés à faire leurs premiers pas vers les tests en python (vidéo disponible ici) et Stéphane avec son lighning talk sur MarkdownMail, un outils créé par Yaal et disponible sur pypi.

Le développement par le test est une pratique que nous affectionnons particulièrement chez Yaal. Nous souhaitons donc mentionner Boris Feld qui a également prêché la bonne parole avec sa présentation Python testing 101.

Nous sommes également très heureux d’avoir pu échanger avec Alexis Métaireau, créateur de Pelican, un générateur de site statique que nous utilisons pour le blog de Yaal, Stéphane Wirtel, contributeur de Python 3.6, Arthur Vuillard de l’AFPY (Association Francophone de Python) et David Nowinsky (je vous invite à lire son article de blog). Vous pouvez également jeter un œil à l’article d’Alex Marandon et à la présentation de Florian Strzelecki sur la lecture et l’écriture de documentation !

Pour finir nous souhaitons remercier tous les organisateurs et bénévoles qui ont rendu cette PyConFr 2016 possible. En espérant vous recroiser l’an prochain !

Photo participants PyConFr 2016
Photo de Rémi Martin, source
]]>
https://www.yaal.fr/blog/pyconfr-2016 Mon, 28 Nov 2016 22:00:00 -0000
<![CDATA[ [Yaal] Publier sur pypi.python.org ]]> Nous avons écrits des bibliothèques génériques qui nous simplifient la vie en réutilisant les mêmes composants génériques entre plusieurs services. Ces bibliothèques sont disponibles lors de la création de virtualenv car ils sont disponibles sur un dépôt privé (livré par devpi) que nous hébergeons. Ainsi, lorsque nous créons un virtualenv, les paquets python disponibles sont l'union des paquets disponibles sur pypi.python.org ainsi que ceux que nous avons produits. Lorsque nous avons publié MarkdownMail, une de ces bibliothèques, directement sur pypi.python.org dans l'espoir qu'elle puisse servir à d'autres, nous en avons tiré quelques enseignements :

C'est facile ! :-)

Étant donné que la structure de la bibliothèque était déjà faite préalablement, il y avait peu de travail à ce niveau-là. Les améliorations réalisées pour la publication sont listées par la suite.

Pour publier sur pypi.python.org, il suffit de créer un compte sur le service et le valider (soit un clic dans un e-mail). Ensuite, les paramètres passé au setup.py permettent de réserver un nom disponible puis d'envoyer une nouvelle version vers pypi.python.org (cf. https://docs.python.org/3.4/distutils/packageindex.html).

Classifiers

Les classifiers du setup.py aident les utilisateurs à avoir une idée de l'application ou de la bibliothèque. Ils servent aussi pour trouver plus facilement ce que l'on cherche parmi les paquets disponibles.

Nous nous en servions déjà en interne pour définir certains éléments, en particulier pour expliciter la compatibilité de nos bibliothèques avec python 2 et/ou python 3. Il a suffit d'en rajouter certains pour être plus complet.

README

Ajouter un fichier README à la racine est un moyen habituel de documenter la bibliothèque. En faisant lire son contenu comme description longue dans le fichier setup.py, il sera affiché sur la page du paquet et sera donc directement lisible par les utilisateurs. Si le texte est au format reStructuredText (reST), alors il est affiché en html automatiquement. Dans le cas contraire, il sera simplement affiché comme du texte brut, dans une police à chasse variable. Dans ce cas, le rendu n'est pas très lisible, en particulier pour les exemples de code source.

reST ressemble à du Markdown mais n'en est pas. Pour ceux qui publient le code sur GitHub, GitHub fait un rendu HTML des README au format reST, et pas uniquement au format Markdown.

Tox

En rendant la bibliothèque publique, il est bon de valider les tests avec plusieurs versions de python. En interne, les versions sur lesquelles le code doit fonctionner sont connues (2.7 ou 3.4 actuellement chez nous). Tox est l'outil classique pour le faire et son intégration avec setup.py est documentée.

Devpi + pypi.python.org

Une fois que la bibliothèque est déjà présente en interne via devpi, il n'est plus possible d'en récupérer une plus récente sur pypi.python.org. Cela est dû à des raisons de sécurité : dans le cas contraire, un attaquant connaissant le nom d'un paquet utilisé en interne pourrait envoyer un paquet plus récent sur pypi.python.org. Ensuite, lors de la création d'un nouveau virtualenv, ce paquet serait installé au lieu du paquet interne, provoquant par la suite l'exécution du code de l'attaquant et non le code développé par le créateur de la bibliothèque.

Pour rendre ce cas possible, il suffit de modifier la configuration de devpi. Nous avons ajouté MarkdownMail à une liste blanche pour limiter l'effet de la modification.

Pyroma

Pyroma permet de connaitre les éléments manquants à un paquet. Il permet de tester les différents éléments de la bibliothèque pour améliorer la qualité du paquet. Par exemple, il signale l'absence des champs « keywords » ou « licence ». Pyroma ne remplace pas des outils vérifiant PEP8.

Environnement de dév. pour pypi.python.org

pypi.python.org permet d'envoyer la bibliothèque vers un dépôt de tests pour valider une bibliothèque avant de la rendre accessible au reste du monde. Pour cela, il suffit de préciser le dépôt dans lequel insérer une nouvelle version d'un paquet (grâce au paramètre -r).

De nouvelles évolutions sont envisagées pour améliorer l'usage de MarkdownMail pour les développeurs externes à Yaal, comme le fait de simplifier la possibilité de signaler des bogues ou faire des patchs. Cependant ces évolutions sont indépendantes de pypi. Le fait de publier cette bibliothèque nous a permis de l'améliorer et, plus généralement, de progresser sur les paquets python.

]]>
https://www.yaal.fr/blog/publier-sur-pypipythonorg Tue, 30 Aug 2016 21:00:00 -0000
<![CDATA[ [Yaal] Sud Web 2016 : Retour sur l’édition Bordelaise ]]> Journée 1 - Les conférences

C’est la première édition de Sud Web à laquelle nous participons, nous étions ainsi très curieux du format que ce rassemblement allait prendre.

La première journée proposait des conférences sur différentes thématiques. Bien accueillis par des viennoiseries et du café pour bien commencer la journée, nous avons très vite enchaîné avec le programme du jour. Les différents speakers se sont relayés tout du long via différents formats de conférences allant de 5 à 30 minutes. Les plus longues étant entrecoupées par des plus courtes pour dynamiser la programmation.

Le fil rouge qui articulait les talks entre eux, était une allégorie du fait de grandir. La maîtresse de cérémonie - une ex-ingénieur, à présent comédienne (Pauline Calmé) - jouait la carte de l’humour, en illustrant au travers de courtes scénettes les différents âges de la vie, de l’enfance à l’âge adulte. Cela permettait d’introduire les conférences sous un angle différent, évitait le moment de blanc entre les intervenants, permettait de détendre le public et symbolisait le cheminement du domaine du web, de ses balbutiements jusqu’à son âge actuel.

Côté speakers, de nombreux points positifs sont à mentionner : une envie de partager des expériences, une passion pour leur travail et une capacité de vulgarisation de leurs sujets pour qu’ils soient accessibles à tous. A Sud Web, on essaie de parler à tout le monde, que l’on soit ingénieur ou designer. Les problématiques et les expériences remontées sont suffisamment globales pour que personne ne soit mis de côté.

photo par Nazcange des participants

Photo par Nazcange

L’aspect très ancré dans l’actualité des thématiques abordées était fort appréciable : le talk sur le Code & Travail par Rachel Saada, avocate au barreau de Paris, les questionnements et inquiétudes concernant le marché du travail soulevés par Roxane Debruyker ou encore l’intervention de Matthew Caruana Galizia - journaliste et développeur web à l’ICIJ - sur le traitement et l’exploitation des données dans l’affaire des Panama Papers; sont le reflet de ce qu’il se passe dans la société et comment cela impacte le domaine du web dans lequel nous travaillons.

La présence d’une quasi-parité au niveau des intervenants est également un point suffisamment rare au sein des conférences pour être souligné. Sur 17 intervenants, notons la présence de 7 femmes, issues de toutes professions - de l’ingénierie au design - et d’une maîtresse de cérémonie.

Niveau organisation, les conférences étant ponctuées par des moments de pause pendant lesquels il était possible d’échanger tous ensemble et avec les speakers. L’avantage de suivre toutes les conférences est de pouvoir débattre pendant ces instants sociaux. C’est l’occasion de rencontrer des visages que l’on ne connait que via les réseaux, de se confronter à des profils nouveaux et d’échanger ensemble. La soirée de vendredi regroupait tous les participants au Potato Head, ce qui permettait de discuter dans un cadre plus intimiste et de prolonger les échanges débutés dans la journée. L’avantage des places limitées amenant un format plus convivial aux visiteurs et favorisant l’interaction par petits groupes.

photo par Marie Guillaumet de la conférence de Stefanie Posavec

Photo par Marie Guillaumet

Notre coup de coeur conférence

Nous avons beaucoup apprécié le retour de Stefanie Posavec sur son projet mené sur 52 semaines intitulé «Dear Data». Avec une autre designer d’informations, elles s’étaient données pour challenge de choisir d’enregistrer différents type de données de la vie de tous les jours et de se les envoyer mutuellement par la poste, avec chaque semaine une thématique différente : le nombre de fois où elles avaient dit merci, le nombre de fois où elles avaient rit, … et de les traduire sous forme de data visualisation sur des cartes postales à l’aide de crayons de couleurs, de feutres et d’autres outils de dessin traditionnel.

La démarche regorge d’idées intéressantes et porte un regard nouveau sur ces petits gestes du quotidien que l’on fait sans s’en rendre vraiment compte et que la technologie ne peut pas (encore !) enregistrer.

Journée 2 - Le forum ouvert

La deuxième journée reposait sur un système d’auto-organisation, via un forum ouvert. Les participants se réunissaient dans un lieu où différentes salles étaient mises à leur disposition pour organiser des ateliers, des débats, des séances de réflexion collectives sur des thématiques que tout le monde pouvait proposer et auxquelles chacun pouvait se rendre et en partir à loisir (pratique quand on a deux activités qui nous plaisent autant l’une que l’autre dans le même créneau horaire !). A nouveau, l’avantage du nombre limité de participants rendait les activités accessibles à tous, pour que chacun y trouve son compte et dans de bonnes conditions. De ce fait, cela permettait à tout le monde de devenir un acteur de Sud Web et de favoriser de nouveau les échanges et la collaboration.

photo par Marie Guillaumet des ateliers proposés

Photo par Marie Guillaumet

Parmi les ateliers proposés spontanément par les participants, on dénombrait de nombreux axes comme «Enseigner le web, ensemble ?» qui permettait de réfléchir sur les différentes méthodes d’enseignement existantes et sur les bonnes manières de transmettre ses connaissances, un atelier sur la revue de code et quelles étaient les bonnes pratiques, un atelier pour décrypter sa fiche de paie ou en savoir plus sur la mise en place du télétravail, une table ouverte sur le Burn out, comment le détecter et l’éviter, etc… (et même un très chouette atelier lettering et crayolas proposé par Laurence Vagner pour changer des pixels !)

Verdict : à refaire !

Cette première édition de Sud Web s’est révélée être une expérience agréable et très ancrée dans le monde du web d'aujourd'hui. Le format actuel est bien pensé et permet de proposer aux participants le passage d’une expérience de spectateur à celui d’acteur de la conférence.

Parmi les valeurs et les idées qui dominaient cette édition, le fait de se sentir bien dans sa vie et dans son travail, le partage, la participation, l’investissement des individus dans des initiatives collectives ou personnelles et l’envie d’apporter à la société et à notre domaine via des alternatives au système classique témoignent de l’évolution des métiers du web en France.

L’équipe (la «Thym» Sud Web) qui organise l’événement a effectué un travail remarquable, le mot à retenir de cette expérience est «Bienveillance». Une bienveillance que l’on retrouve aussi bien au niveau des organisateurs que des participants, qu’ils soient speakers ou visiteurs.

Nous sommes plutôt satisfaits de cette première expérience Sud Web et sommes convaincus de revenir l’année prochaine ! Et pourquoi pas, de proposer une thématique pour un forum ouvert autour du travail en équipe auto-organisée ou d’un retour d’expérience sur Yaal afin de rencontrer d’autres profils à la recherche d’alternatives plus humaines au monde du travail classique.

]]>
https://www.yaal.fr/blog/sud-web-2016-retour-sur-ledition-bordelaise Sat, 04 Jun 2016 21:00:00 -0000
<![CDATA[ [Yaal] Élargir la cible des utilisateurs au fur et à mesure de leur satisfaction ]]> Le premier groupe d'utilisateurs

La première étape d'une startup est de trouver un positionnement lui permettant d'obtenir des utilisateurs satisfaits. Le cas échéant, il lui faudra pivoter à la recherche d'un meilleur positionnement. Une fois un positionnement satisfaisant obtenu, le nouvel objectif est d'obtenir de la croissance (utilisateur et/ou chiffre d'affaire).

croissance

Dans le cas d'un objectif de croissance utilisateur, une des stratégie est de ne viser en premier lieu qu'un petit groupe et d'en faire des utilisateurs convaincus. Cela permet d'en faire des prescripteurs du service, ce qui participe aussi à la croissance.

De plus, une fois que l'acquisition du marché visé est assez grande, l'entreprise bénéficie d'un effet de réseau : à l'image du réseau téléphonique, plus le service est utilisé et plus les utilisateurs ont intérêt à l'utiliser. Cela permet d'acquérir plus facilement de nouveaux utilisateurs.

Les groupes d'utilisateurs suivants

Une fois le premier groupe convaincu, le but sera d'en satisfaire de nouveaux sans décevoir les premiers. C'est ce qu'a fait Facebook, en limitant l'usage aux étudiants d'Harvard, puis à tous les étudiants, puis au reste du monde.

croissance

Les versions successives du service permettent donc d'élargir la cible au fur et à mesure de l'acquisition d'utilisateurs, parallèlement à la communication vers les nouveaux groupes visés. Développer et publier de nouvelles versions par itération est adapté à cette stratégie. L'acquisition des utilisateurs se ralentissant une fois le point d'inflexion passé, la cible suivante ne doit être visée qu'ensuite.

Si cette stratégie est séduisante, il ne faut pas en négliger les limites :

  • la taille des marchés visés et la puissance de l'effet réseau est connue approximativement. Des études de marchés permettent de limiter cette incertitude.
  • le passage d'une cible à l'autre doit se faire sans perdre les précédents. Cela oblige à une suite logique d'acquisition des cibles visées.
  • elle s'adapte à un service visant les utilisateurs finaux, pas aux entreprises.

Un des avantages est de permettre le démarrage sur une niche connue des concepteurs, limitant la taille du produit minimum viable et donc les coûts de démarrage. Cela permet de valider rapidemment le service et les choix de départ. L'élargissement sera fait en sortant de la niche, ce qui est un chemin assez facile à réaliser. Le service proposé sera alors plus générique, visant un public de plus en plus large.

Agilité

Nous apprécions cette vue stratégique en accord avec les moyens tactiques qu'offrent les méthodes agiles, lucides sur la nécessité d'apprendre, de s'adapter et d'innover pour une entreprise en croissance.

]]>
https://www.yaal.fr/blog/elargir-la-cible-des-utilisateurs-au-fur-et-a-mesure-de-leur-satisfaction Thu, 17 Mar 2016 22:00:00 -0000
<![CDATA[ [Yaal] Les nouveautés de notre bibliothèque partagée, Livres de Proches ]]> On vous l’annonçait il y a quelques semaines, livresdeproches.fr faisait sa première sortie en public. Communication plutôt discrète dans un premier temps, nous voulions faire évoluer le site et ses fonctionnalités afin de vous proposer une expérience des plus plaisantes.

Mais Livres de Proches c’est quoi ?

Produit d’une réflexion d’équipe et d’un désir de faciliter l’échange autour de la lecture, c’est un projet qui nous tient à coeur. Son but est de vous proposer une plateforme virtuelle afin de partager avec vos proches, vos livres et vos lectures. Nous souhaitions toucher tous les « amoureux » de la lecture et leur apporter un outil facile d’utilisation au quotidien. Que vous soyez collectionneur, blogueur, ou simple passionné de livre, livresdeproches.fr est fait pour vous. Dotée d’une interface claire et simple, organiser sa bibliothèque virtuelle, partager ses livres, emprunter les livres de ses proches ou de son réseau et suivre votre compte n’a jamais été aussi simple.

Vous êtes blogueur et vous avez des livres à recommander ? Regroupez-les tous sur livresdeproches.fr et permettez à vos lecteurs de les retrouver facilement à un seul endroit ou sur vos différents sites web et blogs personnels grâce à l’utilisation de l’iframe et actualisez votre contenu en quelques clics.

Collectionneur ? Listez facilement tous vos livres en un seul endroit et gérez toute votre bibliothèque facilement. Vous pouvez aussi annoter vos différents ouvrages grâce à l'ajout et l'édition manuelle et entrez-y les détails qui vous semblent important.

Ou vous aimez tout simplement lire et découvrir chaque jour de nouvelles lectures ? Livresdeproches.fr vous offrira bientôt la possibilité de vous rapprocher de vos proches ou de vos amis grâce aux réseaux sociaux ou une simple adresse email afin d’emprunter leurs livres. Vous pourrez également gérer des communautés et regrouper les personnes qui partagent les mêmes goûts que vous dans des espaces dédiés.

Beaucoup d’autres fonctionnalités sont en préparation, toujours dans le but de vous offrir le meilleur de la plateforme. Vous découvrirez bientôt l’ajout de livre grâce au scan de code barre afin de vous permettre de remplir votre bibliothèque encore plus rapidement. Bientôt, personnalisez votre profil et partagez via les réseaux sociaux vos étagères. Suivez les bibliothèques des personnes qui vous intéressent.

Toutes ces évolutions et améliorations seront bientôt disponibles sur livresdeproches.fr mais vous pouvez dès à présent créer votre compte, remplir vos étagères virtuelles et découvrir la plateforme. Soucieux de respecter nos utilisateurs, la plateforme est gratuite et nous mettons un point d’honneur à respecter votre vie privée.

Tous les avis et retours, qu’ils soient positifs ou négatifs sont les bienvenus. Nous souhaitons vraiment que cette plateforme devienne la vôtre et vous proposer la meilleure expérience utilisateur !

Écrivez-nous !

À très bientôt sur livresdeproches.fr

]]>
https://www.yaal.fr/blog/nouveautes-bibliotheque-partagee Mon, 11 Jan 2016 22:00:00 -0000
<![CDATA[ [Yaal] Surfrider Open Campus, ouvert ! ]]> Il y a déjà un an Yaal a été choisi par Surfrider Foundation Europe pour assurer les aspects graphiques et techniques d’un nouveau projet d’envergure baptisé Open Campus. Aujourd’hui nous sommes fiers de vous annoncer la sortie de cette plateforme et par cette occasion opportune vous en parler plus en détail.

Page d'accueil Open Campus

L’association Surfrider est née d’une volonté de sensibiliser le public aux problèmes environnementaux qui menacent l’océan et le littoral. Au sein de Surfrider le Campus c’est leur centre d'éducation et de formation au développement durable. Il en existe plusieurs expressions. Le Campus In étant orienté sur des activités (expositions, conférences, débats…) dans leurs locaux et le Campus Out sur des interventions sur le terrain (ramassage de déchets sur la plage) ou bien dans les écoles. Mais jusqu’à présent il n’existait pas de véritable plateforme d’e-éducation. Open Campus est la réponse à ce manque.

Aspects phares du projet

Apprendre :
On peut suivre des cours allant du niveau débutant jusqu’à avancé sur six thématiques différentes. Un cours est divisé en plusieurs chapitres dans lequel on peut retrouver une variété de contenus tel que du texte, des vidéos, des images et des quiz. Les quiz permettent, à travers trois types de questions (réponse à choix multiple, réponse libre et texte à trous), de tester ses connaissances par rapport au sujet donné.

Page d'apprendre Open Campus

Quiz multijoueurs :
Pour utiliser les quiz dans un contexte de groupe un mode multijoueur a été développé. Un professeur, par exemple, peut initier un quiz pour ses élèves lors d’un cours sur un sujet tel que les déchets aquatiques. Les élèves, munis de tablettes, smartphones ou ordinateurs, peuvent répondre aux questions et voir les points gagnés au fur et à mesure de l’avancement. Un gagnant est désigné à la fin.

Quiz multijoueur sur telephone

Contribuer :
En plus des quiz proposés par Surfrider il est aussi possible pour les utilisateurs du site de créer leurs propres quiz. Ils peuvent même les rendre public afin d’en faire profiter la communauté. Une interface dédiée permet de voir ses quiz, ses favoris et ses quiz multijoueurs.

Ressources :
En complément des cours il existe aussi de nombreuses ressources vidéos.

Conclusion

Pour nous le point fort de ce projet c’est l’association réussite entre un graphisme sobre et efficace (merci Marianne), une interface fluide (merci ReactJS) et responsive et un back-end sur mesure (merci Stéphane). C’est cette association qui nous a permis de répondre efficacement au besoin que Surfrider nous a communiqué. Par ailleurs, nous avons pris plaisir à travailler sur un projet avec des valeurs qui sont en accord avec celles des membres de Yaal.

Bon lancement à Open Campus !

]]>
https://www.yaal.fr/blog/surfrider-open-campus-ouvert Thu, 03 Dec 2015 22:00:00 -0000
<![CDATA[ [Yaal] Agitation de particules démocratiques ]]> Nous venons de consacrer deux jours en équipe, accompagnés par un facilitateur externe, pour prendre un pas de recul sur notre modèle organisationnel. Je suis fier de la manière dont nous avons réussi à reformuler notre projet : permettre à chaque équipier de s'émanciper et j'apprécie aussi la formulation de notre stratégie organisationnelle : à chacun de faire vivre les dynamiques qu'il aime.

Cela fait déjà longtemps que nous progressons petit à petit dans cette voie, mais avoir su formuler aussi simplement ce que nous faisions et se confirmer mutuellement que c'est bien ce que que nous voulons, soude l'équipe et nous donne envie de continuer l'aventure !

Il faut bien sûr savoir étayer ces intentions par des pratiques, puisées par-ci par-là, évaluées concrètement, adaptées, abandonnées ou finalement appréciées et soutenues.

Aujourd'hui chez Yaal, à titre d'exemple, nous faisons vivre les pratiques suivantes :

  • nous réunir pour piloter les activités tous les lundis matins, façon GTD, sur un tableau Trello ;
  • faire suivre cette réunion par des conversations libres, ad lib, avec un bâton de parole ;
  • brainstormer pour les sujets particulièrement complexes ;
  • faire tourner ses doigts pour montrer que l'on veut avancer en réunion, pratique essentielle s'il en est ;
  • fournir une évaluation du temps passé en clôture des activités ROTI ;
  • satisfaire dans le temps le plus court les expressions de besoin (Lead Time) ;
  • avoir peu de sujets importants simultanément ;
  • prendre des décisions rapidement par Decider ;
  • etc.

Nous avons décidé lors de ces deux jours d'ajouter à cette liste :

  • faire appel à un facilitateur interne pour les sujets compliqués ;
  • faire appel régulièrement (annuellement ?) à un facilitateur externe ;
  • ralentir pour prendre les décisions importantes par consentement.

Et puis, une nouvelle pratique que je voudrais faire vivre :

  • la Communication Non Violente, pouvant se définir comme « le langage et les interactions qui renforcent notre aptitude à donner avec bienveillance et à inspirer aux autres le désir d'en faire autant ».

Un grand merci à notre facilitateur, que dis-je, à notre agitateur de particules démocratiques, qui, entre échauffements physiques et jeux de communication, a su nous faire travailler sur notre modèle, ouvrir les débats catalyseurs de changement et accompagner leur résolution avec subtilité. Le tout dans le respect de chacun et de notre projet collectif !

]]>
https://www.yaal.fr/blog/agitation-de-particules-democratiques Mon, 23 Nov 2015 22:00:00 -0000
<![CDATA[ [Yaal] Un mois de conférences ]]> Grâce à Yaal, j'ai pu participer à pas moins de trois conférences en un mois \o/

Pytong

Pytong est une petite conférence autour de python qui s'est déroulée à Lyon. Nous étions sponsor de l'édition :) Avec mes collègues Stéphane et Bruno, nous avons pu discuter sur deux jours avec d'autres professionnels experts et passionnés utilisant python dans un contexte web au quotidien. L'occasion de discuter des nouveaux outils et de l'évolution de l'écosystème Python.

On a pu y voir (entre autre):

EventSources ou SSE, les web-sockets en read-only

EventSource un protocole comme WebSocket plus simple (en lecture seule). Attention il y a une limite sur le nombre de connexions simultanées (nombre d'onglets ouverts limités). La présentation était un premier retour d'expérience de Pierre-Yves Chibon plutôt convaincant. Il ne reste plus qu'aux différents navigateurs de se mettre à la page !

Gestion de ses dépendances

Un présentation complète dispensé par Arthur Vuillard le co-organisateur de la pytong et gentil animateur de la journée :). (Les slides sont par ici.) Un rappel de la approuved façon de gérer les numéros de version (PEP440). J'en ai surtout retenu que l'on peut (avec de la confiance) borner les versions dans les fichiers requirements.txt plutôt que les fixer afin d'avoir les dernières corrections. Par exemple : requests >= 2.0, < 3.0 ou requests >= 2.0, == 2.* ou requests ~= 2.7

Mock considered harmful

Une présentations à charge sur les mocks. Verdict : ils sont nuisibles au refactoring et cachent des bugs. Donc à éviter quand c'est possible ! (utilisation de stubs dans la conf). Nous sommes arrivés au même constat par la pratique (et la douleur). Cette présentation et le débat qui a suivi m'a motivé pour présenter notre façons de tester chez Yaal. Donc merci à Boris Feld @lothiraldan !

Rendre son code lisible

Xavier Ordoquy @linovia_net nous a montré une présentation en francais basée sur The Clean Architecture de Brandon Rhodes. On approuve pas mal, mieux : on pratique. :)

Du site dynamique au document imprimable en Python

Enfin on a terminé par une présentation de WeasyPrint par Guillaume Ayoub. Le but : imprimer des pages HTML en utilisant la spéc CSS pour le print. Une présentation très sympa par quelqu'un de très calé sur le sujet :). On a quand même tristement conclu que l'impression finale nécessite quand même de bien configurer l'imprimante.

Les ateliers

Au format libre, on a parlé de tests, et d'outils :

Le dimanche matin

Après une soirée arrosée et bien remplie dans un bouchon lyonnais, on a joué à Symbioz, un jeu très sympa dont la version 2.0 est en prototypage par l'auteur. Un concept d'écosystème simple, mais difficile à gérer. On a également beta-testé un jeu basé sur les châteaux de la renaissance : Artigiano crée par Céline Dumas avec la collaboration de Guillaume Ayoub. Un jeu sous license Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France. Une mécanique de jeu à base de pile très efficace !

BDX.io

Co-organisateur de la précédente édition, j'étais cette fois-ci encadrant en soutien pour gérer l'accueil des 512 participants ! Bdx.io est la plus grosse conférence dédiée au développement sur Bordeaux tant en nombre de participants qu'en nombre de conférenciers. Plus de 40 conférences ! Je n'ai pu regarder que les conférences de l'après midi :

Créer son blog en 5 minutes et publier en Asciidoc !

Une présentation par Benoit Prioux @binout qui tient d'ailleurs son blog à l'aide de hubpress.io, avis aux adeptes de github et d'asciidoc !

Moi je code ma doc

Par Mehdi Rebiai. Cette présentation m'a permis de découvrire PlantUML et franchement pour la préparation des cours, formations ou autres doc, c'est cool !

« No one at google uses MapReduce anymore » - Cloud Dataflow explained for dummies

Une présentation rondement menée par Martin Gorner « Google Developer Relations » et Didier Girard une bonne pub/démo des capacités de Google cloud dataflow

Vers une architecture de microservices

Un retour d'expérience et une présentation live de Stéphane Lagraulet et Olivier Revial d'Ippon technologie, sur la mise en place d'une architecture de microservices face à un code legacy monolitique. Et un live coding sur toute la stack netflix.

La keynote de fin

Pilotée par Thomas Parisot sur une question très technique : monolithe ou microservices. Il a beaucoup été question de bonheur au travail et de bonheur personnel. Une keynote philosophique qui tranche avec le sérieux technique de la journée.

Agile Tour Bordeaux

Après avoir été co-organisateur en 2013, speaker en 2014, je suis venu en simple participant à l'édition 2015 dont le thème était : « le bonheur au travail » ! Bravo à toute l'équipe pour continuer ce travail bénévolement et garder cette conférence gratuite !

équipe agile tour 2015

Réflexion autour du travail et de son utilité (ou pas)

La keynote d'ouverture par Lionel Dricot @ploum lance le ton de la journée ! Une réflexion argumentée sur la fin du travail à lire en détails sur son blog.

Cette conférence porte un message clairement politique, et d'ailleurs la première question fût sur le revenu de base qui paraît être une des mises en oeuvre possible de cette fin du travail. Pour moi cette Keynote tranche avec celle des précédentes éditions plus portées sur des pratiques agiles, et aurait plus sa place dans une conférence type TEDx. Un choix risqué mais assumé par l'équipe de cet agile tour !

résumé

Mob mob mob programming

J'ai poursuivi la journée avec la conférence proposée par Emmanuel Gaillot @egaillot et Jonathan Perret @jonathanperret de la coopérative /ut7, également les co-créateurs du coding goûter. Un atelier live très sympa sur un serveur minecraft customisé à l'aide du CanaryMod et de ScriptsCraft voir ici pour les détails, dans la continuité de leurs activités de présentation du code aux enfants. Concernant le thème de cet agile tour : Oui on peut s'amuser en codant :). J'aurais aimé plus de discussions autour de leurs expériences « d'enseignant/coach/guru » auprès des enfants.

Lighting talks

LT : les feedbacks loops

Le premier de @rhwy Rui Carvalho sur les feedback loops, avec une image très sympa qui montre bien les boucles de contrôles (de la gestion de projet) et les boucles d'amplifications (de la qualité du code). Un autre moyen détourné de dire : l'agilité, oui, mais si vous ne faîtes rien sur ces boucles d'amplifications... vous aurez toujours une piètre qualité.

Sur ces boucles de feedback

LT : le courage de vivre consciemment

Le second talk de Jérôme Avoustin @JeromeAvoustin est un retour d'expérience sur sa carrière professionelle. Un appel aux développeurs malheureux en ESN (ex-SSII) et autres grosses boites, à aller de l'avant et à prendre des risques. Chez Yaal, ce pas là on l'a déjà fait, on est un collectif d'hommes et de femmes libres. :)

LT : la recette pour développer son logiciel dans le bonheur

Le dernier talk de Guillaume St-Etienne @guillaume_agile était vraiment lent, mais je suppose que la répétition était volontaire. En résumé, Guillaume souhaite un ou des outils magiques pour avoir un logiciel de qualité, rapide, qui s'autogère, assure les besoins clients, les anticipe, met la doc à jour tout seul, s'assure d'être à la pointe de la technologie... et fait le café !

Conclusion, cet outil magique existe : c'est un développeur ! Ce qui ne colle pas à cette fin du travail de @ploum :(

Chez Yaal, on a envie de compléter : c'est une équipe de développement, parce que le design d'interface des développeurs c'est pas encore ça :)

Ca prendra combien de temps ?

Après une pause déjeuner au soleil ! Je suis allé voir comme beaucoup d'autres la conférence d'Olivier Azeau @oaz. J'avoue avoir été pas mal déçu par cette présentation. Avec le recul je pense que c'est dû à cette volonté d'avoir un truc fiable pour estimer les développement.

C'est d'ailleurs l'idée expérimentée par Olivier : modéliser ces story points / tailles de T-shirt sous forme mathématique à l'aide de la théorie des probabilités section variable aléatoire. Olivier l'a bien annoncé : il n'est pas mathématicien, et du coup n'a pas pu vraiment répondre aux questions techniques. Je pense que c'est un premier retour d'expérience qui cherche à éliminer quelque part l'estimation d'experts au doigt mouillé. C'est dans l'optique du mouvement #NoEstimates dont vous pouvez lire quelques articles qui cherche à se débarasser de ce besoin d'évaluer à l'avance les développements.

Je ne suis pas convaincu du résultat, car au vu des graphes présentés, le constat amer est qu'entre l'estimation basse et l'estimation haute, on reste toujours sur un facteur 10, à 80% de probabilité. Même si une garantie mathématique se trouve derrière, je reste en tant que potentiel client d'une telle solution bien trop insatisfait. Le doigt mouillé du capitaine avec 30 ans de voile me paraît plus sûr que l'indice météo calculé, même si le résultat sur le long terme est le même. Cela reste une question de confiance dans le modèle. L'avantage que j'y vois est qu'on ne passe plus de temps à évaluer (NoEstimate), à la place on fournit le résulat d'un modèle mathématique.

Beaucoup de recherches ont été menées sur le sujet sans avoir de solution satisfaisante côté utilisateur.

Bref un sujet qui n'a pas encore trouvé de solution, mais en existe-t-il une ? Est-ce vraiment un problème ? (Pour faire des devis, oui !)

L'agilité en IUT

Enfin j'ai profité du retour d'expérience de Martine Bornerie @Martine__B et Irène Doan @idetido sur « l'agilité en IUT ».

Il est très intéressant de constater que cela fait tout juste un an que les projets en mode agile sont plus nombreux dans cet IUT MMI Bordeaux que ceux en cycle en V. Le début de la fin d'une époque ?

La recherche du bonheur

Enfin, on termine par la keynote de clôture d'Alexis Monville @alexismonville sur « la recherche du bonheur ». Les slides sont disponibles par ici. Le constat scientifique est formel : les gens heureux vivent mieux, plus longtemps, travaillent plus efficacement et bien d'autres qualités ! Bonus : ils aident les autres à mieux travailler en équipe !

Et Après ?

Pour d'autres retours, direction les blogs de :

]]>
https://www.yaal.fr/blog/un-mois-de-conferences Tue, 17 Nov 2015 22:00:00 -0000
<![CDATA[ [Yaal] Libérez-vous de votre framework ! ]]> Utiliser un framework, c'est partir à l'aventure sur un paquebot : c'est joli, solide, plein de pièces et l'équipage est au grand complet. C'est a priori rassurant. Malheureusement, la vie n'étant pas un long fleuve tranquille, il vaut mieux pouvoir changer rapidement de direction et être réactif qu'apprécier la qualité des bastingages. Pour la vie d'un produit, partir en hors-bord est préférable. Donc faire simple et léger.

Chez Yaal, nous utilisons un ensemble de bibliothèques cohérentes et chacune experte en son domaine. Par exmple, nous aimons utiliser Werkzeug pour les échanges HTTP, propulsé par un uwsgi performant, avec Jinja2 pour un templating efficace, ZODB pour une base de données objet, WTForms pour la validation des formulaires, celery pour l'exécution massive de tâches asynchrones, bleach pour se prémunir des injections de code, etc. Cela permet d'avoir les avantages d'une architecture modulaire sur une architecture monolithique.

Par défaut, nous utilisons les bibliothèques directement (par exemple bleach ou WTForms). Parfois, nous avons voulu faire apparaitre une abstraction de plus haut niveau. Par exemple, une bibliothèque wgsi pour Werkzeug, que nous avons nommée ywsgi. Nos bibliothèques sont préfixées d'un « y » pour être facilement différenciable des bibliothèques externes.

Organisation bibliothèques

Facilité de compréhension

Un code de petite taille est plus facile à appréhender, à comprendre et à faire évoluer. La base de code pour démarrer un projet est limitée à quelques bibliothèques. Les autres briques viendront s'y ajouter selon les besoins de chaque projet. La base de code reste donc minimale à chaque fois.

Réutilisation de l'existant

Il ne sert à rien de tout réécrire alors que certains problèmes ont déjà été résolus d'une manière qui nous satisfait. C'est pourquoi nous utilisons Werkzeug, Jinja, WTForms, etc.

Possibilité de changer un élément tout en gardant des autres

Les bibliothèques étant indépendantes, nous pouvons facilement en remplacer une si elle ne donne plus satisfaction. C'est grâce à cette modularité que nous avons pu remplacer SQLAlchemy par ZODB par le passé.

Mises à jour plus petites

Les bibliothèques étant indépendantes, les mises à jour sont faites au fur et à mesure de leur sortie. Les mises à jour sont plus petites et donc facilement maîtrisées.

Adaptation à nos préférences présentes et futures

Comme aucune architecture ne nous est imposée, nous pouvons faire évoluer l'architecture sans souci de compatibilité future avec un quelconque framework sous-jacent. De même les seules personnes à convaincre sont dans l'équipe. C'est plus facile quand votre lobbying se limite aux personnes qui sont dans le même bureau que vous. ;-)

Avec l'expérience accumulée, nous préférons largement cette façon de faire. Pourquoi ne pas vous aussi essayer cette voie rafraichissante ?

]]>
https://www.yaal.fr/blog/liberez-vous-de-votre-framework Thu, 05 Nov 2015 22:00:00 -0000
<![CDATA[ [Yaal] Livres de Proches ]]> Mesdames, messieurs, c'est avec une certaine émotion que nous vous proposons Livres de Proches : un service en ligne de gestion et de partage de livres s'adressant à la fois :

  • aux partageurs cherchant un outil leur facilitant le suivi de leurs livres prêtés ;
  • aux blogueurs qui souhaitent mettre en avant leur sélection de livres et les proposer à l'emprunt.

Nous nous appliquerons pour l'instant à satisfaire ces premières catégories d'utilisateurs, avant d'élargir l'horizon du service à moyen-terme.

Nous souhaitons être nous-mêmes partageurs et vous pouvez consulter notre sélection de livres en fin d'article et la retrouver sur notre page dédiée aux contributions.

Livres de Proches restera gratuit pour les particuliers et nous serons particulièrement attentifs au respect de votre vie privée. N'hésitez pas à nous contacter pour toute suggestion d'amélioration : nous nous tenons prêts à travailler avec vous pour vous rendre le service toujours meilleur !

]]>
https://www.yaal.fr/blog/livres-de-proches Tue, 29 Sep 2015 21:00:00 -0000
<![CDATA[ [Nouvelles AFPy] PyCon-fr 2015 l'appel à conférencier est prolongé ]]> https://www.afpy.org/posts/actualites/1438067732 Tue, 28 Jul 2015 06:15:32 -0000 <![CDATA[ [Nouvelles AFPy] PyCon-FR 2015 We Want You ! ]]> https://www.afpy.org/posts/actualites/1433966273 Wed, 10 Jun 2015 18:57:53 -0000 <![CDATA[ [Nouvelles AFPy] PyconFR'15 : Où nous emmèneras-tu cette année ? ]]> https://www.afpy.org/posts/actualites/1423208987 Fri, 06 Feb 2015 06:49:47 -0000 <![CDATA[ [Yaal] L'avenir ]]> Ce matin j'ai eu la chance d'assister à la soutenance de projet professionnel de 6 jeunes étudiants d'une grande école d'ingénieurs de Bordeaux. Cinq jeunes hommes et une jeune femme, tous aux profils d'une richesse incroyable. L'un code en C depuis le lycée, l'autre réalise des solutions domotiques dans son temps libre, une autre encore veut travailler à améliorer les interfaces hommes-machines pour aller à l'encontre de ses propres difficultés à communiquer et faciliter la vie de ses semblables. Leur défaut principal ce matin était leur trop grande humilité, l'impression de ne pas mériter leur place pour le job bien réel auquel ils candidataient fictivement. Ils manquent encore de maturité, de confiance en eux, et de compétences en communication - ô combien importantes - mais ils ont par ailleurs pour la plupart une déjà assez bonne idée de ce qui fait un bon manager, ou de ce qu'ils souhaitent atteindre comme équilibre entre vie professionnelle et personnelle. Aucun ne savait combien serait payé son job, ni ne semblait s'en soucier vraiment.

Hier avait lieu à La Ruche un évènement rassemblant des dizaines d'entrepreneurs en devenir, autour des thèmes de l'entrepreneuriat au féminin, de l'entrepreneuriat de moins de 25 ans, de l'entrepreneuriat numérique, et de l'entrepreneuriat social et solidaire. Beaucoup de jeunes femmes, pas mal de jeunes hommes, encore étudiants pour la plupart, plutôt issus d'écoles de commerce si j'ai bien compris, qui se posent des questions sur la création d'entreprise pour tout un tas de raisons personnelles. De mon côté, j'ai eu une discussion très intéressante avec une jeune femme en pointe sur l'économie sociale et solidaire, sujet que je connais peu, et qui cherchait elle à comprendre ce que nous faisons dans le "numérique" et pourquoi les politiques n'ont que ce mot à la bouche dernièrement. Sujet à creuser.

L'avenir ce n'est pas la FrenchTech ou les taux de la BCE ou le dernier fait divers qui agite la presse et sera oublié dans une semaine. L'avenir c'est eux. L'avenir ce sont ces jeunes gens qui ont eu la chance de recevoir une éducation de qualité, de grandir dans un pays en paix, et qui ont l'ambition de faire de belles choses, qui ont la motivation de se lever demain pour créer leur destin.

L'avenir, ce sont ceux qui y croient qui le font. C'est à nous tous de les y aider.

]]>
https://www.yaal.fr/blog/lavenir Thu, 22 Jan 2015 14:10:00 -0000
<![CDATA[ [Yaal] Yaal fait de l'escalade ]]> Cela faisait partie de nos Espoirs : l'équipe de Yaal s'est rendue vendredi dernier à la salle Roc Altitude pour une après-midi d'escalade sous l'oeil avisé de Dominique notre moniteur. Certains d'entre nous ont ainsi pu s'initier pour la première fois à ce sport, tandis que les plus habitués ont attaqués des pentes plus ardues.

Vous pouvez retrouver les photos sur notre page Facebook.

Nul doute que nous aurons l'occasion d'y retourner !

]]>
https://www.yaal.fr/blog/yaal-fait-de-lescalade Mon, 15 Dec 2014 10:00:00 -0000
<![CDATA[ [Yaal] Nous soutenons la première édition de BDX.IO ]]> La communauté des développeurs est très active à Bordeaux. Ces derniers se réunissent régulièrement pour de nombreux évènements comme les présentations du Bordeaux JUG, les apéros Ruby ou JS, les Creative Tuesdays, etc. Pour autant, il manquait un évènement fédérateur, de plus grande ampleur, permettant de rassembler toute la communauté du développement autour de conférences techniques. C’est l’ambition de BDX.IO qui se tiendra le 17 octobre 2014 au sein de l’ENSEIRB en pleine Semaine Digitale de la ville de Bordeaux.

Bannière BDX.IO

Plus de 40 orateurs viendront animer 24 conférences d’une heure, 16 lightning talks, et 3 ateliers pratiques sur des sujets aussi variés que Clojure, ElasticSearch, Polymer ou DevOps et bien d’autres encore. En face, ce ne sont pas moins de 250 participants qui ont déjà pris leur place pour parfaire leurs connaissances des langages les plus modernes, des nouveaux designs ou bonnes pratiques, des techniques d’architecture et d’outillage.

Yaal est très heureux de soutenir cette première édition de BDX.IO et nous espérons vous y voir nombreux.

]]>
https://www.yaal.fr/blog/nous-soutenons-la-premiere-edition-de-bdxio Tue, 07 Oct 2014 10:37:00 -0000
<![CDATA[ [Yaal] PyConFr 2014 ]]> Yaal est à nouveau sponsor de la conférence Python francophone pour 2014, PyConFr. Cette année, la conférence et les sprints auront lieu du 25 au 28 Octobre à Lyon.

En 2013, nous avons participé aux quatre jours de conférences et comptons bien faire de même cette année ! Des conférences et des discussions enrichissantes ainsi que de nouvelles idées nous ont permis d'améliorer nos pratiques et nous motivent à recommencer cette année.

Notre participation précédente nous a apporté, entre autres, le courage de normaliser le lancement de nos applications grâce à des Makefile et l'utilisation de WebTest pour la réalisation des tests de nos applications web. Gageons que nous allons faire de nouvelles découvertes lors de cette édition 2014 !

]]>
https://www.yaal.fr/blog/pyconfr-2014 Mon, 15 Sep 2014 07:00:00 -0000
<![CDATA[ [Nouvelles AFPy] PyCon.FR 2014 ]]> https://www.afpy.org/posts/actualites/1392311614 Thu, 13 Feb 2014 16:13:34 -0000 <![CDATA[ [Nouvelles AFPy] Naissance d'une communauté Saltstack francophone ]]> https://www.afpy.org/posts/actualites/1392304489 Thu, 13 Feb 2014 14:14:49 -0000 <![CDATA[ [Yaal] Yaal officiellement agréé centre de recherche ]]> Yaal est officiellement agréé centre de recherche par le Ministère de l'Éducation Nationale, de l'Enseignement Supérieur et de la Recherche.

Cet agrément permet à Yaal de faire bénéficier ses clients du crédit d'impôt recherche dans le cadre de développements innovants. (Article 244 quater B du code général des impôts pour les organismes de recherche privés).

]]>
https://www.yaal.fr/blog/yaal-officiellement-agree-centre-de-recherche Wed, 15 Jan 2014 10:00:00 -0000
<![CDATA[ [Yaal] Agile Tour Bordeaux 2013 ]]> Suite à notre sponsoring d'Agile Tour Bordeaux 2013, l'équipe organisatrice nous a offert la possibilité de publier un article pour nous présenter à l'ensemble des participants de l'événement.

Yaal est fondée en février 2010 avec l'objectif de créer un contexte propice à l'agilité, sans limite. L'aventure ne fut pas de tout repos ni sans certains accrocs, mais nous sommes aujourd'hui très fiers de ce que nous avons construit. Nous allons tenter par ces quelques lignes de vous décrire ce qui fait aujourd'hui notre force et notre fierté. Peut-être cela vous sera-t-il utile pour tenter une expérience similaire à la nôtre ? peut-être cela vous donnera-t-il envie de nous rejoindre ?

Yaal ce sont des startups dans lesquelles nous avons choisi d'investir techniquement : yuticket.com, jestocke.com et myelefant.com.

Pourquoi investissons-nous ? Pour créer une confiance durable avec les porteurs de projet. Parce qu'ainsi nous avons la conviction que chacun fait du mieux qu'il peut en fonction des besoins commerciaux et des finances disponibles. Parce qu'ainsi notre contractualisation est réduite à l'essentiel : nos destins sont liés et c'est dans la collaboration que nous réussirons.

Yaal c'est une équipe d'associés-salariés : Arthur est gérant et stratège, Aurélien est pilote fonctionnel, Justin est designer web, Bruno et Stéphane sont développeurs, Colin est développeur et facilitateur.

Pourquoi sommes-nous (bientôt) tous associés ? Pour garantir le bien-être de chacun et donc de notre organisation. Pour nous assurer que chacun puisse entreprendre toutes les actions nécessaires à la satisfaction des clients, tout aussi surprenantes qu'elles puissent être. Nous sommes libres, ensemble, démocratiquement, pour nous et pour nos clients.

Yaal ce sont des processus légers, pour plus d'efficacité et plus de plaisir !

Nous nous réunissons toutes les semaines pour aborder tout sujet qui le mérite. Nous nous réunissons tous les mois pour actualiser notre vision de Yaal à 1 mois, 3 mois, 6 mois, 1 an et 3 an. Nous nous dotons de métriques de performance. La comptabilité est ouverte. Nous invitons nos clients à partager nos bureaux quand ils le souhaitent. Nous faisons du TDD et des revues de code. Nous binômons ou programmons côte à côte. Nous déployons nos logiciels en quelques secondes, en intégration, recette ou production, 10 fois par jour si besoin.

Yaal c'est enfin l'environnement de travail que nous nous sommes construit : des bureaux en plein centre de Bordeaux, des vélos de fonction haut de gamme, des doubles écrans 24'', disques SSD, Macbook air, écran Thunderbolt, téléphones et ordinateurs portables.

Et aujourd'hui, nous sommes heureux de nous lever tous les matins, fiers de notre quotidien \o/

Logo Agile Tour Bordeaux 2013

]]>
https://www.yaal.fr/blog/agile-tour-bordeaux-2013 Fri, 08 Nov 2013 10:00:00 -0000
<![CDATA[ [Nouvelles AFPy] L'appel à contribution pour PyconFR'13 est ouvert ! ]]> https://www.afpy.org/posts/actualites/1374511126 Mon, 22 Jul 2013 15:38:46 -0000 <![CDATA[ [Nouvelles AFPy] Julython ! Contribuez à des projets opensource. ]]> https://www.afpy.org/posts/actualites/1373475142 Wed, 10 Jul 2013 15:52:22 -0000 <![CDATA[ [Nouvelles AFPy] Un hackathon à Paris ? ]]> https://www.afpy.org/posts/actualites/1373474773 Wed, 10 Jul 2013 15:46:13 -0000 <![CDATA[ [Yaal] AgileFrBot propulsé par rss2reddit ]]> Je suis heureux de vous présenter rss2reddit et AgileFrBot !

Reddit est un excellent outil pour l’intelligence collective. Il permet notamment d’ouvrir des espaces thématiques et d’y accumuler des liens vers des articles. Ces liens peuvent être qualifiés et commentés par les usagers, et sont ainsi exploitables selon les appréciations de la communauté.

rss2reddit est un outil — réalisé par votre serviteur — qui permet de lire des flux RSS et de soumettre automatiquement sur Reddit les billets les plus récents.

AgileFrBot est un robot-utilisateur du sous-reddit dédié à l’agilité francophone, implémenté grâce à rss2reddit.

Je vous invite à me soumettre de nouvelles sources de flux RSS à ajouter à la liste actuelle. Je suis évidemment ouvert à toute suggestion ou contribution pour améliorer le robot.

Logo Reddit

]]>
https://www.yaal.fr/blog/agilefrbot-propulse-par-rss2reddit Tue, 07 May 2013 09:00:00 -0000
<![CDATA[ [Nouvelles AFPy] Le nouveau site de l'AFPy ]]> https://www.afpy.org/posts/actualites/1364754937 Sun, 31 Mar 2013 17:35:37 -0000 <![CDATA[ [Yaal] Agile Tour Bordeaux 2012 ]]> Cette année encore toute l’équipe de Yaal a participé à l’Agile Tour Bordeaux !

Merci aux organisateurs, aux orateurs, aux sponsors et partenaires, tout s’est parfaitement déroulé !

Nous sommes très heureux d’avoir pu apporter notre pierre à l’édifice en tant que partenaire technique avec la billetterie en ligne yuticket.com, et d’avoir pu y donner notre propre retour d’expérience !

J’ai particulièrement apprécié la tenue des lightning talks, synthétiques et dynamiques. Peut-être pourrait-on s’appuyer un peu plus sur ce format là pour partager nos expériences et favoriser la rencontre des acteurs du numérique bordelais autour des sujets qui les passionnent… pour le prochain Agile Tour Bordelais ou pour un nouvel événement qui lui donnerait le change au printemps ?

Logo Agile Tour Bordeaux 2012

]]>
https://www.yaal.fr/blog/agile-tour-bordeaux-2012 Sun, 14 Oct 2012 09:00:00 -0000
<![CDATA[ [Nouvelles AFPy] PyconFR aura lieu du 13 au 16 Septembre à Paris, la villette ! ]]> https://www.afpy.org/posts/actualites/1345377295 Sun, 19 Aug 2012 10:54:55 -0000 <![CDATA[ [Nouvelles AFPy] Actualités ]]> https://www.afpy.org/posts/actualites/1345367761 Sun, 19 Aug 2012 08:16:01 -0000 <![CDATA[ [Yaal] « Livrez fréquemment un logiciel opérationnel... » ]]> 73 jours après notre rencontre avec un porteur de projet dynamique et 89 déploiements en plateforme de recette, le service yuticket.com est sortie en bêta privée !

17 jours plus tard, grâce aux retours de nos 3 premiers courageux utilisateurs, nous comptons 42 nouvelles livraisons en recette, 21 livraisons en production, et nous ouvrons la création d’événements pour tous !

]]>
https://www.yaal.fr/blog/livrez-frequemment-un-logiciel-operationnel Sat, 17 Mar 2012 10:00:00 -0000
<![CDATA[ [Yaal] Un aquarium pour votre coding dojo Extreme Programming ]]> Après une courte pause, les dojos de programmation d’Okiwi ont repris cette année. Ils sont maintenant hébergés par Arpinum les seconds lundis du mois et chez Yaal les quatrièmes lundis. Nous étions donc lundi dernier dans les locaux de… l’Auberge Numérique… qui héberge Yaal. Vous suivez ? Pour en savoir plus sur ces dojos, voire vous joindre à nous la prochaine fois, vous pouvez vous renseigner ici ou même vous inscrire à la liste de discussion de l’association.

Aquarium Extreme Programming de face

Lundi dernier donc...

Nous n’étions qu’en petit comité lundi soir, quatre joyeux codeurs, mais le lieu doit nous permettre de monter confortablement à une dizaine de personnes comme l’an dernier. Après s’être demandé ce que nous allions coder ensemble — un jeu de la vie en Javascript — nous nous sommes demandé comment s’organiser… Aha ! et pourquoi pas avec un aquarium ?

L’aquarium !

L’aquarium — fishbowl — est un outil de facilitation de groupe dans lequel seul un sous-groupe est actif, les autres étant spectateurs. Les actifs sont assis au centre et une chaise vide supplémentaire est disponible. Si une personne spectactrice veut devenir active, elle peut venir s’y assoir. Une personne doit alors libérer sa place pour devenir spectatrice à son tour.

Et alors ?

Ben ça fonctionne plutôt bien pour un dojo de programmation. Ca veut dire trois chaises et trois claviers pour un binôme actif en permanence. C’est léger à organiser et c’est dynamique. Celui qui a de l’énergie et qui veut s’exprimer peut le faire sans demander la permission. Bref, une belle petite découverte pour ma part. Vous voulez essayer ?

Aquarium Extreme Programming de dos

]]>
https://www.yaal.fr/blog/un-aquarium-pour-votre-coding-dojo-extreme-programming Thu, 26 Jan 2012 10:00:00 -0000
<![CDATA[ [Yaal] Désir et responsabilité ]]> Innover suppose de sortir de la re-production, de la copie, pour imaginer et réaliser quelque chose de radicalement nouveau.

Mais le terrain est fuyant :

  • ce que l’on juge être de valeur évolue dans le temps et selon les événements,
  • décrire un résultat à produire est un exercice d’imagination et de communication difficile,
  • planifier efficacement suppose d’anticiper l’arrivée d’événements inconnus.

Ainsi ni la qualité du logiciel, ni la qualité de l’organisation qui le produit ne sont évaluables a priori : il faut que le logiciel soit réalisé pour estimer sa valeur, puis pour évaluer l’organisation qui l’a produit.

Stratégies légères

A ces difficultés les agilistes répondent en stratèges et se dotent d’heuristiques selon les situations. Communément, ils réalisent le logiciel petit à petit sous les yeux et dans les mains des utilisateurs, qui sont alors mis en situation d’évaluer ce qui est produit aussitôt que possible.

Les utilisateurs sont mis en situation de réactualiser leur désir, et les développeurs leur organisation.

Désir et responsabilité

Réactualisant à volonté leur organisation, les développeurs agiles deviennent des acteurs responsables et désirants. Désirants parce qu’ils évaluent leur organisation, en imaginent et mettent en oeuvre d’autres possibles. Responsables parce que leur organisation n’est plus choisie pour eux, mais choisie par eux.

Cette condition du développeur agile peut s’avérer nouvelle et déroutante. Les développeurs peuvent éprouver soit un réel plaisir à mettre en oeuvre les organisations qu’ils imaginent, soit une grande frustration en cas d’empêchement.

Organisation désirante

La réussite d’une équipe de développement agile est donc fortement liée à la culture de son entreprise, et de ses réactions face à l’expression des désirs de ses membres, et de leurs propositions de ré-organisation.

Vous êtes peut-être un artisan logiciel, êtes-vous aussi un artisan de votre organisation et de ses objectifs ?

Funambule

]]>
https://www.yaal.fr/blog/desir-et-responsabilite Mon, 15 Aug 2011 09:00:00 -0000
<![CDATA[ [Yaal] Interprétation généreuse ]]> Peu citée, peu commentée, la pratique de l’interprétation généreuse me paraît être une des rares pratiques fondamentales de l’agilité. Invitant à la pensée systémique et à l’action congruente, elle peut être considérée comme le moteur de l’adaptation continue.

Une formulation courante de l’interprétation généreuse est celle de la Directive Première des rétrospectives agiles : « Quel que soit ce que nous découvrons, nous devons comprendre et croire sincèrement que chacun a fait du mieux qu’il a pu, en fonction de ses connaissances d’alors, de ses compétences, des ressources disponibles et de la situation. »

L’exercice peut devenir difficile lorsque les émotions prennent le dessus : « Puis-je trouver une, deux, voire trois interprétations généreuses de la situation ? »

Cette pratique a ces grandes vertus :

  • d’une part de se construire une représentation d’une situation dans laquelle le ressentiment et la culpabilité n’ont pas leur place,
  • d’autre part de mettre en lumière comment les actions des uns et des autres sont sur-déterminées de manière systémique.

Il s’agit donc de lever un brouillard d’émotions ou d’interprétations hâtives sur les événements pour essayer de n’en garder que des ressorts vertueux, et de communiquer ainsi sur une représentation à même d’être entendue le plus largement et de créer le consensus.

Il s’agit de se poser la question de l’action, sur un terrain constructif.

Communication

]]>
https://www.yaal.fr/blog/interpretation-genereuse Sat, 25 Jun 2011 09:00:00 -0000