Forum Logiciel : diffusion de connaissance et d’informations sur toutes les activités liées au développement d’applications informatiques en entreprise.
Blogs de Développeurs: Aggrégateur de Blogs d'Informatique sur .NET, Java, PHP, Ruby, Agile, Gestion de Projet
Forum Logiciel : diffusion de connaissance et d’informations sur toutes les activités liées au développement d’applications informatiques en entreprise.
C’est maintenant Officiel, la saison 02 de Rupture Douce est maintenant dans les bacs … enfin les bacs virtuels avec possibilitĂ© de commander une Ă©dition papier, ePub ou pdf sur lulu.com
J’avais ratĂ© la saison 01, pas la lecture du livre que j’avais adorĂ©, mais en tant qu’auteur et je m’Ă©tais promis de me raccrocher au wagon pour la saison 02.
La mĂ©taphore du wagon est plutĂ´t bonne, car la locomotive de cette initiative, en la personne de Laurent Sarrazin, est particulièrement pleine d’Ă©nergie – il en faut des tonnes ! – et donc attention Ă ne pas rater le marche pied quand le train du plaisir de travailler ensemble prend la route.
La saison 01 Ă©tait particulièrement intĂ©ressante car elle fourmillait de petites, ou grandes, histoires authentiques de grenouilles agiles qui racontaient leurs expĂ©riences, leurs joies et parfois leurs soucis. La saison 02 est dans la mĂŞme lignĂ©e, avec 25 auteurs, des hommes, des femmes, des histoires liĂ©es, un dessinateur d’exception, des interludes, un raton laveur, des souvenirs et mĂŞme une prĂ©face d’Alistair Cockburn. La lecture se fait dans le sens qu’il vous plait, en passant de l’une Ă l’autre en fonction de leurs liens, au hasard en ouvrant le livre Ă n’importe quelle page, ou dans la logique de prĂ©sentation proposĂ©e.
Le livre est payant et les revenus seront reversĂ©s Ă une Ĺ“uvre caritative ou serviront Ă la traduction en anglais, aucun auteur n’est rĂ©tribuĂ©, ce n’Ă©tait que du plaisir.
J’espère que vous prendrez autant de plaisir Ă le lire que nous avons pris Ă l’Ă©crire
Pour vous donner l’eau Ă la bouche, du moins j’espère, voici le dĂ©but de mon histoire : « Osons Jouer »
L’autre soir, je zappotais au hasard quand je suis tombĂ© sur une sĂ©rie qui raconte l’histoire d’une petite fille avec quelques pouvoirs magiques. L’Ă©pisode qui passait montrait une salle de classe anglaise avec une directrice particulièrement dĂ©testable.
Ce n’est pas vraiment l’histoire ou la qualitĂ© de la sĂ©rie qui a fait arrĂŞter mon zapping, mais ce qui Ă©tait marquĂ© en très gros au-dessus du tableau noir de la classe :
« If you are having Fun, You are not Learning! »
Cette phrase m’est revenue en Ă©cho Ă ce que j’entends rĂ©gulièrement dans les entreprises lorsque je propose d’animer un jeu pour apprendre des pratiques ou des principes agiles. Les propos tenus sont rarement aussi cinglants que la phrase au-dessus du tableau, mais l’intention est la mĂŞme.
…. suite dans Rupture Douce saison 02 …
Enregistré le 18 mai 2013
Téléchargement de l’épisode LesCastCodeurs-Episode–79.mp3
News Mix-IT 2013Retour de Mix-IT http://armaklan.org/blog/article37/mixit-2013
Groovy http://groovy.codehaus.org
Ceylon http://ceylon-lang.org
Kotlin http://kotlin.jetbrains.org
Google Glass http://www.google.fr/glass/start/
43.7 milliards de dollars sur les 50.2 milliards de revenus de Google l’année dernière viennent de la publicité
Résumé des annonces
Android, c’est 48 milliards d’apps installées, 900 millions de téléphones activés (1 million par jour en ce moment)
Android Studio un IDE pour Android basé sur Intellij IDEA, adios Eclipse !!!
750M d’utilisateurs Chrome, et Chrome permet la recherche vocale quand on lui dit “ok google”, propose l’implémentation de WebP
Google Wallet va permettre de s’envoyer de l’argent par l’intermédiaire de Gmail, de stocker ses détails de paiement pour les faire fonctionner sur différents sites automatiquement
Nouveau design Google+ avec des colonnes, avec de l‘amélioration de photo automatique (HDR, skin softening, Gif animé, exposition…), Cross platform / SSO Google+ signin, tag automatique des photos reconnues
Google Maps remis à jour, avec affichage de carte personnalisé en fonction des recherches, avec fusion avec Google Earth, visualisation de la terre, des nuages en temps réel, de nouvelles capacité de calcul d’itinéraire en fonction du moyen de transport, un mapping 3D généré avec des photos aériennes et d’utilisateurs pour les intérieurs. L’API pour Android proposera de nouveaux services en plus : le “Fuse Location Provider” pour avoir de la localisation plus rapide et consommant moins d’énergie, une API de Geo Fencing, et d’activity tracking (avec l’accéléromètre pour détecter les types de mouvements de marche, course, etc) pour faire concurrence aux services et gadgets type FitBit
Google Hangouts disponible sur toutes les plateformes, fusionnant les différents systèmes de messagerie de Google, et qui aura sans doute le support des SMS plus tard, et sinon il y a aussi le partage de desktop avec Google Hangouts
Google Cloud Messaging qui permet de synchroniser les notifications, communication bidirectionnelle avec le serveur
Google Now intègre de nouvelles “cartes”, des rappels vocaux
Google Racer : un jeu qui permet de “connecter” plusieurs écrans pour jouer à une course de voiture à plusieurs
Samsung Galaxy S4 version Google et chaque spectateur a son Google ChromeBook Pixel !
Google Play s’enrichit d’un service de gaming, d’un service de musique à la spotify pour 10 dollars par mois, et Google Play for Education qui permet aux écoles de pousser des applis vers ses étudiants
Google Compute Engine ouvert à tout le monde, des disques persistants, des options de routage, du billing plus fin
PHP sur App Engine comme nouveau langage et le datastore de GAE est disponible indépendamment
App Engine TCK : il y a un TCK maintenant pour App Engine, qui permettra à d’autre de proposer la même plateforme, réduisant ainsi le locking
CapeDrarf par JBoss http://www.jboss.org/capedwarf
Java 8 à nouveau retardé annonce de Mark Reinhold
Le numérotage bizarre de Java SE avec des multiples de 20 et de 5
sun.misc.Unsafe et les trucs spaces qu’on peut faire avec
LMAX Disruptor http://lmax-exchange.github.io/disruptor/
Présentation bien ficelée sur le framework de test Spock
Librarie pour faire de la détection de language
Java EE 7 apprové https://blogs.oracle.com/theaquarium/entry/java_ee_7_platform_completes
Wildfly Roadmap et planning - Java EE 7, Hibernate ORM perf, Undertow
Restx http://xhab.blogspot.fr/2013/05/introducing-restx-lightweight-open.html
Dagger 1.0 http://corner.squareup.com/2013/05/dagger-1.0.html
Gaelyk 2.0 est sorti http://glaforge.appspot.com/article/gaelyk-2-0-is-released
SpringSource lance un nouveau framework pour des applications asynchrones : Reactor
SpringSource annonce Spring-XD pour simplifier le Big Data à la sauce Spring
Un virus dans l’espace http://www.telegraph.co.uk/technology/news/10049444/International-Space-Station-to-boldly-go-with-Linux-over-Windows.html
Toujours sur le thème de l’espace, le commandant a un compte twitter super actif avec de chouettes photos de l’espace, et avant de rentrer sur terre, il a chanté et enregistré une vidéo de Space Oddity de David Bowie danls la station spatiale.
Patrick Chanezon va chez Microsoft http://wordpress.chanezon.com/2013/05/13/hello-microsoft/
Introduction aux différents types de typage
Visualisation cartoon des concepts de concurrence (lock, actors, STM)
Survol des solutions de paiement en ligne, si on veut rajouter du paiement dans son appli : solutions de paiement
Geek stuff, Guillaume a reçu sa montre Pebble ! Ils ont sorti leur SDK pour pouvoir coder sa montre… en C
Outils de l’épisodeTig http://blogs.atlassian.com/2013/05/git-tig/
JUG et ConferencesContactez-nous via twitter http://twitter.com/lescastcodeurs
sur le groupe Google http://groups.google.com/group/lescastcodeurs
ou sur le site web http://lescastcodeurs.com/
Flattr-ez nous (dons) sur http://lescastcodeurs.com/
En savoir plus sur le sponsoring? sponsors@lescastcodeurs.com
Comme promis dans le billet précédent, voici le communiqué de presse officiel pour la session 2013 de la Web-5 :
L’association Web-5 est une association Ă but non lucratif.
Dans le cadre de nos activités, nous organisons une conférence annuelle sur les nouvelles technologies du Web (front-end et back-end).
Notre premier Ă©vènement (http://conf2012.web-5.org) a Ă©tĂ© un franc succès. Nous avons Ă©tĂ© Ă©paulĂ©s par des acteurs majeurs du dĂ©veloppement Web tels que IBM, Mozilla, Zenexity, Wakanda, GitHub… et sommes parvenus Ă rassembler environ 120 personnes de 16 nationalitĂ©s diffĂ©rentes !
Les sessions de la confĂ©rence se sont Ă©talĂ©es sur 3 jours : 5 demi-journĂ©es de confĂ©rences et une d’atelier.
22 confĂ©renciers ont pris la parole ce qui reprĂ©sente environ 20 heures de contenus d’un haut niveau d’expertise technique avec comme intervenants des personnalitĂ©s telles que Robert Nyman, Michal Budzinsky et Sam Foster de la Fondation Mozilla, Christophe Jolif et Patrick Ruzand d’IBM, Philip Tellis (ex) Yahoo, Dylan Schiemann le co-fondateur de Dojo Toolkit et bien d’autres !
Cette année, la conférence Web-5 revient avec des sujets encore plus variés. Touchant aux problématiques rencontrées par les développeurs, administrateurs systèmes, architectes, designers, etc. dans leur travail quotidien.
Résolument technique, la conférence Web-5 proposera une nouvelle fois des talks de niveau expert, dédiés aux professionnels.
Cette fois nous proposons un format deux tracks, une session front-end (JavaScript, design, HTML5, real-time, accessibilité, testing, etc) et une session back-end (databases nosql, php, python, administration et monitoring, performance, etc).
Deux journées intenses qui, nous l’espérons, apporteront de nouvelles idées aux participants, ou confirmeront des choix techniques délicats grâce à l’expertise et l’expérience des speakers qu’ils pourront écouter et rencontrer.
Parce qu’il nous tient à coeur de démocratiser la technique et le savoir, nous avons travaillé avec nos partenaires afin de réduire au maximum le prix du ticket d’entrée. Permettant ainsi aux TPE-PME, aux freelancers, voire aux étudiants, de participer à cet événement qui, nous en sommes convaincus, sera enrichissant pour tous.
Pour plus d’information, vous pouvez consulter le site officiel : http://conf2013.web-5.org
Vous pouvez aussi nous suivre sur twitter : @web5_conf.
Rendez-vous les 14 et 15 Juin 2013 à Béziers pour la deuxième édition de la conférence Web-5 !
Comme vous l'aurez remarqué dans mon article précédent, je me lance dans les montages électroniques, basés sur la platine Arduino et tout son écosystème.
Aujourd'hui je vous propose d'aller plus loin : nous allons voir comment établir une communication sans fil grâce aux modules radio Xbee. Le projet ici est de recevoir sur PC les mesures d'un capteur de température distant.
Matériel nécessaire


Mon petit conseil pour l'achat de tout ceci est de commander sur le site Matlog : un revendeur français très bien équipé garantissant une livraison rapide.
Vous aurez également besoin du logiciel de configuration X-CTU fourni par Digi, fabricant des modules Xbee et d'un petit capteur de température (LM35 ici).
Principes
Les modules XBee permettent de créer des réseaux, du plus simple au plus complexe, Peer-to-peer ou maillé. Pour ce faire, ils peuvent être configurés pour jouer différents rôles : endpoint, routeur ou coordinateur (voici une bonne explication des différents rôles). Dans notre montage, nous allons avoir besoin d'un routeur (qui fera office d'endpoint) et d'un coordinateur.
Le montageAvant de continuer, voici un aperçu du résultat :
Comme vous le voyez sur la première image, aucun micro-contrôleur n'est nécessaire. Nos deux modules radio communiquent directement et le routeur sera programmé pour envoyer à intervalles régulier la valeur du capteur de température. Le coordinateur est relié au PC directement via un câble USB et identifié par une petite pastille (par commodité). La seconde image montre en détail le montage : le fil blanc permet d'indiquer au module la valeur de référence du courant utilisé, afin qu'il puisse nous donner une valeur relative cohérente du signal reçu sur la broche 20 (première broche analogique du Xbee, fil rouge à droite). Le reste du câblage n'est que de l'alimentation par la pile 9V.
ConfigurationL'étape la plus complexe. Nous allons voir comment attribuer chaque rôle aux modules et leur permettre de communiquer entre eux. Les XBee étant des modems radio, ils répondent à des commandes normalisées commençant par "AT". Je ne vais cependant pas m'étendre sur ce point dans cet article, mais plutôt utiliser un logiciel permettant de "masquer" ce niveau.
Commençons par le coordinateur. Une fois le premier module relié au PC, il faudra installer le driver, comme indiqué sur le site de Digi et lancer X-CTU :

