Devoxx4Kids au Breizhcamp

Devoxx4Kids était au Breizhcamp pour une session le 13 Juin et le support au BreizhKids le 15 Juin.

Tout d’abord si Devoxx4Kids ne vous dit rien, c’est un projet open source qui regroupe les initiatives pour donner aux enfants le goût de la programmation, de la robotique et de l’ingénierie en général. Vous pourrez trouver des liens vers la communauté en langue française à partir de cette page Devoxx4Kids.

Dans la session, Audrey Neveu et moi avons partagé nos pratiques avec celles de bretons tout aussi passionnés que nous.

Voici un résumé des discussions. N’hésitez pas à faire des retours sur vos expériences avec ces jeux.

L’article est en deux partie, les plus petits et la programmation visuelle dans celui ci et l’apprentissage des langages sera dans un seond article.

Les tout petits

Avant la maîtrise de la lecture même les outils de programmation visuelle sont difficile à utiliser. Quelques pistes sur des jeux plutôt orientés vers la l’enchaînement logique d’opérations.


Robozzle : c’est un jeu en ligne dont le but est de sortir le petit robot du labyrinthe en écrivant un programme fait de mouvements de déplacement (aller tout droit, tourner à gauche, etc). Ce programme est ensuite joué et il marche ou pas. L’interface est en anglais mais le jeu est essentiellement graphique.

DrTechniko est un jeu à base de cartes où l’enfant doit déplacer un robot dans un parcours en ordonnant les cartes représentant divers mouvements. En général le robot est joué par un adulte.

Je sais lire !

OK, montre moi ça. On va pouvoir passer à des jeux basés sur la programmation visuelle.

Le plus connu est Scratch qui existe maintenant en 2 versions, la version 1 à installer et une toute nouvelle version 2 en ligne et en Flash qui demande soit un accès Internet soit d’installer un serveur local et un OS acceptant un player Flash :-/.

Scratch c’est aussi un réseau social permettant de partager ses projets.

C’est un outil de programmation visuelle basé sur des éléments colorés de divers types que l’on peut combiner pour déplacer un objet dans la scène, raconter des histoires, ou faire réagir l’objet à des actions sur le clavier.

L’accès est possible à partir de 6 ans, accompagné pour arriver à lire facilement les instructions et organiser son raisonnement, et autonome à partir de 8 ans. Le logiciel est en français si votre OS est en français.

Scratch a des extensions pour faire de la programmation visuelle d’autres types d’appareils comme par exemple Ardublock pour les Arduino. Il tourne aussi sur Raspberry Pi.

Je vous laisse découvrir l’excellent Mycophone à base d’Arduino dont l’auteur était parmi nous.

Alice est un jeu équivalent à Scratch mais pour faire des animations 3D. Il est écrit en Java.

L’accès est quand même plus compliqué et il n’est pas adapté aux moins de 10 ans. L’interface est moins intuitive, les déplacements des personnages et de la caméra en 3D sont plus compliqués et donc les fonctions sont moins évidentes. Le logiciel a un version française dans les options.

Mon robot défend ma chambre

Bien sûr nous n’avons pas oublié le Lego Mindstorm. Je l’ai mis un peu à part car contrairement aux logiciels précédents celui-ci n’est pas gratuit.

Il faut un robot et un ordinateur pour faire tourner le logiciel avec lequel on conçoit le programme du robot. Il faut aussi pas mal de temps pour assembler le robot, même le plus simple, le robot qui tire des billes lorsqu’il détecte un intrus.
C’est un jeu plus mobile et plus tactile que les précédents qui aborde la programmation par le déplacement du robot et la gestion des capteurs. C’est adapté au 10 ans et plus.

Dans le prochain article, les plus grands avec l’apprentissage des langages de programmation.

L’Open World Forum 2012

logo open world forum 2012L’Open World Forum 2012 s’est tenu le week end dernier à Paris.

Certains blocs de sessions étaient pris en charge par l’OSDC, le FUDCon (Fedora), le PAUG, Ruby.rb et divers groupes FOSS. De la diversité mais un planning assez opaque et quand à trouver la bonne salle parmi 9 salles sur 3 étages plus un auditorium …

Même si on retrouve toujours un peu les mêmes, la communauté Java était peu représentée et c’était l’occasion de croiser d’autres communautés de langages ou de pratiques.

Les gros événements étaient les présentations Google TV et le PAUG Conf Day. Beaucoup de monde et j’étais en retard pour d’autres contraintes donc au final j’ai beaucoup picoré dans les sessions de l’OSDC qui avait fourni un planning détaillé et j’ai gardé deux des sessions pour faire ce post. Les sessions ont été filmées par le PAUG et l’OSDC et seront disponibles bientôt.

L’Open World Forum c’était aussi la présence d’artistes et de sessions d’initiation à l’informatique pour les enfants. J’en parlerai dans un autre post sur le site de Duchess France.

