Comment apprendre à votre robot ? ou la programmation en s’amusant …

Après avoir emmené mes enfants à un après-midi de découverte de la programmation, j’avais recherché quelques articles sur le sujet. Je suis tombé sur un article de Nikos Michalakis, alias DrTechniko s’intitulant ‘How To train your robot« . Cet article présente un atelier impliquant l’enfant et un de ses parents et j’ai trouvé cette approche intéressante.

Avec l’autorisation de l’auteur, je me risque ici à une traduction française de cet article.

L’atelier fonctionne de la manière suivante : chaque enfant joue le rôle d’un « dresseur de robot » et sa mère ou son père devient son « robot ». On donne à chaque enfant un dictionnaire du langage robot et on lui explique que c’est le seul langage que les robots comprennent. Le dictionnaire est composé de symboles simple pour signifier des actions comme « avance la jambe droite », « tourne à gauche », « attrape », « laisse tomber », etc …

Le dictionnaire du robot

Le dictionnaire du robot

Le but du jeu d’envoyer les robots chercher une balle à travers des obstacles et la rapporter. Les enfants doivent écrire le programme qui expliquera au robot comment faire tout cela. A chaque fois que l’enfant écrit un programme, il le donne à son robot et le robot l’exécute. Pour effectuer cela, on fournit à l’enfant de quoi écrire et un bloc de papier sur lequel ils vont recopier les symboles du dictionnaire et ainsi créer leur propre programme et ainsi déplacer leur robot.

La partie plus ludique débute lorsque chaque robot a réussi à retrouver la balle. On demande ensuite aux enfants d’inventer leurs propres actions et symboles et de les ajouter au dictionnaire. Il ne lui reste plus qu’à apprendre à son robot ces nouvelles actions. Il n’y a aucune limite à l’imagination des enfants !!!

Cet atelier a été créé par Dr Techniko pour transmettre quelques principes très simples de l’informatique et de la programmation :

  • Les langages de programmation ne sont qu’une façon différente de communiquer avec une machine (à travers de programmes)
  • Les programmes sont des outils pour automatiser des actions.

Il a cependant été surpris par la capacité d’apprentissage des enfants. Dans une session de 30 minutes, ils ont pu découvrir :

  • Le paramétrage des applications : au lieu de répéter 10 fois l’action d’avancer, ils ont simplement ajouté un 10 devant le symbole correspondant.
  • La composition : en regroupant un ensemble d’actions ( « avance le pied gauche puis avance le pied droit puis répète cette séquence 10 fois »)
  • L’abstraction : en composant des actions puis en nommant ce nouvel ensemble et en y faisant ensuite référence. Par exemple, un enfant a créé la séquence suivante marche en cercle en disant « je suis bête », l’a appelé « marche bête » puis l’a fait répéter 100 fois à son robot/parent
  • Le test unitaire : les enfants écrivent une petite séquence d’actions, la font exécuter à leur parent, puis l’améliore en fonction du résultat constaté, le refont exécuter à leur parent puis la complète jusqu’à arriver au but final.

Cet atelier a été joué plusieurs fois et à chaque fois, les mêmes comportements ont été constatés, ce qui fait dire au créateur que quand les enfants s’amusent, ils deviennent plus créatifs à propos de la programmation. A l’issue de l’atelier, de nombreux parents prévoient de le refaire lors de fêtes d’anniversaires.

Merci à Audrey Neveu pour la traduction du dictionnaire …

Publicités
Catégories :dev Étiquettes : , , ,

Le dessous des cartes

En dehors du boulot, je suis administrateur du forum et du site du ZRX Club de France. Le ZRX, c’est une moto de chez Kawasaki … Le forum, c’est phpBB 3.0 et l’hébergeur c’est OVH.

Bref, sur ce forum, on souhaitait avoir comme fonctionnalité une carte des utilisateurs du forums. Le club étant national, c’est toujours sympa de savoir quel forumeur habite à coté de chez soi.

L’existant