Dans le permier onglet "PC Settings", il suffit de sélectionner la ligne correspondant au port COM sur lequel est branché notre XBee. Ensuite, dans l'onglet "Modem Configuration", choisir la configuration présentée : Modem XB24-ZB (pour les modules 2.4GHz Zigbee serie 2) et la dernière version du firmware. Cliquer ensuite sur Write pour envoyer cette première configuration au module.
Cliquer ensuite sur Read pour récupérer les valeurs par défaut définies par le module afin de pouvoir les ajuster à notre besoin. Pour faire simple, nous n'allons ici modifier que l'adresse du réseau (PAN ID ou ID) : n'importe quelle valeur aléatoire suffit. Cliquer de nouveau sur Write après modification pour mémoriser les changements.
Et voilà ! Le point principal de notre réseau est configuré! Passons maintenant au routeur, qui va nous transmettre les informations du thermomètre. Même manipulation donc pour ce qui est du raccordement au PC et à la connexion dans X-CTU. Mais cette fois-ci, il faut indiquer la configuration suivante :

On affecte le même identifiant de réseau (ID) que le coordinateur (456) et les adresses de destination (DH et DL) correspondant à celles du coordinateur (0). La section "I/O settings" permet d'indiquer la gestion des entrées/sorties : ici nous choisissons de configurer le broche 20 (DI0) en entrée analogique (mode 2) ce qui donne DI02. Enfin, dans la sous-section "I/O sampling", nous définissons les intervalles de temps auxquels le routeur nous enverra des données : 12C en hexadécimal = 300 millisecondes.
Ensuite... Il ne reste plus qu'à rebrancher le tout! Tout devrait fonctionner. J'avoue tout de même qu'il m'a fallu pas mal d'heures de recherche pour réunir tous ces éléments. Si vous avez des soucis, n'hésitez pas à m'en parler en commentaire j'essaierai de vous aider.
Vous pouvez observer les données reçue via le Terminal de XCTU :