Mais revenons en aux sessions techniques.

Choisir entre la corde et le poison

NoSql, cloud et montée en chargePierre Couzyosdc

Row of network servers in data centerPierre Couzy travaille chez Microsoft. Il est venu partager son expérience et les leçons qu’il a apprises sur le jeu Atlantis Fantasy. C’est un jeu Flash dont le back end est hébergé sur le cloud Azure qui utilise MongoDB en plus d’une base SqlServer classique.

Je n’aurais jamais cru écrire deux des mots de la phrase précédente sur ce site, mais en définitive les leçons qu’il a partagé sont valables sur beaucoup d’environnements Cloud.

Les jeux en ligne Facebook ont un cycle de vie en loi de Poisson avec un démarrage assez brutal lors de la propagation sur les réseaux sociaux, un plateau plus ou moins court selon l’attrait du jeu et un déclin en longue traîne au fur et à mesure que les joueurs se lassent. Les périodes critiques économiquement sont la croissance très rapide avant le plateau et le début du déclin. Dans les deux cas, la capacité doit s’adapter rapidement pour satisfaire les utilisateurs ou pour éviter des coûts disproportionnés. Le cloud est alors bien adapté pour gérer les phases de croissance et de maturité et ces jeux migrent souvent sur un hébergement classique moins couteux pour gérer le déclin. L’autre souci à gérer est qu’un jeu en ligne peut difficilement tolérer des arrêts pour maintenance et a très peu d’inactivité. Il marque seulement un creux dans la nuit. D’un autre coté des arrêts très brefs sont peu perçus par les joueurs car le client Flash les masque.

communication and internet network server roomLe premier constat est que sur un cloud toute opération disque devient une opération réseau car le stockage disque est fourni sous forme de service réseau de type EBS chez Amazon ou Azure Drives. Or la performance des bases de données dépend pour beaucoup des performances du stockage. Des défauts qui passent inaperçus sur des disques rapides locaux ressortent ici et sont difficiles à diagnostiquer car on raisonne toujours en volume d’écriture en mesurant la vitesse de transfert en bytes per second. Or c’est la latence du réseau qui bride le système pas le débit binaire du disque. C’est donc le nombre d’opérations, les IOPS qu’il faut surveiller. Elles plafonnent en général autour de 1000.

VenomLa deuxième recommandation est de diviser pour mieux régner. Les données sensibles comme les transactions financières sont restées sur un serveur SQL classique car il est impossible de garantir leur intégrité sur MongoDB. MongoDB est utilisé là où la souplesse du modèle est utile. Pour les données stockées dans MongoDB, Pierre Couzy recommande de partager les données entre plusieurs bases en fonction de leur cycle de vie pour pouvoir faire des optimisations plus agressives. Dans le cas du jeu, les données sont classées en trois catégories, l’état du jeu relativement stable, les données sociales assez volatiles, et des verrous logiques dont la durée de vie est très courte. Une des raisons de ce découpage est qu’il n’est pas utile de stocker physiquement des données à durée de vie très courte, l’autre est que les ralentissements sur les verrous doivent être absolument évités car ils ralentissent tout le reste du jeu.

Un troisième constat est que le multi-instance n’est pas la panacée. Lorsque l’instance MongoDB atteint sa limite de capacité, la première idée est de répartir la charge sur plusieurs instances. Mais une instance unique est plus efficace qu’une des instances du cluster. La réplication avec chacune des  autres instances mobilise une partie des ressources, à peu près autant que les écritures primaires dans ce cas. Elle entraîne aussi des risques d’incohérence qui demandent des mécanismes de contrôles eux-aussi coûteux. La réplication sur les 3 instances pendant que le jeu est à pleine charge prend des jours et peut pénaliser les temps de réponse du jeu. Les journaux de réplication dépassaient leur taille limite ce qui créait d’autres problèmes. A contrario, une instance unique peut se limiter au strict nécessaire sans Oplog et sans journalisation le temps de gérer l’installation en multi-instance. Risqué mais ça tient la charge. Mais attention, ces optimisations très agressives rendent le passage du cap vers le muti-instance encore plus difficile.

Infinity clock. Vector illustrationLe sharding nécessite aussi un peu de réflexion. Par défaut, la shard key est l’id généré par MongoDB. Cet id est monotone et les données nouvelles partaient sur la même partition. La bonne clé dépend du cycle de vie des données. Si ces données sont répliquées par la suite le problème n’est que transitoire. La solution retenue a été de transformer l’id et déplacer des caractères de la fin vers le début pour forcer la clé à changer rapidement d’ordre de grandeur.