Au moment où on a mis ça en place, après avoir regardé ce qui ce faisait, on est partis sur la solution carte-des-membres. Les autres solutions disponibles pour phpBB étaient en cours de développement ou assez lourdes à mettre en place. La solution carte-des-membres permet aux membres de se positionner sur une carte et de visualiser ceux qui s’y sont positionnés.

L’avantage de cette solution est d’intégrer le positionnement dans les templates concernant les profils utilisateurs : liste des membres, détail de profil ou encore parcours des messages d’un forum.

Le seul reproche, c’est que c’est une solution externe au forum. On ne sait pas comment sont stockées les données, on a peu de latitude de personnalisation ou d’ajout de fonctionnalités. Et puis je trouvais pas le rendu à mon gout.

CaptureCDM

Du coup, je me suis mis au boulot et j’ai essayé de faire quelque chose qui ressemble plus à ce que je voulais mais surtout, bien mieux intégré au forum.

La nouvelle carte

1) Mise en place de la structure

Tous les mods phpBB que j’ai vu commençait par modifier la structure de la base de données, en ajoutant des colonnes à la table users, en créant ses propres tables. Et tout ça m’ennuyait. En effet, de quoi a-t-on besoin pour afficher la position géographique d’un utilisateur ? Seulement 2 données, la latitude et la longitude.

Pour éviter la création de nouvelles tables ou la modification de tables existantes, je me suis basé sur le mécanisme de Champs de profils personnalisés, disponible en standard dans phpBB. J’ai donc créé deux champs, longitude et latitude. Après plusieurs essais, je me suis aperçu que si je voulais afficher la position dans les profils, il fallait que ces données soient publiques, c’est à dire visibles par tout un chacun. C’est pas que ça m’ennuie mais je trouve qu’au niveau confidentialité, il y a mieux. Du coup, j’ai créé un indicateur, geoloc, qui permet à l’utilisateur d’indiquer à tout moment s’il veut ou non partager ses données de géolocalisation.

CaptureChpsPerso

longitude1

longitude2

longitude3

latitude1

latitude2

latitude3

geoloc1

geoloc2

geoloc3

Voilà les instructions SQL à exécuter.


INSERT INTO `phpbb_profile_fields` (`field_id`, `field_name`, `field_type`, `field_ident`, `field_length`, `field_minlen`, `field_maxlen`, `field_novalue`, `field_default_value`, `field_validation`, `field_required`, `field_show_on_reg`, `field_show_on_vt`, `field_show_profile`, `field_hide`, `field_no_view`, `field_active`, `field_order`, `field_show_novalue`) VALUES
(1, 'geoloc', 4, 'geoloc', '1', '0', '0', '0', '2', '', 1, 1, 1, 1, 0, 0, 1, 2, 0),
(2, 'latitude', 2, 'latitude', '10', '0', '20', '', '', '.*', 0, 0, 0, 0, 0, 1, 1, 5, 0),
(3, 'longitude', 2, 'longitude', '10', '0', '20', '', '', '.*', 0, 0, 0, 0, 0, 1, 1, 6, 0);

INSERT INTO `phpbb_profile_fields_lang` (`field_id`, `lang_id`, `option_id`, `field_type`, `lang_value`) VALUES
(1, 1, 1, 4, 'Non'),
(1, 2, 0, 4, 'Yes'),
(1, 2, 1, 4, 'No'),
(1, 1, 0, 4, 'Oui');

INSERT INTO `phpbb_profile_lang` (`field_id`, `lang_id`, `lang_name`, `lang_explain`, `lang_default_value`) VALUES
(1, 1, 'Geolocalisation', 'Acceptez vous que vos informations de localisation puissent être utilisées pour vous situer sur une carte, genre GoogleMaps', ''),
(1, 2, 'Geolocalization', 'Do you accept to appear on a map, like GoogleMaps ?', ''),
(2, 1, 'Latitude', '', ''),
(2, 2, 'Latitude', '', ''),
(3, 1, 'Longitude', '', ''),
(3, 2, 'Longitude', '', '');

N.B. : les instructions contiennent l’identifiant en dur. Si vous avez déjà défini des champs personnalisés, il est préférable de passer par l’interface d’administration de phpBB.

