La Chouette loves Garmin, aka đŠ â€ïž đ
Une Chouette tombant amoureuse dâun singe ? Câest digne dâun conte de fĂ©es !
Laissez-moi vous conter lâhistoireâŠ
Il était une fois, il y a bien longtemps, dans un pays trÚs lointain, au milieu des montagnes et des ruisseaux, des pùquerettes et du génépi, une paisible bourgade nommée Grenoble.
Cette cité était chérie, entre autres, des sportifs en tout genre, ainsi que des savants.
De ce mélange étonnant, notre histoire tient son origine.
The usual suspects
En effet, ActiveLook, une entreprise grenobloise (đ«đ· cocorico !), fabrique des Ă©crans tĂȘte haute pour lunettes : dans des lunettes de sport, ils intĂšgrent leur Ă©cran haute dĂ©finition minuscule, avec une consommation ridicule.
GrĂące Ă cet appendice, lâathlĂšte voit directement dans son champ de vision les donnĂ©es transmises via Bluetooth par un smartphone iOS ou Android.
Et tout cela grĂące Ă la magie de lâingĂ©nierie et de lâoptique (câest-Ă -dire longues heures de R&D !).
De son cĂŽtĂ©, Garmin dĂ©veloppe toutes sortes dâappareils dĂ©pendants des signaux GPS pour positionner, localiser, guider sur terre, mer, et dans le ciel, les militaires, les civils⊠Et aussi les sportifs !
En 2003, ils publient le standard ANT+, une sorte de Bluetooth Low Energy, ou BLE, avec presque une dĂ©cennie dâavance ! Une Ă©ternitĂ© qui a vu la commercialisation dâinnombrables capteurs utilisant ce standard, âwearablesâ ou non, comme des tensiomĂštres, podomĂštres, tachymĂštres, pĂšse-personnes, qui peuvent discuter ensemble, au travers des appareils Garmin.
La mĂȘme annĂ©e, ils commercialisent la montre Forerunner, fournissant aux joggers et aux triathlĂštes des mesures prĂ©cises des distances parcourues, vitesses, tensions cardiaques, altitudes, cadences, et le temps bien sĂ»r ! âOvernight Successâ parmi les sportifs !
Mais !?!? Garmin commercialise des montres fournissant des donnĂ©es sportives et ActiveLook des lunettes affichant des donnĂ©es sportives. HumâŠ
Nây aurait-il pas une opportunitĂ© attendant dâĂȘtre dĂ©couverte ? đ€
Câest ainsi quâActiveLook est revenu vers nous en 2019 pour faire parler les 2 tourtereaux. Ah oui, je dis ârevenuâ, car nous sommes impliquĂ©s dans le dĂ©veloppement de leurs applications Android et iOS.
The UN-usual suspects!
Comme dans tout conte de fĂ©es, une dot se doit dâĂȘtre apportĂ©e. Dans notre cas les systĂšmes connexes aux appareils Garmin.
PremiĂšrement, lâĂ©cosystĂšme Connect IQ de Garmin. Celui-ci intĂšgre tous les outils nĂ©cessaires pour crĂ©er et diffuser une application exĂ©cutable sur les appareils Connect IQ compatibles (compteurs de vĂ©los et montres de la marque). Exactement comme Apple et Google pour leurs smartphones, magasin en ligne inclus.
Et pour ne rien gĂącher, cet Ă©cosystĂšme est fourni gratuitement. Que demande le peuple ?
Mais avec de grands pouvoirs, viennent de grandes responsabilités ! Va-t-on réinventer la roue, ou la rendre meilleure ?
Lâenvironnement Connect IQ propose de nombreuses possibilitĂ©s : applications complĂštes, extensions insĂ©rĂ©es dans le systĂšme par dĂ©faut (DataField), façade pour afficher les donnĂ©es diffĂ©remment (WatchFace), etcâŠ
Câest Ă ce moment que notre đ arrive, enfin ! Garmin requiert le langage Monkey-C pour dĂ©velopper sur sa plateforme.
Oh non, encore un langage propriĂ©taire⊠Certes, mais taillĂ© pour cette plateforme et avec une multitude de petites attentions qui rendent lâexpĂ©rience trĂšs intĂ©ressante.
Par exemple, câest un langage avec une syntaxe inspirĂ©e de lâomniprĂ©sent C, mais bĂ©nĂ©ficiant de plein dâamĂ©liorations apparues avec dâautres langages plus rĂ©cent.
Mais aussi, câest un langage dynamique qui a de nombreux avantages, comme par exemple la gestion automatique de la mĂ©moire. Ou que ce dynamisme permet Ă©galement de charger les extensions, pardon Datafields, Ă la volĂ©e sans avoir besoin de redĂ©marrer nos appareils, et ça pour lâutilisateur, câest vraiment bien !
Pour couronner le tout, la technologie Bluetooth Low Energy (BLE), disponible bien aprĂšs ANT+,mais qui sâest rĂ©pandue comme une traĂźnĂ©e de poudre auprĂšs du grand public. Et avec elle, plĂ©thore dâĂ©quipements ont Ă©tĂ© conçus, du casque audio Ă la montre en passant par la gamelle pour chats et jâen passe et des pas mĂ»rs...
Et les lunettes ActiveLook, bien Ă©videmment !
Setting the stage
Mais sans mĂ©chants, ni obstacles insurmontablesÂč, pas de conte de fĂ©es.
Ăa tombe bien, ils se sont prĂ©sentĂ©s dâeux-mĂȘmes, juste derriĂšre la dot. Quelle chance ! đ
PremiĂšrement, la đŠ ne sait pas parler đ. Ni Connect IQ dâailleurs. BLE ça oui, mais pas BLE avec Monkey-C. Et la tour de Babel nâest pas Ă Grenoble !
Ensuite, et aprĂšs moult dĂ©bats, nous avons dĂ©cidĂ©s dâamĂ©liorer la roue. Le DataField est sorti vainqueur, terrassant ses adversaires par son intĂ©gration dans le systĂšme Connect IQ, et son â apparente â facilitĂ© de dĂ©veloppement.
Malheureusement imposé par Garmin, un Datafield ne peut communiquer directement avec ses comparses Datafields. Pourra-t-on afficher la puissance mesurée par un capteur ANT+ dans nos lunettes ? Que de suspense !
Il existe aussi des limites qui dĂ©pendent de la physique et de nos dĂ©couvertes scientifiques, quantiques, philosophiques⊠Hum, pardon. Je mâĂ©gare !
Bref, une montre, un ordinateur de vĂ©lo, ont une mĂ©moire TRĂS TRĂS limitĂ©e, de quelques dizaines de milliers dâoctets ~64 - 512Ko. Ă titre de comparaison, lâiPhone contemporain le plus chiche en la matiĂšre arbore fiĂšrement 64 Go, soit plus dâun million de fois plus gros ! Chaque bit compte !
Ăgalement, des Ă©lĂ©ments propres au monde qui nous entoure, de la gĂ©opolitique presque : certaines tribus Ă©loignĂ©es utilisent diffĂ©rentes unitĂ©s pour reprĂ©senter, par exemple, les distances. (Non-metric measurement system countries, Iâm looking at you! đ€Ź). Ou, sacrilĂšge, diffĂ©rentes façons de reprĂ©senter des donnĂ©es identiques (km/h ou s/500m ? Chocolatine ou pain au chocolat ? etcâŠ)
De plus, au sein mĂȘme de ces tribus, les pratiquants de vĂ©locipĂšdes auront besoin dâaccĂ©der Ă des mĂ©triques diffĂ©rentes de celles disponibles pour les coureursâŠ
Et si ce nâĂ©tait pas suffisant, le dĂ©veloppeur lui-mĂȘme, laissĂ© Ă son propre chef, peut devenir un mĂ©chant de lâhistoire ! En effet, et câest continuellement vĂ©rifiable, âle dĂ©veloppeur dâaujourdâhui crĂ©e les bugs de demainÂČ !â
Un vrai problĂšme sans solution. Seule la magie pouvait dĂ©mĂȘler le schmilblick!
Where the (not so) magic happens đȘ
Magie ? Vraiment ? En fait non.
Fort de notre partenariat prĂ©cĂ©dent avec ActiveLook, nous avions dĂ©jĂ une bonne partie des spĂ©cifications pour les lunettes, et des attentes des sportifs en gĂ©nĂ©ral. Easy peasy donc, non ? Pas tout Ă fait, car du point de vue dâun sportif utilisant un ordinateur Garmin, aucune. Retour Ă la case dĂ©part.
Nous avons donc interrogĂ© ActiveLook, ainsi que des utilisateurs afin dâextraire la substantifique moelle, le Saint Graal : leurs besoins nĂ©cessaires. Ceux-ci ont dâailleurs Ă©voluĂ© dans le temps, en fonction de ce que nous trouvions, produisions, ⊠Bref, de longues heures de R&D, nâest-ce pas !
Vint le temps des explorations techniques : les diffĂ©rentes solutions possibles et les technologies disponibles et nĂ©cessaires. Et de dĂ©couvrir, entre autre, que Monkey-C et son dynamisme permet de rĂ©soudre notre problĂšme de communications entre les datafields trĂšs facilement. En effet, les donnĂ©es nâĂ©tant pas typĂ©es lors de lâĂ©criture du code, câest Ă lâexĂ©cution que le type est dĂ©terminĂ©. Pas de magie ici non plus, simplement de la communication. Si un objet possĂšde certaines caractĂ©ristiques propre Ă un type, alors nous pouvons lui attribuer le type en question. En informatique, cela sâappelle le đŠ Duck Typing : âSi ça marche comme un canard et que ça cancane comme un canard, alors câest un canardâ. Le systĂšme envoie les donnĂ©es de tous les datafields Ă tous les datafields, Ă chaque seconde, et libre Ă chacun de prendre ce qui lâintĂ©resse.
Aux balbutiements de cette relation đŠ â đ, une autre relation privilĂ©giĂ©e, que dis-je indispensable sâest crĂ©Ă©. Celle entre nos chouettes dĂ©veloppeurs et le simulateur Garmin pour vĂ©rifier que notre programme bien-aimĂ© đ€Ź ne soit pas trop glouton đ± en mĂ©moire. Un peu Ă la façon dâun Jim Lovell essayant de ramener Apollo 13 sans faire sauter les plombs. Bon, bien moins stressant, mais la finalitĂ© est la mĂȘme : obtenir un livrable fonctionnel.
Vous avais-je parlĂ© des limitations de lâordinateur du dĂ©veloppeur ? Bien que nos Macs parlent BLE nativement, le simulateur Garmin, lui, nây a pas accĂšs. Câest certes une broutille (facilement surmontĂ©e grĂące un dongle BLE) mais la ligne dâarrivĂ©e semblait sâĂ©loigner encore et encoreâŠ
Puis on a recommencĂ©, modifiĂ© nos plans, raturĂ© des phrases, paragraphes, voire mĂȘme arrachĂ© des pages entiĂšres⊠Soit en termes plus techniques, nous avons Ă©tudiĂ©, crĂ©Ă©, modifiĂ©, supprimĂ© des projets Monkey-C. Suivis par des projets Monkey-C parlant Bluetooth avec les lunettes (souvent en dialecte trĂšs bas niveau, hexadĂ©cimal, primitif diront certains !).
Ce nâest quâune fois le terrain dĂ©frichĂ©, et les fondations solidement ancrĂ©es, que nous avons pu attaquer la version actuelle, le DataField đ€©.
Et donc tout recommencer ! Mais en appliquant nos connaissances et exploitant nos compĂ©tences nouvellement acquises, bien sĂ»r ! âLather Rince Repeatâ, en vĂ©rifiant et adaptant continuellement le travail pour garder nos chouettes dĂ©veloppeurs dans le camp du bien ! Un vrai travail dâĂ©quipe !
Vous pourriez me dire que câest le propre de tout dĂ©veloppement informatique. Et vous aurez raison ! En effet itĂ©rer sur le travail accompli pour lâaffiner est lâessence mĂȘme de la mĂ©thode Agile et des variantes qui en dĂ©coulentâŠ
Conclusion
Comme tout conte de fĂ©es qui se respecte, il faut conclure par le sempiternel : âIls vĂ©curent heureux et eurent beaucoup dâenfants disponibles sur le Connect IQ Store."
Ce partenariat en cours, bien que nous poussant dans de nombreux coins et recoins rarement visités par les développeurs, comme le développement embarqué, un nouveau langage, un nouvel écosystÚme, ⊠nous a laissé de nombreux enseignements différents, mais essentiels.
Ă titre personnel, ce projet a soulignĂ© lâimportance de la curiositĂ©, de lâhumilitĂ©, des âbest practicesâ, dâutiliser le bon outil pour le travail effectuĂ©. Un retour aux sources de lâartisanatÂł : âLaisser un chantier plus propre quâil ne lâĂ©tait avant son passageâ.
Notre entreprise et ses processes ont Ă©galement Ă©tĂ© affectĂ©s et nous sommes en train dâen amĂ©liorer diffĂ©rents aspects. La communication Ă©tant la pierre angulaire de notre travail, nous amĂ©liorons continuellement lâĂ©change des travaux, leurs reprĂ©sentations, afin quâaucune spĂ©cification, dĂ©cision ne puisse se perdre et soit convenablement exploitĂ©e. De mĂȘme, notre systĂšme de partage des connaissances a bĂ©nĂ©ficiĂ© dâun petit ravalement. Que celui qui nâa jamais Ă©tĂ© dans la situation âNico est en vacances ! On fait comment ?đ±â me lance la premiĂšre pierre !
Bref, maintenant vous savez comment une đŠ est tombĂ©e â€ïž dâun đ (mĂȘme avec une mĂ©moire de đ rouge đ„ł) !
Alors si ce nâest pas dĂ©jĂ fait, abonnez-vous Ă notre blog.
Et si votre systĂšme embarquĂ© est sentimental, contactez-nous, que la Chouette puisse vous donner un pâtit coup dâaile. đ
Ă coeur vaillant, rien dâimpossible ! Moins sexy, mais tout aussi vĂ©ridique, Ă force dâefforts, et de pugnacitĂ© nous avons rĂ©ussi Ă dompter le singe !
[1] Rien nâest insurmontable pour une Chouette, câest un oiseauâŠ
[2] Adaptation trĂšs libre de ce tweet de Filipe Fortes :
âDebugging is like being the detective in a crime movie where you are also the murderer.â
[3] Le âsoftware craftsmanship" est un Ă©tat dâesprit qui se dĂ©veloppe de plus en plus dans la communautĂ© des dĂ©veloppeurs (pun actually intended).