funambuleLe réglage a été un processus incrémental. Viser un objectif pas trop haut, trouver la bonne configuration, puis augmenter la charge. Les tests de performance se sont avérés quasiment impossibles car ils ne reproduisaient pas la réalité correctement. Sur du cloud il n’est pas nécessaire de prévoir la capacité totale du système, elle peut être augmentée avec un peu d’anticipation. Pour cela, les logs, le monitoring et des représentations visuelles de l’usage des ressources sont indispensables.

Pierre Couzy recommande aussi de choisir la taille de machine en fonction du facteur limitant que l’on préfère subir. Les petites configurations sont limitées par la mémoire, les moyennes par la CPU, les grandes par le réseau. Il préfère la limitation par la CPU car elle est simple à monitorer et qu’elle cause moins d’effets de bord que la mémoire et le réseau. Toutefois, même dans ce cas la limite de capacité créera des timeouts et des effets de cascade car les clients recommencent faute de réponse rapide. La durée des timeouts tend à mettre le système en résonance ce qui est identifiable par des courbes en zigzag.

Nous voilà parés pour le backend. Et côté client quoi de neuf ?

Les nettoyeurs de code Android

Pierre-Yves Ricau et Alexandre Thomas  – Android Annotations 

logo AndroidAnnotationsPierre-Yves et Alexandre nous ont présenté Android Annotations, qui comme son nom l’indique permet de remplacer de la plomberie un peu systématique dans la programmation Android par des annotations.

Cette session est essentiellement basée sur une démo de code donc je ne rentrerai pas dans le détail, il faudra aller la voir 😉

Une partie des annotations remplace les déclaration et les initialisations des extras, des vues, des ressources via de l’injection de dépendance. D’autres annotations permettent de remplacer les AsyncTasks en déclarant simplement par une annotation si la méthode tourne sur l’UI Thread ou en background. Enfin les annotations qui ont éliminées le plus de code sont celles qui remplacent les classes anonymes des event handlers. A l’arrivée un code plus court, plus lisible et qui marche toujours (si si on a vérifié).

Le surpoids est assez faible car le framework sépare la librairie embarquée sur le device de la librairie qui gère la génération des classes supplémentaires pour le code généré. Au final, le framework rajoute une classe pour chaque classe annotée et un peu de code.

logo AndroidKickStartrAlexandre Thomas nous a aussi rapidement présenté Android KickstartR qui regroupe tout un tas de librairies couramment utilisées dans un même bundle et permet d’initier rapidement un projet Android.

Présentation Incanter à l’Open World Forum2012

L’Open World Forum commence aujourd’hui et se tiendra jusqu’à demain. C’est une conférence Open Source gratuite qui s’adresse à tous.

Vous pouvez trouver des informations plus détaillées sur le track Code sur le site de l’OSDC.

Je ferai une présentation sur l’analyse de données avec Incanter samedi après midi. Les slides et le repository de code sont accessibles

Présentation Clojure au JUG Summer Camp

J’ai le plaisir de faire une présentation Incanter / Clojure au JUG Summer Camp. Le but est de couvrir quelques librairies utiles pour faire des analyses et des rapport sur de grosses masses de données.

Le code des exemples se trouve sous Github https://github.com/cfalguiere/ClojureBigDataJugSummerCamp2012

Les slides de la présentation en pdf sont sur SlideShare

 

Quickie sur Incanter à Devoxx France

Et voilà, ce premier Devoxx France est terminé. Un superbe évènement, des speakers passionnants, des participants tous plus motivés les uns que les autres, et une équipe d’organisation soudée pour donner le meilleur d’elle même durant ces 3 jours. Du Java, mais pas que ça et surtout beaucoup de rencontres, de discussions enflammées et de plans pour refaire le monde en mieux. On attend avec l’impatience l’édition Devoxx World à Anvers fin 2012 et le prochain Devoxx France en 2013. Bon là on est sur les rotules, il faut qu’on récupère.

Merci aussi à l’équipe des Cast Codeurs qui a permis à 4 Duchess d’intervenir pendant l’enregistrement Live à la fin de Devoxx France.  On s’est bien amusées et on attend la sortie avec impatience pour le réécouter.

J’ai uploadé les slides de mon quickie sur Incanter  http://www.slideshare.net/claude.falguiere/incanter-devoxx

Le code des examples est sur Github https://github.com/cfalguiere/Demo-Incanter-Devoxx-France

Le temps du quickie est passé très vite. Je prépare une version atelier de 1h pour présenter Incanter et Clojure et pratiquer un peu Clojure en l’appliquant à l’analyse de données.

Des nouvelles de la saga Incanter

La magie ne marche pas très bien sur les virus et autres microbes 😉

Après quelques batailles, j’ai fini par en venir à bout, mais Devoxx arrive bientôt avec toutes les choses qu’il faut préparer pour cet événement, en particulier une courte présentation sur Incanter.

La sage du magicien n’est pas terminée, mais elle reprendra probablement après Devoxx.