2) Création d’un template

Une fois notre structure de données en place, il faut définir un cadre pour afficher notre carte avec les membres dessus. On va donc définir un template phpBB3 qui contiendra une carte GoogleMaps. L’affichage de la carte requiert une partie de Javascript. On va donc écrire un header spécifique qui contiendra ce Javascript. Ensuite, on crée un template avec une div qui va réceptionner la carte. Pour le thème Prosilver, livré en standard avec phpBB, cela ressemble à ça :

<!-- INCLUDE map_header.html --></pre>
<h2>Carte des membres</h2>
<div class="panel bg1">
<div class="inner">
<table class="panel bg1" width="100%">
<tbody>
<tr>
<td class="row1"></td>
</tr>
</tbody>
</table>
</div>
</div>
<pre>
<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->

Et c’est tout !!!
N.B. : Il faut bien spécifier une hauteur pour la div contenant la carte. Si vous ne le faites pas, la hauteur sera à zéro et vous ne verrez pas la carte.

3) Création des pages PHP

Une page pour récupérer les informations de géolocalisation des utilisateurs qui l’ont accepté, une page pour mettre à jour la position d’un utilisateur et enfin la page associée au template juste au dessus et le tour est joué. Encore une fois, les requêtes sont très simples, on fait les recherches dans 2 tables et on met à jour une seule table. A chaque fois, ce sont des tables de la distribution standard de phpBB, pas de gestion de tables spécifiques.

4) Création des scripts

Afin de me faciliter la vie, j’ai choisi d’utiliser JQuery pour gérer les événements associés à mon template. En gros l’affichage des utilisateurs lorsque la page s’affiche. J’ai repris pas mal de code présent sur la documentation de l’API GoogleMaps.

5) Bonus

Une fois qu’on a fini tout ça, on peut enrichir à l’envie la carte de fonctionnalités. Sur mon forum ZRX21.com, j’ai ajouté une liste déroulante des membres affichés, la possibilité d’en sélectionner un et de voir sa position. Il y a aussi une fonction de recherche de localité, une pour recentrer la carte sur la position de l’utilisateur connecté et une pour permettre à l’utilisateur de se géolocaliser en utilisant les fonctionnalités du navigateur. La seule limite reste votre imagination. On peut penser à afficher la distance entre 2 membres, calculer un itinéraire, etc …

Voilà le résultat :

CarteDesMembres

Le projet est disponible sur Github : https://github.com/bmarron/phpBBMemberGmap

Catégories :sideProject Étiquettes : , , , , , ,

Retour sur DevoxxFR’13 (1/2)

Cette année encore, j’ai assisté à la conférence DevoxxFR. Cette édition 2013 aura un petit plus par rapport à l’année dernière puisque j’aurais la chance d’y présenter un Quickie.

Contraintes organisationnelles et emploi du temps chez mon client ont fait que je n’ai pu aller qu’aux 2 journées de conférences. Je vais tâcher de faire un retour sur les conférences qui m’ont marqué. N’attendez pas d’objectivité dans les lignes qui suivent, cela reste un ressenti tout personnel.

Pour être à l’heure aux rendez-vous parisiens quand on habite en Province, il ne faut pas avoir peur de se lever tôt. C’est comme ça que cette journée (qui sera longue) commence par un réveil à 04h30 afin de pouvoir prendre le TGV de 06h30 à Lyon  et être à la capitale et au Mariott pour 9h.

Keynotes d’ouverture

Flûte, 5 minutes de retard … Je récupère vite fait les badges et direction la grande salle. L’équipe du ParisJUG est déjà sur scène pour présenter le programme des 2 jours qui viennent.

Je vais poser mes affaires aux vestiaires et quand je reviens, Clarisse Herrenschmidt a déjà commencé. Pas grave, j’ai pas raté grand chose. Et c’est parti pour une magnifique conférences sur l’origines des signes. L’oratrice est quelqu’un de vraiment impliqué dans son sujet. J’ai l’impression d’avoir 20 ans de moins et d’être sur les bancs de la fac en train de suivre les cours de l’IUT. Un beau moment très rafraîchissant qui me permet d’entrer tout doucement dans le rythme de DevoxxFR. Et puis entendre A. Goncalves se faire appeler « chouchou » et le voir habiller en rose, je n’aurais jamais imaginé ça.