Je passe un peu sur l'analyse de la trame hexadécimale reçue (il y a des documents très complets sur le site de Digi à ce sujet) mais vous pouvez voir que la valeur entourée correspond à ce que nous envoie le capteur de température : D9 = 217. Selon la spécification de notre capteur LM35, pour trouver la valeur réelle de la température, il faut effectuer un calcul tout simple : 10mV par °C donc pour nous 217 / 10 = 21.7°C :D
Pour aller plus loin...Ne nous arrêtons pas en si bon chemin! Comme vous l'avez vu, notre module capteur de température est autonome et alimenté par une pile. Même si les XBee sont assez peu énergivores, il faut tout de même rapidement penser à la gestion de l'énergie et à la réduction de leur consommation. Pour ce faire, ils disposent d'un mode veille qui augmente considérablement la durée d'utilisation des batteries.
Voici une brève description des différents modes :
A ceci nous allons ajouter un temps défini pendant lequel le module restera allumé avant de retourner en veille (afin de garantir la transmission des paquets).
Dans notre exemple, nous allons paramétrer une veille de 10 secondes et un temps d'attente de 1,5 seconde. Ce qui nous donne dans XCTU :

Et là ... Il se peut que cela ne fonctionne pas! ;) En effet, à chaque sortie de veille, le routeur doit s'identifier de nouveau auprès du coordinateur (qui a considéré qu'au bout de quelques secondes de non réponse il ne faisait plus partie du réseau), ce qui prend normalement quelques secondes, impossible au vu de notre temps d'activité de 1.5 secondes. Pour y remédier, comme indiqué dans cet article, il faut modifier la configuration du coordinateur et augmenter les valeurs de SP et SN afin de couvrir les cycles de veille du routeur.
Cette fois notre matériel est prêt : nous recevons toutes les 10 secondes la température du module distant.
Et la cerise sur le gateauTout ceci est bien, mais il serait plus intéressant de recevoir ces informations dans un programme Java, afin de pouvoir s'en servir dans n'importe quel contexte. Pour cela, rien de plus simple : XBEE API. Quelques lignes de code plus tard :
import com.rapplogic.xbee.api.XBee;
import com.rapplogic.xbee.api.XBeeException;
import com.rapplogic.xbee.api.zigbee.ZNetRxIoSampleResponse;
public class TempRead {
public static void main(String[] args) throws XBeeException {
XBee xbee = new XBee();
xbee.open("COM6", 9600);
while (true) {
ZNetRxIoSampleResponse ioSample = (ZNetRxIoSampleResponse) xbee.getResponse();
// System.out.println("We received a sample from " + ioSample.getRemoteAddress16());
if (ioSample.containsAnalog()) {
System.out.println("Temperature : " + ioSample.getAnalog0()/10.0);
}
}
}
}
Ouf, enfin terminé! Avec cette API, nous sommes capables de savoir quel module nous a envoyé des données et de récupérer directement la valeur reçue sur la broche 20.
J'espère vous avoir donné assez d'éléments pour vous lancer de votre côté, bon courage!
SourcesSalut à tous ! On est un jour férié ? Tant pis pour vous
Mon ami François Germain a pondu un plugin permettant de rĂ©cupĂ©rer une donnĂ©e : valeur d’un champ, valeur d’un attribut (y compris les data-attributs). Et ceci, directement depuis le sĂ©lecteur. Je n’aime pas trop l’idĂ©e parce que ça ne tient pas compte des questions de performance ni de l’idĂ©ologie de jQuery. Ceci dit, pourquoi pas.
Souvent on vous dit de ne pas utiliser jQuery quand vous n’en avez pas besoin. Rien ne vous interdit cependant de commencer Ă dĂ©velopper avec puis de retirer ensuite si vous pensez que ça n’Ă©tait pas nĂ©cessaire. Pour ça, il existe dĂ©sormais aussi un plugin qui s’appelle jQuery Functions Finder. Entre autres raisons, ça vous permet aussi de savoir quelles fonctions vous utilisez dans le core.
Et je termine en beautĂ© en parlant gouvernements. J’ai bien mis un « S » Ă la fin. Est-ce que certains d’entre vous ont dĂ©jĂ rempli leur dĂ©claration d’impĂ´ts sur le revenu cette annĂ©e ? En passant par l’appli mobile qui vous permet de flasher le tag en bas du premier feuillet. Je ne sais pas si vous avez remarquĂ© mais cette application est basĂ©e sur jQuery Mobile.
Autre actualitĂ© gouvernementale, qui concerne le Canada ce coup ci. Il ont publiĂ© rĂ©cemment un kit complet pour la crĂ©ation facilitĂ©e de sites « hyper-accessibles ». Dans ce kit, il y a la partie mobile. Et c’est encore jQuery Mobile qui est Ă l’honneur.
Retrouvez toutes ces ressources sur le carnet Evernote dédié.
Il n'est pas toujours facile de comprendre les notions de Kanban quand on est étudiant. Lors d'un dernier échange j'ai décidé d'utiliser un exemple qui leur parle : "Les techniques de drague".
Nous avons modélisé le flux, mis en place les WIP, présenté l'importance du Slack et un début de classe de service.
Détaillons cela ensemble.
Le ("nouveau") vocabulaire utilisé est le suivant :
Il permet d'avoir les 3 étapes de la "séduction", voici à quoi peut ressembler un board pour qu'un de très actif !!!
Et ce quelque soit l'endroit de la drague :
Pas besoin de détailler : les noms des colonnes sont assez explicites 
On voit bien que le premier board, c'est le "bordel" (dans tous les sens du terme) :
Il faut donc mettre en place un nombre maximum de personne par colonne (WIP : Work In Progress), après plusieurs minutes de discussion nous sommes arrivés au compromis suivant :
Et le board devient comme ceci (nous faisons abstraction des disparitions du board et des techniques de priorisation ) :
On voit dans le Board précédent qu'il n'est plus possible "d'insérer" des personnes dans les colonnes "NumClose", "KissClose" et "FuckClose" car le WIP est atteint, il faut donc "sortir" des personnes de la colonne "FuckClose" et ainsi de suite afin d'avoir du mou sur ces 3 colonnes, comme ceci :
Et voilĂ , avec un board comme celui-lĂ on a des marges de manoeuvre, il va ĂŞtre possible de calculer le LeadTime : en combien de temps en moyenne une personne passe de la colonne "NumClose" Ă "Rupture" Ă partir du moment ou vous aurez ces valeurs vous pourrez (peut-ĂŞtre) revoir les WIP Ă la hausse...
David J. Anderson dans son livre présente plusieurs classes de services :
Voici un exemple avec un date fixe (ou date due) : "Alexandra 25 Mai"
C'est "la même chose" que les autres filles fiches sauf qu'il y a une date indiquée sur la fiche, vous devez vous demander par quelle fiche "attaquer" en fonction de sa classe de service. Rappel "Choisir c'est renoncer"...
Nous passé une après midi assez marrante mais surtout tout le monde a assimilé les bases d'un système Kanban :
!!!
Maintenant vous n'avez plus d'excuse pour ne pas comprendre les flux tirés !
Salut Ă tous ! Ça roule ? Bon alors aujourd’hui, je vous annonce ma prĂ©sence Ă la prochaine Web-5 Ă BĂ©ziers.
OK ça c’est bien gentil mais pourquoi aller Ă l’autre bout de la France ? Parce que j’y suis invitĂ©. C’est une raison valable Ă elle seule, non ? Mais il n’y a pas que ça.
Avec ma future camarade Camille, que je ne connais pas encore IRL, nous allons y assurer la couverture presse, ce pourquoi nous avons été invité. Vous allez donc entendre parler de Béziers dans les semaines à venir. Peut être même plus que de mon séjour à Montréal pour la ConFoo !
Donc dĂ©jĂ , je me demandais qui parmi vous sera prĂ©sent lĂ bas. J’adore rencontrer mes lecteurs, c’est toujours un super moment avec plein de trucs Ă apprendre (faut d’ailleurs que je relance les BeerJs). Alors, qui ?
Parlons donc un peu de la Web-5. Au planning, du web, du web et… Du web ! Plus sĂ©rieusement, des dĂ©veloppeurs, des designers, des ergonomes, des experts rĂ©fĂ©rencement. Enfin du bon gros gratin. Et international en plus le gratin. Non content d’avoir invitĂ© des gens comme RaphaĂ«l Goetter d’AlsacrĂ©ations, StĂ©phanie Walter de InPixelITrust (et aussi AlsacrĂ©ations), Xavier Cambar, membre rĂ©gulier de ParisJS, Julien Pauli, un poil connu dans le monde du PHP ou encore Alexandre Morgaut, l’un des big de boss du projet Wakanda chez 4D et membre du W3C. Ils ont aussi invitĂ© des grosses tĂŞtes Ă©trangères, des mecs d’IBM, de Shazam, un dev du Zend Framework, de Thomson Reuters.
Pour la suite des évènements sur ce blog, je publierai prochainement le communiqué de presse. Puis suivront des interviews de différents orateurs. On va aussi sûrement expliquer avec Camille comment nous allons nous répartir les conférences et ce que vous pourrez espérer de nos prises de notes.
Ça se passe le 14 et 15 juin, Ă Â BĂ©ziers donc, il y aura des confĂ©rences passionnantes, des rencontres Ă faire, des soirĂ©es. Si vous ne l’avez pas, vous pouvez encore prendre votre place. Et puis bon, un dĂ©tour dans le sud mi juin, vous savez quand il fait beau et bien chaud, ne me dites pas que ça ne vous donne pas envie
Pour deux jours, vous avez un billet individuel Ă 150€. Si vous venez Ă 5, il y a 20% de rĂ©duction avec les 5 places pour 600€. Moins cher que nombre de confĂ©rences Ă travers le monde. Pour un niveau franchement bon d’orateurs.
Ça se passe ici : http://conf2013.web-5.org/achetez-votre-ticket/

