Promotion virale accessible
À la sortie de mon épicerie favorite, je remarque souvent le fameux babillard d’annonces. Autrefois ça pouvait s’avérer pratique pour annoncer ses services, vendre des trucs ou tenter de retrouver son animal de compagnie en fugue. Ça pouvait offrir une visibilité intéressante vu le nombre de personnes qui passaient devant.
À cette époque, on voulait rejoindre un plus grand auditoire, il y avait aussi les journeaux. Ils pouvaient donner un bon coup de main moyennant un léger effort supplémentaire ainsi qu’un petit montant d’argent.
Modernisation de l’affichage
J’ai récemment eu une discussion avec Coach Davender à propos du marketing de mes services. Comme il s’agissait de programmation web, on a bien évidemment pas trop pensé aux babillards ou aux journeaux. Il s’agissait plutôt d’exploiter le net pour me faire connaître.
Il m’a fait remarquer que la dernière fois qu’il a été dans un café internet, 4 consommateurs sur 5 étaient branchés à Facebook. En ce qui me concerne, la grosse majorité des gens avec lesquels j’intéragis y ont un compte. La plupart s’en servent principalement pour s’informer. Certains poussent l’expérience davantage en s’en servant aussi pour s’exprimer sur une base régulière. Peu importe son utilisation, la popularité de ce site en 2011 est indéniable, comme le démontre ce vidéo.
Personnellement, je vois Facebook comme un mélange du babillard et du journal, mais en mieux. J’aime bien manger mes céréales le matin en m’informant des activités et intérêts de mes amis. À ce stade de la journée, je suis plutôt de type mono-tâche, alors j’accorde beaucoup d’attention à ce que j’y vois. Souvent on y trouve des trucs humoristiques et des photos, mais aussi des liens sur de l’information comme sur ce blog par exemple.
Permettre aux visiteurs de contribuer
Depuis peu, Facebook permet à ses utilisateurs d’afficher leur appréciation d’une page web à l’aide d’un simple clic provenant de la page en question. Le bouton “like” a deux fonctions très intéressantes. La première est de comptabiliser le nombre de personne qui aiment le contenu. La deuxième affiche un lien sur le mur de la personne en question. C’est de là que toute la puissance du bouton entre en action. La personne qui pose ce geste expose la page à tous ses contacts qui, à leur tour, peuvent faire pareil, provoquant un phénomène appelé marketing viral.
Dans la région de Québec, on a vu une application pratique de cet effet avec le vidéo de Privilège Gym qui s’est propagé comme une traînée de poudre. N’en falait pas plus pour que ce gym devienne le sujet du jour. Il a souvent été mentioné dans les médias de la région, sans pour autant avoir à débourser le moindre sou.
Insérer ce bouton dans un site web est très simple et très bien expliqué sur le site de Facebook. J’en ai profité pour l’ajouter ici, voir l’impact que ça pourrait avoir sur la popularité du blog, et par le fait même, sur mes services.
En tant que développeur web, je vois plein d’autres applications pour ce type de bouton. Il se pourrait très bien qu’il fasse son apparition sur ActivityMapper pour permettre aux utilisateur le double avantage de démontrer leur appréciation et de publier leurs activités favorites.
Simplifier le processus
Dans Publication économique d’un projet en démarrage, il a été question d’optimiser la quantité des ressources sur le serveur à moindre coût. Pour y arriver, ActivityMapper, un projet en ASP.NET MVC a été déployé sur un serveur Rackspace Cloud pour y être exécuté avec le runtime de Mono.
Environnement de travail et d’exécution hybrides
Le processus de prendre un projet existant et de l’amener en production avec Mono implique de faire attention à ce qu’on utilise. Jusqu’à récemment, le projet était développé dans Visual Studio 2010. Ça fonctionnait bien, si on tient bien compte du fait que les ressources sur une machine Windows en développement sont différentes d’un Ubuntu en production.
La base du logiciel en développement étant de faire des accès SQL et utiliser du Javascript pour afficher les résultat ne posait pas de problème. Les déploiements, l’envoi de courriels ainsi que l’authentification avec OpenID par contre, des processus qui semblent anodin, ont été des sources de maux de tête qui ont relancé l’idée de faire un pas en arrière pour en faire deux en avant.
La suite logique du mouvement vers l’open source déjà établi était donc de tester MonoDevelop. C’est un outil de développement qui s’inspire beaucoup de Visual Studio, excepté qu’il est bâti avec Mono et est fait pour compiler du Mono. Tout ça semblait bien prometteur. On voit que c’est un bon outil pour des nouveaux projets, ce qui n’était pas le cas ici. La migration du code existant fait dans Visual Studio contenait de éléments incompatibles avec MonoDevelop, notemment au niveau du web.config, qui était encore en .NET 3.5 un monstre que personne ne semble maîtriser totalement.
Découverte de Ruby on Rails
Après de nombreuses heures investies ayant laissé derrière plus de frustration que de succès, il fallait au moins considérer autre chose avant de désespérer. Certains amis programmeurs que je respecte beaucoup, notemment Pierre-Luc Simard et Daniel Lepage m’ont fréquemment vanté les mérites de Ruby on Rails, donnant ainsi de la crédibilité à ce framework. J’ai longtemps repoussé du revers de la main tout ce qui était différent de .NET, dans l’objectif d’être excellent avec un framework plutôt que d’être simplement bon dans plusieurs. Le moment où l’ouverture d’esprit étant désormais devenue l’alternative évidente, j’ai entrepris de mettre le développement de côté un instant, le temps d’évaluer cet outil.
À ma grande surprise, faire du Ruby on Rails n’est pas très différent de du ASP.NET MVC puisque Rails est aussi du MVC. La différence la plus marquante est l’usage du langage Ruby plutôt que C#, bien évidemment. Ensuite, l’archictecture du framework web, au lieu d’être laissé au loisir de l’architecte en ASP.NET est très rigide. Beaucoup de fichiers ont leur place bien spécifique. Le résultat est qu’après une petite lecture des guides et un exemple plutôt simpliste, je me suis retrouvé à faire un mandat rémunéré basé là-dessus. Ce projet est actuellement en production et a été livré dans les temps malgré le peu de connaissances que j’avais au moment de l’entreprendre.
L’adaptation à un projet existant est vraiment facile à cause de la rigidité de l’architecture. J’ai toujours été un fervent défenseur des règles de programmation strictes à l’intérieur d’une entreprise pour aider un programmer à passer d’un projet à l’autre. On réalise vite quand on apprend Ruby on Rails qu’il est basé sur ce principe, mais au niveau mondial. C’est donc très facile de comprendre la base de n’importe quel site.
Composantes faciles d’accès et gratuites
Un autre point fort de Ruby on Rails sont les gems. Ils sont en fait une série de librairies emballées de telle manière qu’on peut les intégrer au projet avec une seule ligne de commande, incluant le téléchargement et l’installation. Il en existe justement pour OpenID et pour les courriels, ce qui met un terme définitif aux irritants vécus en Mono.
Les déploiements sont aussi d’une simplicité notoire grâce à Capistrano. C’est très facile à configurer, la plupart du temps en moins d’une heure par un débutant. Ensuite, s’agit d’une ligne de commande à taper pour mettre la nouvelle version du site web en ligne.
Libérer le programmeur de son poste de travail
En ce qui concerne l’édition du texte, nul n’est besoin d’avoir un environnement complexe de développement d’installé. La plupart des aides au développement sont disponibles en mode ligne de commande. J’ai donc personnellement opté pour vim comme éditeur de texte. Il est un peu complexe à maîtriser au début, mais son apprentissage peut être très payant en terme de productivité à long terme. De plus, comme il fonctionne entèrement en mode texte dans un environnement de ligne de commande, il est utilisable en SSH avec syntaxe colorée.
Ce nouveau mode de développement supprime le lien entre l’ordinateur de programmeur. Il est possible d’être pratiquement aussi productif avec un ordinateur public dans un café internet qu’à la maison. S’agit de télécharger PuTTY qui ne demande aucune installation avant usage et c’est parti. Le travail se fait en deux canaux… le premier pour l’édition du texte et le second via le web directement pour voir le résultat. Du moment que le site web de développement est accessible de l’extérieur sur la machine de développement toutes les conditions sont réunies pour pouvoir faire du développement à distance. L’édition d’une ligne de code en ruby applique la modification directement sur le site web parce que ruby est un langage interprété et non compilé.
Conclusion
La version actuelle de ActivityMapper manque beaucoup de fini en production et le restera pour quelques temps. La prochaine version ne contiendra plus aucune composante de Microsoft. Elle sera basée sur Ruby on Rails, avec une base de données PostgreSQL et roulera sous Apache ou peut-être Lighttpd. Le résultat donne du code 100% natif et portable. Il sera produit avec outils gratuits et distribués. Son exécution se fera dans le cloud sous Linux.
L’étape logique après avoir rêvé, analysé et programmé un logiciel web, c’est sa publication. Pour maximiser le succès d’un site, il faut s’assurer que le site soit à l’écoute, performant et spacieux. À moins d’avoir les poches creuses, trouver un bon dosage de ces 3 caractéristiques peut mener à certains compromis.
Conserver les données
Dans le cas de ActivityMapper, une chose est certaine, il faut de l’espace. Voici un bref calcul pour comprendre les besoins du système. Une activité sportive de 2 ou 3 heures qui y sera affichée sur la carte, avec le temps, les pulsations cardiaques et l’altitude à chaque point coûtera en moyenne 50KB. Prenons en exemple le cas typique d’un sportif qui s’adonne 3x par semaine l’été au vélo de montagne et l’hiver au ski de fond. S’il veut garder la forme, il le fera sans arrêt pendant toute l’année, soit 52 semaines dans une année. Sa consommation d’espace annuelle sera donc estimée à 7.6MB.
À première vue, ça ne parait pas beaucoup, mais comme l’objectif est de tout conserver, aussi bien s’assurer de viser haut. Pour rappel, le site utilise une base de données de type SQL Server. Après avoir épluché bon nombre d’hébergeurs compatibles avec cette technologies, j’en suis venu à comprendre qu’ils offrent la plupart du temps des bases de données de 200MB. Tout dépendamment du montant déboursé, on peut avoir plusieurs instances de cette taille. N’empêche que ça semble géré par une question de licence alors c’est pas très discutable. Certains m’ont proposé d’utiliser plusieurs bases de données si j’ai besoin de beaucoup d’espace. On rentrera pas dans les détails ici mais c’est comme pas l’idéal pour un programmeur de fonctionner comme ça. Dans mon cas c’était carrément hors de question.
Cette contrainte m’a donc fait ressortir ma calculatrice. J’ai été stupéfait de réaliser qu’avec un tel forfait, ma base de données s’emplira en un an si je réussis à atteindre le plateau des 26 contributeurs. Une fois pleine on fait quoi? Pas question de supprimer des activités, le but premier du site est de les conserver!
Isoler la base de données du code
N’en fallait pas plus pour que l’idée de changer de technologie est revenue d’actualité. Lors de la refonte majeure du site en ASP.NET MVC, l’accès au données a aussi été refait. J’en ai beaucoup discuté avec Vincent Girard, de chez SpektrumMedia, et il m’a convaincu que NHibernate était une solution fantastique pour l’accès aux données. C’est donc ce que j’ai utilisé. Le résultat est une couche d’abstraction entre le code et la base de données.
N’en fallait pas plus pour ouvrir la possibilité de changer de moteur de bases de données. Pour différentes raisons, c’est PostgreSQL qui a hérité du contrat. Comme il s’agit d’une technologie open source, elle n’impose pas de limites liées à sa licence d’utilisation.
Autre chose, quand on apprend une nouvelle technologie et qu’on a pas de contraintes particulières, on est porté à apprendre la dernière version. Cependant, les hébergeurs qui proposent des solutions toutes faites sont rarement aussi à jour parce qu’ils préfèrent s’assurer que la technologie est mature avant de l’offrir à leur clientèle. J’ai aucun problème avec ça et je les comprends bien de vouloir offrir un maximum de stabilité, sauf que dans mon cas, ça m’impose de connaitre les différences entre la version que je viens d’apprendre et celle qu’ils offrent.
Cloud computing
Tant qu’à abattre les obstacles, aussi bien le faire proprement. Pour se débarrasser des problèmes de versions, y’a pas mieux que de prendre le contrôle du serveur. Traditionnellement, ça prenait un serveur dédié pour avoir ce type de liberté. Cependant la virtualisation ayant beaucoup progressé, pourquoi ne pas tirer avantage du cloud computing?
Une petite visite chez Rackspace Cloud m’a convaincu. J’ai opté pour le forfait 40GB d’espace pour 43.80$US par mois. On passe donc de 26 à 5389 contributeurs selon mon calcul précédent, et ce, pour un prix comparable. Ce qui est encore plus génial avec ce type d’hébergement, c’est qu’on peut augmenter ou diminuer la quantité de ressources via une petite interface web de configuration. Ça devient donc possible de changer de forfait, appuyer sur reset et en dedans de quelques minutes, le site est exactement pareil mais plus rapide et spacieux!
Émuler .NET sous Linux
Rackspace offre des serveurs qui roulent sous Windows, mais pas à l’époque où j’avais opté pour leur service. C’était donc une distribution de Linux ou rien. J’ai donc entrepris de tester ActivityMapper avec Mono/Apache plutôt que ASP.NET/IIS. Ça s’est avéré une bonne chose parce que ça a fonctionné avec un minimum d’efforts. Ça m’a aussi permis de couper encore dans les coûts d’hébergement.
Il faut savoir que pour qu’un site fonctionne sous Mono, il faut éviter d’utiliser les namespace commençant par Microsoft. Ils dépendent bien souvent des fonctionalités qu’on ne retrouve que sous Windows, ce qui est un frein à la portabilité. J’utilisais entres autres une librairie OpenID, DotNetOpenAuth si je me souviens bien, qui utilisait ces namespaces. Il parlaient d’améliorer la situation à l’avenir mais le mal était fait. Une partie de la migration a donc impliqué le changement de cette librairie pour une autre. La leçon retenue est que mieux vaut s’en tenir aux namespaces System quand on code des librairies en .NET.
C’est donc le setup actuel de ActivityMapper en production. Il est aussi stable que s’il avait été hébergé chez du Microsoft, mais pour une fraction du prix. En fait, j’ai pas souvenir qu’il ait été down une seule fois en plus d’un an d’opération 24h/24.
Dynamiser une application web
Dans mon dernier billet, Évoluer avec le web, il était question d’amélioration de compétences à travers un projet concret. ActivityMapper a servi de projet cobaye dans cet exercice. L’objectif premier était de le faire passer d’un site web vers une application web. La différence est qu’au lieu de naviguer d’une page à l’autre, on tente d’imiter le comportement d’une application native. On tente donc de créer un espace de travail avec des barres d’outils servant à gérer l’affichage des activités sur la carte au centre de l’écran. Tant qu’à changer totalement de principe, pourquoi pas réécrire l’application au complet en ASP.NET MVC?
Afin d’en arriver à ce résultat, il faut permettre plus d’intéractivité avec le serveur à partir d’une page web en utilisant du javascript. L’avantage c’est qu’une partie du code est exécuté dans le navigateur de ceux qui visitent le site, donnant davantage l’impression d’utiliser un logiciel dynamique.
Ce langage est plutôt ancien mais a beaucoup gagné en momentum récemment. Plusieurs raisons en font maintenant un incontournable. Premièrement il est intégré dans tous les navigateurs web et son implémentantion est standardisée. Depuis l’avènement de Google Chrome, les navigateurs se font la compétition à savoir qui exécute le javascript le plus rapidement. On a donc été témoin d’une escalade de performance au point où l’exécution de certaines tâches qui pouvaient se compter en plusieurs secondes avant est maintenant quasi instantanée.
Il n’en fallait pas plus pour donner beaucoup de popularité à toute une série de frameworks basés sur ce langage. Parmi ceux-ci, on compte jQuery, ExtJS et Prototype. Au début de mon analyse de ces produits, j’ai opté pour jQuery parce qu’il avait une excellente réputation, et c’est toujours le cas aujourd’hui d’ailleurs. J’ai donc lu tour à tour Learning jQuery 1.3, jQuery UI 1.6 et jQuery Reference Guide pour me familiariser avec le concept.
Le principe derrière ces frameworks, c’est de trouver des éléments HTML et leur appliquer des modifications en très peu de code. Exemple, la ligne ci-dessous cherche tous les éléments de la page qui ont la classe CSS “important” et y ajoute la classe “evidence”. Ça pourrait permettre de faire ressortir des éléments importants d’un texte en le mettant en souligné jaune comme avec un marqueur, par exemple.
$(".important").addClass("evidence");
Mis à part les modifications esthétiques qui peuvent être appliquées, on peut aussi faire appel au serveur pour récupérer des nouveaux éléments ou des informations brutes. Ici, on peut facilement récupérer le nom de l’activité numéro 3 et l’afficher dans tous les éléments qui ont la classe “activityName”.
$.get('http://localhost/activity/3/name', function(name){
$('.activityName').html(name);
});
C’est là que le JSON, JavaScript Object Notation, prend tout son sens. Il s’agit d’une manière d’encoder des informations structurées. En une seule ligne de code, javascript peut transformer une string JSON en objets. C’est donc possible de transporter des objets du server pour consommation telle quelle dans le navigateur. Exemple pratique, récupérer une liste d’activités complète de la base de données sur le serveur et bâtir dynamiquement une grille pour les afficher dans le navigateur du client. C’est à partir de ce principe que j’ajoute de la vie dans une page web. Il s’agit de modifier la page existante avec des nouveaux éléments en réaction à des événements quelconques, tels que l’intéraction d’un utilisateur avec la page.
Le passage de ASP.NET à ASP.NET MVC facilite l’utilisation de javascript dans un projet web principalement parce que les ID des éléments sont attribués au niveau du HTML plutôt que dans des contrôles serveurs. Le fait que ASP.NET fasse une abstraction partielle du HTML en utilisant des contrôle complexifie l’utilisation du javascript. Bien souvent les éléments HTML avec lesquels on voudrait intéragir ont des ID générés avec la page. Ils sont dépendants de la hiérarchie des contrôles utilisés et peuvent devenir très complexes. Sans rentrer dans les détails ici, je peux vous assurer que ça fait partie des raisons pourquoi beaucoup de programmeurs ASP.NET sont allergiques au AJAX. Microsoft a encapsulé le principe dans un système de panneaux à rafraîchissement dynamique. C’est une belle initiative, mais on est loin du one-liner qui met en évidence tous les éléments importants d’une page.
Tout ça pour dire que sous ASP.NET MVC, les contrôles sont révolus. Le principe est simple: récupérer les données dans un premier lieu et les insérer dans une page. Ensuite, si la page veut rappeller le serveur pour se mettre à jour, juste la peine de faire un call AJAX et modifier la page avec les nouvelles informations reçues.
Avec ces principes, en plus de sauver sur le temps de développement, on se permet de dynamiser le site web. Ensuite vient la mise en production, dont il sera question lors du prochain billet.
Évoluer avec le web
Dans un souci d’amélioration de mes compétences en tant que programmeur web, j’ai lancé un projet de cartographie d’activités physiques y’a quelques années: ActivityMapper. L’idée de base était de réaliser un projet du design jusqu’à la mise en production tout en poussant mes connaissances à la limite. Mieux encore, ça enregistre des données concrètes reliées aux activités physiques des utilisateurs qui y rendent visite. Je fais partie moi-même des consommateurs du site. Je vois ça comme un avantage indéniable parce que ça aide à se mettre dans la peau du visiteur potentiel, question de rendre l’expérience la plus conviviale possible.
Ce projet est encore au stade de plate-forme d’apprentissage en ce qui me concerne malgré sa mise en ligne depuis plusieurs années. Pourquoi mettre autant de temps pour terminer un projet? Parce qu’à mesure qu’il évolue, je trouve de meilleures idées quant à sa composition interne et je n’hésite pas à revenir en arrière sur mes décisions passées. C’est pourquoi il a changé de carrosserie et de moteur à plusieurs reprises.
À l’origine, la technologie sur laquelle il était bâti était ASP.NET, avec une base de données de type SQL Server. C’était facile de partir avec ça parce que j’utilisais ces technologies tous les jours au travail.
Étant un gars qui aime faire de la veille au niveau des outils de programmation, j’ai découvert http://www.asp.net/mvc au moment où sa première mouture était encore en développement. Scott Hanselman ainsi que ScottGu poussaient pas mal fort pour ce projet, ce qui lui donnait de la crédibilité à mes yeux. Ce qui m’a le plus fasciné de ce framework web, c’est le fait qu’il supprime une couche d’abstraction opaque entre le programmeur et le rendu en HTML. Le concept derrière ASP.NET ressemble beaucoup à de la programmation pour Windows. Ceci dit, il implique des contrôles qui enrobent une bonne partie du code HTML et du javascript. La construction d’une page en ASP.NET implique tout un système événementiel que peu de gens maîtrisent totalement et qui m’a toujours paru peu compatible avec la nature du web. Je dois avouer par contre que ça fonctionne, particulièrement dans de gros projets, car il y a plein de main d’oeuvre qualifiée pour cette technologie de nos jours. Personnellement je trouve ça lourd pour des projets de petite envergure.
MVC signifie Model – View – Controller. Le concept est simple. Toutes les requêtes HTTP passent par les controllers, qui sont en fait des classes publiques avec des méthodes exposées sur le web. Le controlleur peut optionnellement se servir de modèles pour intérroger la couche d’affaire du logiciel ou faire des accès à la base de données, pour ensuite générer du HTML via une vue. La vue est en fait un template en HTML qui contient des tags ASP.NET MVC qui agissent un peu comme des “fill the blank”. Ces tags contiennent du code C# ou VB.NET qui seront exécutés quand le HTML est généré. Ils seront remplacés par autre chose, comme un tableau de données dynamiques, un nom de personne, ou toute autre partie dynamique de la page.
Pour plusieurs raisons, j’ai compris que bien des détours que j’avais dû faire en ASP.NET classique pouvaient être transformés en quelques lignes de code en ASP.NET MVC. J’ai donc entrepris un premier changement de moteur à ce moment là, ce qui a demandé une réécriture presque complète du code. Je dois avouer que ça m’a pris beaucoup de lecture ainsi que plusieurs tentatives infructueuses avant d’être solidement basé sur de bonnes pratiques. Les deux technologies ont beau porter le même nom, le seul lien entre les deux est qu’elles servent du contenu sur le web et que le code serveur est en .NET. Il faut donc être prêt à revoir bien des méthodes de travail pour faire le switch.
Le livre Professional ASP.NET MVC m’a beaucoup aidé dans ma transition. Les deux Scott mentionnés précédemment y ont inclus un premier chapitre gratuit qui explique très simplement comment faire un site de rencontre pour geeks dans un temps record. Le livre en est rendu maintenant à sa 2e mouture.
Le principe de MVC établit une abstraction supplémentaire entre le code et son utilisation sur le web. Pour un programmeur, la manière la plus facile de traiter des informations est d’exposer des méthodes, recevoir des paramètres et retourner le rendu du travail effectué. C’est exactement le principe derrière MVC. Les URL déterminent la méthode à exécuter ainsi que les paramètres à lui passer. Ce que l’utilisateur reçoit en retour est la page web, les données brutes à consommer en AJAX ou les fichiers binaires concoctées par le programmeur. Ça parrait donc vite très naturel pour ce dernier de procéder de cette façon. C’est un concept procédural de base.
Si on pousse le concept un peu plus loin, le consommateur d’une fonction exposée sur le web peut très bien être une autre fonction. Cette autre fonction peut faire partie du même logiciel, ou d’un autre complètement ailleurs sur l’internet. Ça ouvre la voie à de la réutilisation interne, du AJAX ou carrément des plugins. Ces principes aident beaucoup à s’ouvrir au monde, ce qui est particulièrement important quand on fait un projet grand public. De plus, j’aime bien retourner des pages très simples et rapide à générer, tout en permettant d’introduire du contenu de manière dynamique par la suite. Plusieurs frameworks javascript tels que jQuery, ExtJS ou Prototype facilitent beaucoup cette intéractivité.
AJAX signifie Asynchronous Javascript And Xml. Les programmeurs ASP.NET ont tendance à associer AJAX à un concept moderne intéressant, mais qui ajoute trop de complexité par rapport à l’effort qu’il faut déployer pour le mettre en place. Sans rentrer dans les détails, disons que le fait de se rapprocher du HTML avec le principe de MVC élimine une bonne partie de cette compexité. En quelques lignes de javascript, on peut maintenant récupérer des informations du serveur et les afficher dans la page en cours. On parle donc en MVC d’un appel de fonction via le web qui retourne une liste d’items en JSON, une image, un message d’un autre utilisateur, bref, tout ce qu’on abilite le serveur à retourner.
C’est ce qui arrive avec ActivityMapper. Dans sa mouture actuelle, il affiche un environnement qui ressemble à un logiciel plus qu’à une page web. En naviguant un peu dans le calendrier, on peut parvenir à faire afficher des activités physiques extérieures sur une carte Google Maps. Côté ergonomie c’est un gros 0 pour l’instant, mais l’intéractivité est là et c’était le but de l’exercice à venir jusqu’à maintenant.
Pour plus de détails à propos de cette migration de ASP.NET vers ASP.NET MVC, voir Dynamiser une application web.
Les polices et le web
Lors du dernier 5@7 chez SpektrumMedia, j’ai eu une petite discussion productive avec Jonathan Simard. Ce gars là est le graphiste le plus impressionnant qui m’a été donné de rencontrer en personne jusqu’à maintenant. Ceci dit, quand il parle de son travail, j’écoute attentivement.
Il m’a expliqué que c’était maintenant rendu possible d’utiliser des polices de caractères inédites pour décorer des sites web. Comme on était tout juste à côté de son poste de travail, il en a profité pour me faire découvrir Font Squirrel. C’est une source intéressante de polices gratuites. Non seulement le matériel qu’on y retrouve est d’une excellente qualité, mais ils donnent même des exemples d’intégration.
Depuis, j’ai trouvé du temps pour me familiariser avec ce concept qui m’échappait auparavant. Je me suis donné comme premier objectif de changer le look de ce blog. Une petite recherche de google m’a mené à un article expliquant comment y parvenir en quelques minutes. J’ai appliqué la recette et en bout de ligne, je trouve que ça donne plus de caractère à ce que j’écris.
Une des meilleures façons que de se mettre en forme l’été, c’est de faire du vélo. Ça permet de faire des efforts continus sur plusieurs heures de manière divertissante.
Le vélo de montagne en est ma déclinaison favorite. Particulièrement le cross-country, qui consiste principalement à parcourir des singletracks ou du moins en dehors des sentiers battus.
Ce qui me motive le plus à me dépasser, c’est de comparer mes efforts à mesure que la saison avance. La manière la plus efficace que j’ai trouvé pour déterminer le degré d’intensité déployé dans un sentier est de mesurer mes pulsations cardiaques. C’est là que la technologie vient s’impliquer dans mes activités physiques.
Pour y arriver, il existe des outils qui récupèrent des informations tout au long de l’activité. C’est pratique parce qu’ils peuvent établir des statistiques utiles du style maximum de pulsations atteint, moyenne, répartitions par zones d’efforts, etc… Polar est très certainement une des marques les plus en vue pour ses cardios-compteurs. Ils peuvent aussi être associés à diverses accessoires mesurant la distance effectuées à la course ou en vélo, par exemple. Ça peut être des capteurs de cadence attaché aux pieds pour la course, ou des capteurs qui comptes les passages d’un aimant attaché à la roue avant d’un vélo. Équipé de la sorte, on peut ajouter à la liste des statistiques la vitesse courante, maximale, moyenne, la distance parcourue, etc…
Étant un adepte de la comparaison de produits sur internet, mes recherches en la matière m’ont cependant mené vers une marque différente. À ma grande surprise, Garmin, un spécialistes en GPS s’est lancé aussi dans le domaine des sports et de la performance. Ils offrent toute une gamme de montres pouvant enregistrer les déplacements les pulsations cardiaques, et ce, pour la durée entière de l’exercice.
Parmi les modèles disponibles, j’ai opté il y a un certain temps pour la Forerunner 305 pour son prix relativement bas. On peut l’obtenir sur eBay pour moins de 200$. Je l’aime à un point tel que c’est devenu un réflexe de la porter dès que je sors faire une activité extérieure.
Une fois la montre attachée au poignet, ça devient un jeu d’enfant d’essayer des nouvelles pistes sans risquer de se perdre en forêt. Pendant l’activité, elle trace un pointillé représentant le déplacement effectué. Au début de ce tracé se trouve un drapeau indiquant le point de départ. Bref, tout y est pour se retrouver facilement.
Le retour à la maison est encore plus intéressant pour les amateurs de technologie et d’analyse d’efforts. Il suffit de la brancher via un port USB et utiliser un logiciel approprié pour transférer et enregistrer toutes ces données de manière permanente dans une base de données.
À partir de ce moment, on peut compter sur les des centaines de points contenant les mesures suivantes: latitude, longitude, distance, temps, pulsations cardiaques et altitude.
Que faire avec ces informations? C’est le sujet qui sera abordé dans un autre billet.
On sort de l’ombre