Ensuite, on redevient plus sérieux avec Martin Odersky qui nous explique pourquoi la programmation fonctionnelle qui existe depuis plus de 40 ans a le vent en poupe. La conjonction de nouveaux besoins, de calculateurs de plus en plus puissants et de l’avènement du Cloud permet à de nouveaux langages (Scala en tête) de se faire une place au soleil. Cependant, il ne s’inscrit pas dans un combat qui opposerait Java et Scala, il considère plutôt que ces deux langages sont plus complémentaires que concurrents. Cette conférence m’a moins inspiré que la précédente mais elle a le mérite d’essayer d’enterrer la hache de guerre entre les pros et les antis …

L’art de Bricoler, par Sylvain Webber

Une conférence où l’orateur se propose de nous présenter ce que HTML5 lui a permis de faire en « bricolant un peu ». Il s’est surtout présenté ainsi que tout ce qu’il peut organiser : HTML5 Paris MeetUp, BeMyApp hackaton, … Une démo de son appli fera faire un peu d’exercice à 2 personnes du public. Il a réussi à interfacer un tapis de danse d’une console avec un navigateur Internet. Du coup, il a codé un petit jeu où il faut courir le plus vite possible. Quasiment pas de détails sur l’implémentation, ce qui est bien dommage. Un peu déçu par cette présentation qui ressemble plus à une opération marketing de la part de l’orateur qu’une présentation d’éléments techniques qui lui a permis de « bricoler ». Dommage …

CSS : More or LESS, par Julien Roche

Un premier quickie, celui de mon collègue Julien … Où il est question de conte de fées, de CSS et de préprocesseurs. Comment faire mieux avec moins ? C’est tout l’enjeu de ce petit quickie mené tambour battant, histoire de ne pas dépasser les 15 minutes fatidiques. Chapeau Julien, même si tu étais un peu stressé mais qui ne le serait pas …

Les bronzés font du Dev, par Ellène Dijous-Siber

Deuxième quickie de la journée. Ellène croque avec beaucoup d’humour la vie de développeur sur son blog : uneviededev.wordpress.com. Elle se propose de conter l’arrivée d’un jeune diplômé dans une SSII. C’est un concentré de toutes les situations auxquelles on a pu être confronté. Beaucoup de rires dans la salle, Ellène fait très souvent mouche. Une pause rafraîchissante pour moi qui suis levé depuis un moment. Allez découvrir son blog !!

Le SpaceMountain du développement Java en entreprise, par Florent Ramière