Depuis quelques mois je suis sollicitĂ© pour faire des Ă©valuations de situation « Agile » afin de diagnostiquer les causes des problèmes rencontrĂ©s.
Mon activitĂ© principale est plutĂ´t de former et d’accompagner de nouvelles Ă©quipes dans la mise en place de l’agilitĂ©, et ces nouvelles demandes me font penser que nous sommes peut-ĂŞtre en train de franchir une nouvelle Ă©tape dans la prise en compte des mĂ©thodes agiles … ou alors très proches de tomber dans le gouffre de Moore (Cf. « The Chasm » de la Courbe de Rogers ci-dessus).
Dans la grande majoritĂ© des cas, il s’agit d’Ă©quipes qui pratiquent l’agilitĂ©, principalement Scrum, depuis plus de 18 mois, et bien souvent la demande d’Ă©valuation Ă©mane de managers, plus rarement des Ă©quipes elles-mĂŞme, qui n’obtenant pas les bĂ©nĂ©fices attendus, me demandent de chercher les raisons de cette situation.
Dans le cadre des ces Ă©valuations, ma dĂ©marche est toujours la mĂŞme : Intervenir 2 ou 3 jours sur site puis prĂ©parer et donner une restitution formelle en prĂ©sence de tous les acteurs. L’intervention sur site a pour objectif de participer en auditeur silencieux aux diffĂ©rentes rĂ©unions « Agiles » et de discuter en tĂŞte Ă tĂŞte avec chaque acteur du projet. Je ne limite pas mes entretiens aux Ă©quipiers, Scrum Master et Product Owner, car dans les acteurs, je considère Ă©galement les reprĂ©sentants des utilisateurs, les managers, la direction et d’autres personnes qui peuvent influencer le projet, comme un responsable qualitĂ© par exemple. Bien entendu, mon Ă©valuation est beaucoup plus orientĂ© sur l’Ă©tat d’esprit dans lequel la mĂ©thode Scrum est appliquĂ©e que sur la vĂ©rification des pratiques mise en Ĺ“uvre (combien de fois ai-je constatĂ© des rĂ©unions de rĂ©trospectives qui n’en sont absolument pas !).
Un autre aspect plus dĂ©licat Ă traiter concerne les attentes du management, en particulier les bĂ©nĂ©fices attendus initialement par le passage Ă l’agilitĂ©. Ce sont ces bĂ©nĂ©fices attendus qui ont pesĂ© lourd dans la balance et fait prendre la dĂ©cision de passer Ă l’agilitĂ© il y a 18 mois. Mon intervention est bien souvent justifiĂ©e par l’absence de ces bĂ©nĂ©fices après 18 mois de pratique de l’agilitĂ©, mais la situation est complexe, car ces managers ne remettent pas en cause les bĂ©nĂ©fices attendus et ils attendent de moi que je trouve, et corrige, les dĂ©fauts de mise en place de l’agilitĂ©. Pour eux c’est « juste » un problème d’application de la mĂ©thode Scrum alors qu’il s’agit surtout d’une mĂ©connaissance de la rĂ©alitĂ© de l’agilitĂ©, en particulier sa complexitĂ© de sa mise en Ĺ“uvre, et un oubli des aspects « humain » qui sont un des fondamentaux de l’agilitĂ© (le terme « ressource » utilisĂ© pour dĂ©signer une personne est bien souvent la face Ă©mergĂ© de cet iceberg d’oubli de l’humain).
Et pourtant la première valeur du Manifeste est bien : « Individus et leurs interactions » plutĂ´t que « Processus et outils », mais dans la majoritĂ© des projets que j’ai Ă©valuĂ©, la majoritĂ© des acteurs n’Ă©taient pas capables de citer le manifeste … Ă©tait-ce du Ă un manque de formation ? C’est possible, car dans de nombreux cas, la formation a Ă©tĂ© rĂ©duite Ă nĂ©ant (Scrum est si simple !), ou Ă sa plus simple expression avec l’envoi du Scrum Master en formation qui a la responsabilitĂ© ensuite de mettre en place l’agilitĂ© sur le projet (Ben, c’est bien lui le chef de projet, non ?
)
Si certains managers font appel Ă des consultants expĂ©rimentĂ©s pour faire un Ă©tat des lieux, dĂ©couvrir les raisons des difficultĂ©s, les corriger (en acceptant Ă©galement une certaine remise en cause personnelle) pour enfin passer Ă l’Ă©tape suivante de la courbe de Rogers et ĂŞtre rĂ©ellement plus performants. Combien d’autres sont plutĂ´t sur le point d’abandonner l’agilitĂ© pour cause de non tenue des objectifs attendus, ou pire, de soi disant l’amĂ©liorer en ajoutant plus de structure, de contrĂ´le et de processus, pour au final lui faire perdre toute son essence et revenir Ă des processus orientĂ© « Human Free » dans lesquels l’individu est rĂ©duit Ă un simple exĂ©cutant qui n’a pas Ă rĂ©flĂ©chir (ce que prĂ©conisait Taylor dans son livre « The Principles of Scientific Management).
Je ne saurais dire exactement si nous sommes toujours en train de progresser dans la mise en place de l’agilitĂ© en France, ce que laisserait Ă penser la multiplication des confĂ©rences sur l’agilitĂ© avec un nombre de participants toujours croissant, ou si nous sommes au bord du « Chasm » avec de plus en plus d’Ă©checs constatĂ©s de projets agiles, avec pour principale cause annoncĂ©e « La mĂ©thode Agile » elle mĂŞme.
Bien entendu, avec un peu d’honnĂŞtetĂ© et de courage, tout groupe reconnaitrait qu’un Ă©chec ne peut ĂŞtre imputĂ© Ă la mĂ©thode seule, mais il faudrait alors en chercher la cause ailleurs … avec le risque de dĂ©couvrir ses propres faiblesses, ses craintes du changement, ses peurs … et bien souvent dans une entreprise qui valorise uniquement la rĂ©ussite et ne tolère pas l’Ă©chec.
Si vous souhaitez un peu de soutien, n’hĂ©sitez pas Ă me contacter pour faire une Ă©valuation agile de votre situation, vous aurez alors une grille de lecture plus fine de votre contexte et vous disposerez de plus d’Ă©lĂ©ments pour prendre votre dĂ©cision, quelle qu’elle soit !
L'intégration continue c'est bien, mais l'Extreme Feedback c'est mieux! :)
Le but de cet article est d'attiser votre curiosité et vous montrer qu'il est assez simple de rendre certains outils plus fun! Nous allons voir comment fabriquer un "totem" nous affichant le résultat des builds programmés sur un serveur Jenkins. J'ai baptisé ce projet : JENUINO
Avant tout, un aperçu du résultat :
Build OKBuild en coursBuild KO
Comme vous pouvez le voir, ce totem se compose :
Mais qu'est-ce qui se cache dessous??... Et bien un Arduino!