Bienvenue chez Informatique RooSoft inc., une micro-entreprise actuellement constituée d’un seul et unique contributeur, c’est à dire moi-même.
Pour ceux que ça pourrait intéresser, RooSoft se prononce roux-soft. Ce nom est issu du surnom “Roux” qui m’a été attribué quand j’étais étudiant. Cette appellation est d’ailleurs encore utilisée régulièrement aujourd’hui par beaucoup de gens pour me désigner. Quand il en est question, on est généralement dans le contexte de mon petit côté givré.
On s’entendra sur le fait que j’ai aussi un côté nutritif qui a mené à mon incorporation. Il est issu à la fois d’une passion et d’une vision. Actuellement, l’objectif visé est d’arriver à gagner ma vie en commercialisant un site web interactif issu de mes loisirs. On m’a souvent répété qu’il était important d’aimer son métier. C’est une partie importante du temps qui nous est alloué, communément appelé temps plein. Si j’utilise ce que j’offre dans un but ludique, il est fort à parier que d’autres gens en feront de même en le consommant à leur tour.
En résumé, à travers les articles informatifs qu’on retrouvera ici se glisseront potentiellement d’autres plus rigolo. Ce sera pour l’instant mon seul et unique blog et il réflètera donc ces deux côtés de ma personalité.