Le titre m’avait vraiment accroché. J’attendais quelque chose de très rock’n’roll. Ca a plutôt été une liste de bonnes pratiques à mettre en place pour le développement Java. Florent nous présente pourquoi il préfère Maven à Ant, pourquoi il utilise JSF 2 associé à PrimeFaces, comment Guava a remplacé les apache commons. Bref, un inventaire de plein d’outils qu’il faut vite mettre en place : Mockito, FestAssert, Selenium, iSpace poru vérifier les dépendances dans Eclipse. Et pour tenir son auditoire en haleine tout au long de sa présentation, il nous a fait la promesse de nous expliquer comment calculer la vitesse de la lumière avec un Mars et un micro ondes. Et il l’a tenu !!! (http://sweetrandomscience.blogspot.fr/2012/09/chocolat-micro-ondes-et-vitesse-de-la.html)

Boucles étranges, étranges boucles, par Eric Lefevre-Ardant et Guillaume Tardif

C’est certainement la conférence qui m’a le plus plu mais que j’arrive le moins à résumer. Eric et Guillaume commence doucement en nous présentant des problèmes d’algorithmie au sujet de boucles. Puis ça dérive vers la sécurité et le moyen de savoir que l’exécutable que l’on exécute est bien celui qu’on a généré. Et on finit avec de la génétique. Le mieux est encore de visionner la conférence sur Parleys, les deux conférenciers étant bien meilleurs que moi pour parler de tout ça. En tout cas, une très belle conférence, des illustrations de M.C. Escher, du code mais pas trop, une montée en puissance bien menée. Si vous ne l’aviez pas compris, j’ai bien aimé.

Mastering Android drawables, par Cyril Mottier

Après cette belle et étrange expérience, retour à un domaine qui m’intéresse : le développement mobile et particulièrement Android. Cyril tient à faire de nous des maitres des Drawable Android. Nous aurons donc droit à une Master Class. J’ai entendu des choses que j’avais déjà entendues mais qu’il est bon de réentendre. J’ai aussi appris de nouvelles choses sur la gestion des Drawable. Comme quoi, pour des développements Android, peut être plus qu’ailleurs, il faut vraiment rester à l’écoute des dernières préconisations si on veut privilégier l’expérience utilisateur. Maintenant, suis-je un maitre Jedi des drawables Android ? Il est un peu prématuré pour se prononcer …

Implémenter la qualité sur un projet Java, par Vincent Massol

Pour finir cette journée de conférence, Vincent présente ce qui, selon lui et son expérience au sein de XWiki, permet de produire des projets Java avec un haut niveau de qualité. Et cela se concentre en 5 points : stabilité des APIs, éviter le phénomène de JAR Hell, couverture de code par les tests acceptable, tests fonctionnels et enfin mise en place d’un Bug Fixing Day. En ce qui concerne la couverture de code, Vincent préconise d’avancer de manière incrémentale et de ne pas mettre un seuil trop important dès le début mais plutôt de le définir comme un objectif.  Au sein de XWiki, la mise en place d’un Bug Fixing Day a permis de réduire considérablement les tickets ouverts et non traités. Pour chacun des points, Vincent s’appuie sur son expérience XWiki et on sent bien que son discours est issu des retours d’expériences au sein de ce projet.

Cette journée fort enrichissante se termine par le BOF l’open source au quotidien, qui permet des échanges avec des personnes actives dans différents projets. Mais il est temps de rejoindre mon hôtel pour finir de préparer le quickie que j’animerais le lendemain.

Catégories :Conférence, Java Étiquettes : ,

Comment je vais aller à DevoxxFR saison 2

DevoxxFR-2012-banniere-texte-600-232

L’année dernière, j’avais commis un billet de blog pour expliquer comment j’avais pu me rendre à la première édition de DevoxxFR. Cet évènement ayant vocation à être annuel, je me prépare à utiliser la même technique. Je commence donc à en parler autour de moi au boulot. Cette année, je mise tout là dessus.

L’année dernière, j’avais proposé quelque chose au CFP mais le sujet n’avait pas été retenu. Beaucoup de candidats mais peu d’élus. Cette année, je n’ai pas d’idées de sujets sous la main au moment où s’ouvre l’appel à candidature. Je continue donc à en parler, avec toutefois moins d’insistance que l’année dernière car j’ai eu l’impression qu’elle a pu mal passé à certains moments. Je propose même d’utiliser mon DIF pour y assister.

Puis un soir, un mail du Directeur Général me demandant si je proposais quelque chose à Devoxx. Je lui explique un peu mon état d’esprit mais la question tourne dans ma tête. La proposition l’année dernière d’un sujet technique n’ayant pas retenu l’attention, je glisse tout doucement vers une problématique un peu plus ‘poil à gratter’ bien que tendance. Et le lendemain, je sors un pitch assez rapidement que je dépose aussi sec sur le site du CFP.

L’essentiel pour moi, c’était surtout de marquer le coup, de jouer le jeu de l’appel à candidatures en ayant peu d’espoir de sélection car je pensais que mon sujet me semblait assez léger mais aussi car devant le succès de l’édition 2012, je me dis que cette année, il y aura encore plus de prétendants. Je me mouille pas trop et propose le format quickie : 1/4h pour présenter son sujet, pas trop de risques si toutefois je suis retenu …

Et c’est avec surprise que le 8 février, je reçois un mail :

Dear Benjamin Marron,

We're excited to inform you that your
Quickie presentation has been accepted
for DevoxxFrance 2013.

Et oui, cette année, je vais à Devoxx !!! Objet Direct prend en charge mon entrée et mon déplacement. A moi de bien préparer mon intervention. Vu que je n’avais quasi aucun espoir d’être retenu, il va falloir mettre les bouchées doubles d’ici le 29 mars 2013.

Et de quoi je vais parler ?

Pour ça, je vous renvoie au site de Devoxx et je vous donne rendez-vous là-bas.

Catégories :Conférence, Java Étiquettes : , , , ,

Petite cause grands effets

Il y a quelques temps, j’ai déménagé le PC familial. En le remontant et en rebranchant toutes les connexions USB, le voila qui m’insulte au reboot avec le message suivant :

Warning !!! USB device over current detected !!! 
Please remove over-current USB device !!! 
System will shutdown in xx seconds !!!


Et me voila parti sur les forums et autres Google à la recherche de solutions.

Des connexions USB ont été mal débranchées

Les premiers résultats de recherche m’envoie sur cette piste. Je cherche donc tout ce qui aurait pu être branché derrière le PC et que j’aurais oublié de rebrancher. Je galère, j’essaye toutes les configurations. A un moment, le PC arrive à rebooter mais sans qu’aucune connexion USB ne soit reconnue. Autant ne pas démarrer dans ces cas là. Et c’est bien ce qu’il fera un peu plus tard.

Un faux contact dans les prises USB ou la carte mère

Après le coup des clés USB mal débranchées, d’autres articles sur le Net m’aiguille sur un problème matériel. Me voilà avec le PC démonté sur la table de la cuisine à vérifier toutes les connexions, sortir la carte mère du boitier, tout débrancher, tout remonter. Et toujours le même message laconique … A un moment donné, j’ai bien eu l’impression que ma config allait passer par la fenêtre. Mais vu que je suis un garçon persévérant, je continue mes recherches sur Internet, en précisant de plus en plus ma config : marque de la carte mère, processeur, etc …

Le dénouement

Je finis par tomber sur un thread dans un forum ASUS (la marque de ma carte mère) où un gars annonce sur une ligne et d’un ton péremptoire que ça vient de la batterie du CMOS. Ni une, ni deux, je phagocyte une pile d’une autre appareil High Tech et je fais le test : Bingo !!! Le PC démarre comme si de rien n’était. Je suis un peu dégouté de la tournure qu’a pris la recherche de la panne, j’ai attendu un moment avant de m’y mettre, j’ai tout démonté, tout remonté, tout ça pour une malheureuse petite pile …

Conclusion

Tout ça n’aura pas eu que des mauvais cotés. J’aurais démonté l’ensemble de ma config et dépoussiéré une bonne partie des composants. J’ai aussi profité que le PC était indisponible pour installer OpenSuse en lieu et place de Windows XP.

Catégories :Hardware Étiquettes : , ,

DevoxxFR 2012 : jour 3

24/05/2012 1 commentaire

Petite nuit après la soirée Meet&Greet et un repas assez festif avec en guest NAO le robot d’Aldebaran. Je passerais une partie de la soirée à parler avec les Human Coders et Sebastien Blanc. Petit déjeuner rapide car lever un peu tardif et me voilà d’attaque pour cette dernière journée de conférence. Lire la suite…

Catégories :Conférence, Java Étiquettes : , , , , ,

DevoxxFR 2012 : jour 2

L’avantage avec DevoxxFR, c’est qu’on rencontre des amis de longue date qu’on a pas revus depuis longtemps mais aussi des personnes que l’on ne connaissait jusqu’à présent que par l’intermédiaire des réseaux sociaux et sur lesquels on peut mettre un visage. Après une bonne soirée avec eux passée à refaire le monde ou au moins le programme de la première journée de DevoxxFR et une courte nuit, la deuxième journée commence sur les chapeaux de roues avec un super petit déjeuner made in Mariott et ensuite les keynotes concoctées par les organisateurs. Lire la suite…

Catégories :Conférence, Java Étiquettes : , , , , ,