Cette petite plateforme électronique OpenSource italienne permet de réaliser des montages en un tour de main, sans connaissance particulière en la matière.
Il sera relié au PC via un câble USB. Notre programme lui est configurable via une petite interface "maison" :

Et maintenant, on se lance!
Côté JavaPlusieurs éléments sont nécessaires pour accomplir ce montage : une librairie pour la communication via le port USB, l'API Jenkins pour accéder aux informations des projets et quelques éléments d'interface basiques.
Communication USBLes ports USB étant des ports série (COM), nous allons utiliser la librairie RXTX. Elle se compose de deux éléments importants : le JAR bien sûr, mais également les librairies système (.dll sous Windows) permettant à la JVM d'utiliser les ports USB. Toutes les informations pour l'installation sont disponibles sur le site officiel. Ensuite, quelques lignes de code :
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
public class SerialCom implements SerialPortEventListener {
SerialPort serialPort;
private BufferedReader input;
private OutputStream output;
private static final int TIME_OUT = 2000;
private static final int DATA_RATE = 9600;
public void initialize(String portId) {
try {
// open serial port, and use class name for the appName.
serialPort = (SerialPort) CommPortIdentifier.getPortIdentifier(portId).open(this.getClass().getName(),
TIME_OUT);
// set port parameters
serialPort.setSerialPortParams(DATA_RATE, SerialPort.DATABITS_8,
SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
// open the streams
input = new BufferedReader(new InputStreamReader(
serialPort.getInputStream()));
output = serialPort.getOutputStream();
// add event listeners
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
} catch (Exception e) {
System.err.println(e.toString());
}
}
/**
* This should be called when you stop using the port. This will prevent
* port locking on platforms like Linux.
*/
public synchronized void close() {
if (serialPort != null) {
serialPort.removeEventListener();
serialPort.close();
}
}
/**
* Handle an event on the serial port. Read the data and print it.
*/
public synchronized void serialEvent(SerialPortEvent oEvent) {
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
int inputLine = input.read();
// flush com data
input.ready();
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
}
La méthode initialize utilise le nom du port ("COM5" par exemple) pour initialiser les flux entrants et sortants, selon le débit DATA_RATE (9600 kbps par défaut pour l'USB). Cette classe est également capable de réagir aux évènements entrants grâce à l'interface SerialPortEventListener.
Lors du premier lancement, il se peut que vous soyez confrontés à l'erreur :
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
Cela signifie (sous Windows) qu'il faut copier "rxtxSerial.dll" sous JAVA_HOME/jre/bin. Il sera également nécessaire d'installer le driver Arduino, comme expliqué sur cette page.
Ensuite, il suffira de lire ou d'écrire dans les Stream de la même manière que pour l'écriture/lecture de fichier ou quelconque autre opération basique en Java.
L'interface de configurationJe ne vais pas m'attarder sur ce point, car il ne s'agit que d'un exemple, basé sur :
Jenkins fournit la possibilité d'accéder et de manipuler les jobs via JSON et/ou XML et une API relativement simple. Voici donc un client Jenkins en quelque lignes :
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class JenkinsClient {
private final String API_URL = "api/xml";
private String serverURL;
private String job;
public JenkinsClient(String url, String jobName) {
if(url==null) {
serverURL = "http://localhost:8080/jenkins/";
} else {
serverURL = url;
}
job = jobName;
}
public BuildState findLastBuildState() throws Exception {
BuildState state = null;
// every Hudson model object exposes the .../api/xml
URL url = new URL(serverURL+"job/"+job+"/lastBuild/"+API_URL);
// read it into DOM.
Document dom = new SAXReader().read(url);
String elementresult = dom.getRootElement().elementText("result");
if(elementresult!=null) {
state = BuildState.fromValue(elementresult.toString());
} else if(dom.getRootElement().elementText("building")!=null) {
state = BuildState.fromValue("building");
}
return state;
}
public boolean jobExists() {
boolean exists = false;
try {
// every Hudson model object exposes the .../api/xml
URL url = new URL(serverURL+API_URL);
// read it into DOM.
Document dom = new SAXReader().read(url);
// scan through the job list and print its status
for (Element jobElt : (List) dom.getRootElement().elements("job")) {
exists |= jobElt.elementText("name").equals(job);
}
} catch (Exception e) {
e.printStackTrace();
}
return exists;
}
public void triggerBuild() {
try {
URL url = new URL(serverURL+"job/"+job+"/build");
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Avec ceci, nous serons capables de vérifier l'existence d'un projet sur le serveur, de récupérer l'état du dernier build et en déclencher de nouveaux.
Côté ArduinoPour cette seconde étape, il faut réaliser le montage électronique et programmer le micro-controlleur de la plateforme afin de réagir à nos évènements via le port USB.
HardwareCi-dessous un schéma expliquant l'exemple de mon montage :

Inspiré par les montages publiés sur le net, celui-ci est bien moins complexe qu'il n'en a l'air. La présence de la platine d'essai au centre est justifiée par le fait que ce montage n'est que temporaire et il est généralement plus simple d'utiliser ce système que de vouloir raccorder directement les composants entre eux, surtout lorsqu'il faut gérer la "stabilité" sans soudure...
Alors un peu de dextérité et d'ingéniosité, et le tour est joué!
SoftwareAu niveau logiciel, Arduino se base sur le langage Processing, proche du C mais basé sur un environnement Java, donc très facilement accessible. Un programme de base se compose de deux méthodes clés :
Voici un bref aperçu de l'environnement de développement, tout aussi simple que le langage :

Mon but ici étant simplement de piquer votre curiosité, je ne vais pas m'étendre plus sur la présentation du langage et de l'environnement, tout ceci étant très facile à trouver et très bien expliqué sur les sites français ou anglais officiels. Je vous invite tout de même à prendre quelques minutes pour regarder cette vidéo de présentation du projet Arduino par un de ses fondateurs. Je suis sûr que cela vous donnera envie!
Pour ceux que cela intéresse, mon projet est disponible sur Sourceforge : Jenuino
Enfin, si vous voulez vous lancer, pour ce qui est de l'achat du matériel je vous conseil le site Deal Extreme, proposant des kits de démarrage assez complets et a bon prix (attention tout de même aux délais de livraison qui peuvent être longs).
Salut Ă tous ! C’est le mois de mai. Calme, toujours très calme. La semaine dernière dĂ©jĂ , peu de choses Ă dire. Pas grand chose non plus cette semaine donc. En fait, rien de notable.
En somme, pas de chronique cette semaine. Désolé.