<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pheromone Lab &#187; Tech</title>
	<atom:link href="http://lab.pheromone.ca/category/technologie/feed/" rel="self" type="application/rss+xml" />
	<link>http://lab.pheromone.ca</link>
	<description>Inspiration, Experimentation, Innovation</description>
	<lastBuildDate>Thu, 02 Sep 2010 19:19:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Montréal Ouvert &#8211; Première Réunion &#8211; Compte Rendu</title>
		<link>http://lab.pheromone.ca/2010/09/02/montreal-ouvert-premiere-reunion-compte-rendu/</link>
		<comments>http://lab.pheromone.ca/2010/09/02/montreal-ouvert-premiere-reunion-compte-rendu/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 19:19:08 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Recherche]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[données ouvertes]]></category>
		<category><![CDATA[meeting]]></category>
		<category><![CDATA[montréal]]></category>
		<category><![CDATA[montréal ouvert]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[opendata]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=639</guid>
		<description><![CDATA[La première réunion de Montréal Ouvert a été un succès. Le sujet : « Les données de la ville de Montréal. » Je ne sais pas ce qui était le plus encourageant la chaleur des discussions, l&#8217;envie de faire bouger les choses ou la grande diversité des personnes présentes. En effet, nous étions tous d&#8217;horizons [...]]]></description>
			<content:encoded><![CDATA[<p>La <a href="http://montrealouvert.net/2010/08/11/1e-reunion-de-montreal-ouvert-ouvert-a-tous/" title="1e réunion de Montréal Ouvert &#8211; ouvert à tous Montreal Ouvert">première réunion</a> de <a href="http://montrealouvert.net/" title="Montreal Ouvert &#8212;  Montreal Ouvert">Montréal Ouvert</a> a été un succès. Le sujet : « Les données de la ville de Montréal. » Je ne sais pas ce qui était le plus encourageant la chaleur des discussions, l&#8217;envie de faire bouger les choses ou la grande diversité des personnes présentes. En effet, nous étions tous d&#8217;horizons différents étudiants, chefs d&#8217;entreprises, employés de la ville de Montréal, chercheurs, programmeurs, géologues, consultants, spécialistes de la visualisation de données, journalistes, bibliothécaires. Tous étaient là pour <strong>participer</strong>.</p>
<h2 id="objectifs_de_montral_ouvert">Objectifs de Montréal Ouvert</h2>
<p>Les <a href="http://montrealouvert.net/a-propos/" title="À propos Montreal Ouvert">fondateurs</a> de Montréal Ouvert ont présenté les objectifs de l&#8217;association.</p>
<ul>
<li>Favoriser l&#8217;émergence d&#8217;une motion de la part de la ville de Montréal à propos des données ouvertes</li>
<li>Aider à la mise en place d&#8217;un portail d&#8217;accès aux données</li>
<li>Aider à l&#8217;émergence d&#8217;une <a href="http://fr.wikipedia.org/wiki/Interface_de_programmation" title="Interface de programmation - Wikipédia">API</a> pour accéder ces données</li>
<li>Aider à la définition des standards et de la politique de conservation de ses données</li>
</ul>
<p>L&#8217;objectif pour Montréal Ouvert n&#8217;est pas de créer une plateforme mais de supporter une motion qui permettra à la ville de budgétiser une plateforme.<br />
La motion devra être courte et synthétique.</p>
<h2 id="la_ville_de_montral_et_ses_donnes">La ville de Montréal et ses données</h2>
<p>Il y a aujourd&#8217;hui de nombreux débats dans la ville autour des données ouvertes. Il existe cependant des barrières d&#8217;accès à ses données. Certaines sont conservées dans des documents PDF, difficilement accessibles. La source, le format et les licences d&#8217;utilisations sont la plupart du temps non ou mal définies.</p>
<p>Il y a définitivement un intérêt des employés de la ville tels qu&#8217;ils l&#8217;expriment à cette réunion. Cela ne suffira pas à ouvrir les données. Il y a vraiment besoin d&#8217;une politique générale. Montréal Ouvert se veut non partisan et recherche le support de toutes les tendances politiques siégeant à la ville. Une politique de données ouvertes est souvent intimidante pour les décisionnaires, car les conséquences sont mal connues, identifiées.</p>
<p>On oublie souvent que la ville peut avoir des difficultés à accéder ou échanger ses propres données entre les différents services ou municipalités. La collecte des données et la transmission n&#8217;ont pas toujours des formats normalisés qui rendent difficile l&#8217;utilité du partage. Certaines données à l&#8217;interne ne sont ni documentées, ni interopérables.</p>
<p>Si tous les développements sont partagés, ils permettent  à d&#8217;autres villes de bénéficier du travail déjà réalisé. Il est également recommandé pour certaines villes de mettre leurs efforts en commun.</p>
<h3 id="besoin_de_cas_d8217utilisations">Besoin de cas d&#8217;utilisations</h3>
<p>Afin de convaincre la ville, il est nécessaire de monter des cas d&#8217;utilisations, de collecter des cas concrets comprenant les coûts et bénéfices que cela a entraîné. Il y a des exemples comme au Danemark ou en Catalogne qui sont relativement bien documentés.</p>
<h3 id="besoin_d8217inventaire">Besoin d&#8217;inventaire</h3>
<p>Il serait bon de faire un inventaire des données existantes de la ville de Montréal. Cette initiative implique des ressources humaines et une grille d&#8217;analyse. Il est également nécessaire d&#8217;avoir le retour des implémenteurs. Quelles ont été leurs difficultés&nbsp;? Qu&#8217;est-ce qui a marché et n&#8217;a pas marché lorsqu&#8217;ils ont utilisé les données de la ville de Montréal.</p>
<h3 id="les_craintes">Les craintes</h3>
<p>Parfois la ville peut être frileuse de partager les données car il manque du contexte autour de ses données. Des journalistes, des citoyens peuvent tirer des conclusions approximatives. Cependant, il est possible que la ville soit secouée par certaines analyses. Celles-ci deviennent alors partie du processus démocratique et redonnent l&#8217;action au citoyen.</p>
<h2 id="comment_participer_">Comment participer ?</h2>
<p>Certaines personnes pendant la soirée affichaient leur volonté claire de participer, mais étaient un peu perdues quant aux actions concrètes à prendre. Je pense que le mouvement se structure et que les actions vont émerger petit à petit.</p>
<p>Une personne a mentionné que pour démontrer l&#8217;utilité des données ouvertes, il fallait créer des applications tout de suite, de ne pas attendre la motion. Ainsi même imparfaite et difficile à maintenir, cette première génération d&#8217;application permettra d&#8217;encourager la ville dans le bon sens comme cela s&#8217;est passé à Oakland ou à San Francisco. «&nbsp;Show, don&#8217;t tell&nbsp;» Une autre personne propose un concours de design autour des données ouvertes de la ville de Montréal. </p>
<p>Certaines données seront plus efficacement mises à jour et collectées par les citoyens. C&#8217;est une force que les citoyens peuvent offrir aux autorités de la ville, si la plateforme est disponible.</p>
<p>Il faut également en parler sur vos propres blogs, twitter, entreprises, etc. afin que l&#8217;idée se répande et soit un mouvement citoyen global.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/09/02/montreal-ouvert-premiere-reunion-compte-rendu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Touche à tout</title>
		<link>http://lab.pheromone.ca/2010/09/01/touche-a-tout/</link>
		<comments>http://lab.pheromone.ca/2010/09/01/touche-a-tout/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 14:54:45 +0000</pubDate>
		<dc:creator>Olivier Théreaux</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[UX – Experience Utilisateur]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=630</guid>
		<description><![CDATA[Un article publié ce matin dans New York Times, intitulé « To Win Over Users, Gadgets Have to Be Touchable» note la rapidité avec laquelles les interfaces tactiles ont été adoptées par les consommateurs, à un point tel que beaucoup se retrouvent frustrés lorsqu&#8217;un appareil ne réagit pas, tel qu&#8217;attendu, à un balayage ou pointage [...]]]></description>
			<content:encoded><![CDATA[<p>Un article publié ce matin dans New York Times, intitulé « <a href="http://www.nytimes.com/2010/09/01/technology/01touch.html">To Win Over Users, Gadgets Have to Be Touchable</a>» note la rapidité avec laquelles les interfaces tactiles ont été adoptées par les consommateurs, à un point tel que beaucoup se retrouvent frustrés lorsqu&#8217;un appareil ne réagit pas, tel qu&#8217;attendu, à un balayage ou pointage du doigt. </p>
<div class="wp-caption alignleft" style="width: 250px"><a href="http://www.flickr.com/photos/opusinfinity/4922162571/"><img alt="" src="http://farm5.static.flickr.com/4096/4922162571_10a5fdaa26_m.jpg" title="Finger Prince" width="240" height="180" /></a><p class="wp-caption-text">Finger Prince by opusinfinity, on Flickr</p></div>
<p>C&#8217;est ce que Sony a découvert, lors de tests avec des consommateurs:</p>
<blockquote cite="http://www.nytimes.com/2010/09/01/technology/01touch.html"><p> The latest is a new line of Sony e-readers that the company will introduce Wednesday. For the first time, all have touch screens; Sony decided on the technology after watching person after person in focus groups automatically swipe the screen of its older, nontouch e-readers.</p>
</blockquote>
<p>Cette tendance a ses implications, outre dans le design des nouveaux appareils, mais aussi dans le design d&#8217;interfaces. Depuis plusieurs mois, notre travail de design a dû évoluer avec cette nouvelle tendance. C&#8217;est le cas bien sûr pour le design d&#8217;interfaces dans notre travail sur des services ubiquitaires, puisque la plupart des appareils mobiles contemporains sont tactiles. Mais c&#8217;est aussi le cas pour notre design d&#8217;interfaces Web en général.</p>
<p>Depuis des années, le design Web a pris pour habitude d&#8217;offrir des interactions particulières à une utilisation d&#8217;une souris. Lorsque le visiteur passe le pointeur sa souris sur certaines zones (le fameux “hover” ou “mouse over”), de nombreuses fonctions peuvent être déclenchées: offrir de l&#8217;information contextuelle, ouvrir un menu, indiquer la présence d&#8217;un hyperlien ou la possibilité d&#8217;agir avec le contenu ou l&#8217;interface. </p>
<p>Tout cela change avec la multiplication d&#8217;appareils connectés au web dont la principale interface utilisateur n&#8217;est plus une souris et son pointeur, mais un écran tactile. Exit la possibilité pour le visiteur de traîner sa souris comme on traîne le regard à la recherche d&#8217;information. Même si <a href="http://37signals.com/svn/posts/2389-hovers-and-power-users-still-have-a-healthy-future">elles ont toujours leur utilité comme petit “plus” pour les utilisateurs avancés (avec un ordinateur et une souris ou un trackpad</a>, les fonctions de “:hover” ont fait long feu, et comme l&#8217;écrit Andy Croll, <a href="http://2010.andycroll.com/writing/the-end-of-hover">beaucoup d&#8217;interfaces migreront sans doute du hover au tapotement</a>.</p>
<p>C&#8217;est sans doute une bonne chose. Depuis longtemps, les apôtres des bonnes pratiques Web notent qu&#8217;il est préférable, pour de nombreux utilisateurs du Web, de ne pas offrir d&#8217;information ou d&#8217;interaction exclusivement via “:hover” ou autre action qui nécessite l&#8217;utilisation de la souris. En effet, certains utilisateurs n&#8217;ont pas le contrôle neuro-moteur suffisant pour effectuer des déplacements subtils d&#8217;une souris. D&#8217;autres, dont la vision ne leur permet pas d&#8217;utiliser un écran et une souris, accèdent le Web entièrement avec un clavier et une synthèse vocale. </p>
<p>De nombreux développeurs pour le Web auront déjà pris en compte ces besoins d&#8217;accessibilité, mais d&#8217;autres auront sans doute eu du mal à voir pourquoi il faudrait “amputer leur design” pour un petit pourcentage d&#8217;utilisateurs aux handicaps divers. La prolifération des interfaces tactiles change la donne. Elle apporte avec elle une nouvelle démographie “handicapée de la souris”: un public souvent jeune, assez riche et prêt à adopter les nouvelles technologies. Et cela change tout.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/09/01/touche-a-tout/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Open Your Data and Make Business</title>
		<link>http://lab.pheromone.ca/2010/08/17/open-your-data-and-make-business/</link>
		<comments>http://lab.pheromone.ca/2010/08/17/open-your-data-and-make-business/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 18:26:54 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Affaires]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[bixar]]></category>
		<category><![CDATA[bixi]]></category>
		<category><![CDATA[creativecommons]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[license]]></category>
		<category><![CDATA[opendata]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=615</guid>
		<description><![CDATA[In Montreal Transportation Open Data, I was writing: Give the opportunity for people to develop commercial (or not) applications helping/driving users to order tickets or use more the service. The Bixi system has been inaugurated in London this summer. According to the Guardian, Transport For London, decided to release the data to encourage developers to [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://lab.pheromone.ca/2010/08/09/montreal-transportation-open-data/">Montreal Transportation Open Data</a>, I was writing:</p>
<blockquote><p>Give the opportunity for people to develop commercial (or not) applications helping/driving users to order tickets or use more the service.</p></blockquote>
<p>The Bixi system has been inaugurated in London this summer. According to the <a href="http://www.guardian.co.uk/technology/blog/2010/jun/30/tfl-cycle-data-free">Guardian</a>, Transport For London, decided to release the data to encourage developers to create innovative applications.</p>
<blockquote><p>Transport for London (TfL) is suddenly getting the free data/app development religion. Having just relaxed its rules to allow commercial use of an initial set of its train and tube data, it is now calling on mobile developers to &laquo;&nbsp;come up with innovative and creative ways to keep users informed about the Mayor&#8217;s flagship cycling scheme.&nbsp;&raquo;</p></blockquote>
<p>That is good! We just something similar with Bixi data in Montréal: <a href="http://lab.pheromone.ca/2010/08/05/bixar-montreal/">Bixar</a>．It is <a href="http://blogues.cyberpresse.ca/velo/2010/08/17/bixi-bixar-bixou-bixme/">good for everyone</a> for Bixi, for users, for Pheromone. </p>
<p>But most important of all, TfL went a bit further than just releasing the data. They explicitly <a href="http://www.tfl.gov.uk/businessandpartners/syndication/10813.aspx">authorized commercial use</a> of their own data. </p>
<blockquote><p>Q: Is it possible to use the feeds on a commercial basis?</p>
<p>A: Yes, you are welcome to charge the public for applications you produce using TfL syndicated data.</p>
</blockquote>
<p>I would recommend to go a bit further, by attaching a CreativeCommons License to these data: <a href="http://creativecommons.org/licenses/by/3.0/">CC-BY</a>. That would create a legal framework at no cost for both TfL and developers.</p>
<p><strong id="update">Update</strong>: <a href="http://iandavis.com/">Ian Davis</a> <a href="http://twitter.com/iand/status/21423897453">recommends</a> to use <a href="http://www.opendatacommons.org/">Open Data Commons Licenses</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/08/17/open-your-data-and-make-business/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gérer le conflit entre spécifications</title>
		<link>http://lab.pheromone.ca/2010/08/12/gerer-conflit-w3c-specs/</link>
		<comments>http://lab.pheromone.ca/2010/08/12/gerer-conflit-w3c-specs/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 14:05:39 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[wai]]></category>
		<category><![CDATA[wcag]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=612</guid>
		<description><![CDATA[Ce matin, sur twitter, Aurélien Levy me pose une question intéressante : @karlpro question W3C : qui est chargé de refuser une passage en CR qd un standard va à l&#8217;encontre d&#8217;un autre ex : #html5 #wcag2 #longdesc La réponse n&#8217;est pas tout à fait qui, mais comment. Petit rappel : La phase Candidate Recommendation est le [...]]]></description>
			<content:encoded><![CDATA[<p>Ce matin, sur twitter,  <a href="http://www.fairytells.net/">Aurélien Levy</a> me pose une <a href="http://twitter.com/goetsu/status/20971780168">question intéressante</a> :</p>
<blockquote><p>@karlpro question W3C : qui est chargé de refuser une passage en CR qd un standard va à l&#8217;encontre d&#8217;un autre ex : #html5 #wcag2 #longdesc</p>
</blockquote>
<p>La réponse n&#8217;est pas tout à fait qui, mais comment. Petit rappel : La <a href="http://www.w3.org/Consortium/Process/tr.html#cfi">phase Candidate Recommendation</a> est le moment où un groupe de travail annonce au monde que la spécification est suffisamment mature pour tester sur les implémentations. Il est possible de sortir de cette phase en démontrant que le groupe a réussi à obtenir deux implémentations interopérables de chaque « feature. » Nous nous entendons que « feature » est un terme vague. D&#8217;autre part même en ayant une double implémentation interopérable des features individuels sur trois produits, cela ne veut pas nécessairement dire que les <a href="http://esw.w3.org/ImplementationReport">implémentations sont interopérables</a>.</p>
<p>Chaque groupe de travail possède une charte définissant les règles de fonctionnement du groupe. La <a href="http://www.w3.org/2007/03/HTML-WG-charter.html">charte du groupe HTML</a> définit les <a href="http://www.w3.org/2007/03/HTML-WG-charter.html#coordination">dépendances</a> entre HTML et les autres groupes. On peut remarquer que <a href="http://www.w3.org/WAI/GL/">Web Content Accessibility Guidelines Working Group (WCAG WG)</a> fait partie des liaisons.</p>
<p>Lorsqu&#8217;il y a conflit entre deux spécifications, les groupes sont chargés de résoudre ce conflit. Cela peut se faire amicalement par discussions et échange d&#8217;arguments structurés. Le débat peut être généralement amélioré par la voie des implémentations concrètes dans des produits répandus. Généralement, le critère de l&#8217;implémentation est relativement fort face au raisonnement théorique, même si la solution est inférieure, une forme de « reality check. » </p>
<p>Les recours extrêmes sont les <a href="http://www.w3.org/2005/10/Process-20051014/policies.html#WGArchiveMinorityViews">objections formelles</a>. Celles ci devraient être utilisées uniquement en dernier recours lorsque toutes les autres avenues de discussion ont été épuisées. La décision sur une objection formelle est en dernier lieu tranchée par le directeur.</p>
<p>Dans le cas de WCAG et HTML5, l&#8217;enjeu est difficile à résoudre. Il y a de nombreuses dimensions. Éliminons tout de suite de la discussion, la pertinence de longdesc, c&#8217;est à dire donner plus d&#8217;information à propos d&#8217;un élément sous la forme d&#8217;un document  individuel. Ce qu&#8217;il faudrait regarder est l&#8217;état de l&#8217;implémentation dans les différentes classes de produits pour ce feature déployé depuis très longtemps :</p>
<ul>
<li>Dans les éditeurs HTML, quels sont les scénarios d&#8217;édition de longdesc ?</li>
<li>Dans les CMS, quels sont les scénarios d&#8217;édition de longdesc ?</li>
<li>Existe-t-il des moteurs de recherche permettant l&#8217;indexation de longdesc d&#8217;une façon qui respecte sa définition initiale ?</li>
<li>Existe-t-il des outils d&#8217;assistance en lecture prenant partie de longdesc ?</li>
</ul>
<p>Une recherche sérieuse sur le sujet permettrait en partie de faire pencher dans un sens ou l&#8217;autre la résolution du conflit.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/08/12/gerer-conflit-w3c-specs/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Montreal Transportation Open Data</title>
		<link>http://lab.pheromone.ca/2010/08/09/montreal-transportation-open-data/</link>
		<comments>http://lab.pheromone.ca/2010/08/09/montreal-transportation-open-data/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 18:19:55 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Recherche]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=606</guid>
		<description><![CDATA[Yann has written a blog post on why it is good for transportation companies to share their data (French). Go read it. He has forgotten brand and commercial reasons. When I was looking at the Canadian landscape for Open data, I was wondering about Montréal Open Data. Since Montréal Ouvert has opened with a clear [...]]]></description>
			<content:encoded><![CDATA[<p>Yann has written a blog post on why it is good for <a href="http://transid.blogspot.com/2010/08/8-bonnes-raisons-au-moins-douvrir-les.html" title="TransID : écomobilité, innovation, communauté.: 8 bonnes raisons (au moins) d'ouvrir les données transport selon Street Films">transportation companies to share their data</a> (French). Go read it. He has forgotten brand and commercial reasons.</p>
<p>When I was looking at the <a href="http://lab.pheromone.ca/2010/07/27/open-data-in-canada-montreal/" title="Open Data in Canada. Montréal ? &laquo;  Pheromone Lab">Canadian landscape for Open data</a>, I was wondering about Montréal Open Data. Since <a href="http://montrealouvert.net/" title="Montreal Ouvert &#8212;  Montreal Ouvert">Montréal Ouvert</a> has opened with a clear mission.</p>
<blockquote>
<p>We are a citizen initiative that promotes open access to civic information for the region of Montreal.</p>
<p>We believe open access to civic information and data increases civic engagement, makes services more accessible, and creates opportunities for innovation.</p>
<p>Through this space we hope to initiate and sustain a productive dialogue on open access between stakeholders for the benefit of all Montréalers. Join the conversation!</p>
</blockquote>
<p><strong>Disclaimer</strong>: Most of the information here is based on reverse engineering the html source code of these sites, and then should not be considered stable. Add on top of that, that it is not documented.</p>
<h2 id="stm">STM</h2>
<p>The <a href="http://stm.info/" title="Soci&eacute;t&eacute; de transport de Montr&eacute;al">STM</a> (Montréal Bus Company) went a long way for making their data available in Google Maps. That is quite cool. It gives the users the possibility to find their route in Google Maps. It would be even better if they published their data under a structured format (xml, json, or rdf). </p>
<p>So far, there are HTML pages for bus stops list for a line (ex: 69)</p>
<pre><code>http://www.stm.info/bus/geomet/geo69.htm
</code></pre>
<p>Each bus stop has a unique id such as 50150. which gives the schedule for the line at this bus stop. Unfortunately in a pre-formated format, which makes it pretty useless even for html scraping. </p>
<pre><code>http://www2.stm.info/taz/horaire.php?l=69&amp;d=E&amp;t=50150
</code></pre>
<p>The use of parameters show that it is very likely that it is just a question of creating the right template, which would be easy to fix.</p>
<h2 id="amt">AMT</h2>
<p><a href="http://www.amt.qc.ca/" title="Agence métropolitaine de transport">AMT</a> (local commuting trains) gives the list of schedules in a large html table. The values of the form for options are not straightforward and using obscure ids. I&#8217;m also still wondering why the form is using an HTTP POST instead of a GET but this blog post is not about HTTP. ;) We get a URI of this type for the default schedule.</p>
<pre><code>http://www.amt.qc.ca/train/blainville-st-jerome/horaires.aspx
</code></pre>
<p>These data will be more difficult to parse from the HTML, still possible.</p>
<h2 id="bixi">Bixi</h2>
<p><a href="http://montreal.bixi.com/" title="BIXI - Accueil">Bixi</a> is publishing a <a href="http://montreal.bixi.com/stations" title="BIXI - Stations">map</a> of their dock stations. Let&#8217;s open <a href="http://getfirebug.com/" title="Firebug">Firebug</a> and see what is happening on the wire. We can discover the following URI.</p>
<pre><code>https://profil.bixi.ca/data/bikeStations.xml
</code></pre>
<p>The stations are described following this pattern </p>
<pre><code>&lt;stations&gt;
    &lt;station&gt;
        &lt;id&gt;1&lt;/id&gt;
        &lt;name&gt;Notre Dame / Place Jacques Cartier&lt;/name&gt;
        &lt;terminalName&gt;6001&lt;/terminalName&gt;
        &lt;lat&gt;45.508183&lt;/lat&gt;
        &lt;long&gt;-73.554094&lt;/long&gt;
        &lt;installed&gt;true&lt;/installed&gt;
        &lt;locked&gt;false&lt;/locked&gt;
        &lt;installDate&gt;1276012920000&lt;/installDate&gt;
        &lt;removalDate/&gt;
        &lt;temporary&gt;false&lt;/temporary&gt;
        &lt;nbBikes&gt;1&lt;/nbBikes&gt;
        &lt;nbEmptyDocks&gt;30&lt;/nbEmptyDocks&gt;
    &lt;/station&gt;
…
&lt;/stations&gt;
</code></pre>
<h2 id="via_rail">Via Rail</h2>
<p><a href="http://viarail.ca">Via Rail</a>, the canadian railway company, </p>
<h3 id="station_code_list">Station Code List</h3>
<p>Looking at the javascript, it is quite easy to find out the list of train stations with a JSON format. There is no global list, but if you query for example with &#8216;M&#8217;:</p>
<pre><code>http://reservia.viarail.ca/GetStations.aspx?q=M
</code></pre>
<p><strong>Note</strong>: Be careful, the return mime-type is incorrect <code>Content-Type   text/html; charset=iso-8859-1</code></p>
<p>you get something like this</p>
<pre><code>[{"sc":"MLCH","sn":"MALACHI","pv":"ON","dEn":"MALACHI"},
 {"sc":"MLHT","sn":"MALAHAT","pv":"BC","dEn":"MALAHAT"},
 {"sc":"MWWC","sn":"MANIWAWA CLUB","pv":"QC","dEn":"MANIWAWA CLUB"},
 …
 {"sc":"MTRL","sn":"MONTRÉAL","pv":"QC","dEn":"MONTRÉAL"  },
 …
 ]
</code></pre>
<p>We can guess that </p>
<ul>
<li>sc = station code</li>
<li>sn = station name</li>
<li>pv = province</li>
<li>dEn = I suspect the English spelling of a city, but I&#8217;m not sure. </li>
</ul>
<h3 id="information_about_the_stations">Information about the stations</h3>
<p>When searching for a train schedule, we get a list of possible departures.  The train station name is a link to a URI which looks like this for Montréal</p>
<pre><code>http://www.viarail.ca/cgi-bin/genericXSLT?xml=MTRL.xml&amp;xsl=en_station.xsl
</code></pre>
<p>We can notice the same code for <code>MTRL.xml</code>. and <code>en_station.xsl</code>, the data in XML and an XSLT stylesheet for modifying the xml data. Unfortunately it is not possible to access the XML data. It would be still possible to create an html scraper for getting out the data without too much hurdles. But it would be definitely nicer to get the data under a structured format.</p>
<h3 id="schedules">Schedules</h3>
<p>The schedules are accessible for each train line in an html table and would also benefit to be available through a more documented format.</p>
<pre><code>http://www.viarail.ca/fr/trains/quebec-et-ontario/montreal-toronto/horaires
</code></pre>
<h2 id="conclusion">Conclusion</h2>
<p>Except for Bixi data, not many Montreal transportation data are available under a form easy to use. We would have to rely on html scrapers for extracting all these data. </p>
<p><strong>What would be the benefits</strong> for all these organizations to expose their data with a clear documentation and license?</p>
<ul>
<li>Create a richer online data ecosystem</li>
<li>Make it possible for the brand to live outside of its own domain name property (Creative Commons gives the license <strong>BY</strong>, i.e. Attribution)</li>
<li>Give the opportunity of richer visualization of these data. </li>
<li>Give the opportunity for people to develop commercial (or not) applications helping/driving users to order tickets or use more the service.</li>
</ul>
<p>Often budgets in these organizations are limited. Giving the possibility for geeks and other businesses to build on top of these data <strong>increases the chances of revenues</strong> for these organizations. It maximizes the online surface of these services.</p>
<p>No doubt that <a href="http://montrealouvert.net/" title="Montreal Ouvert &#8212;  Montreal Ouvert">Montreal Ouvert</a> will achieve this endeavor.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/08/09/montreal-transportation-open-data/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Comments Are Blog Posts</title>
		<link>http://lab.pheromone.ca/2010/08/09/comments-are-blog-posts/</link>
		<comments>http://lab.pheromone.ca/2010/08/09/comments-are-blog-posts/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 14:18:13 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Recherche]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[conversation]]></category>
		<category><![CDATA[decentralization]]></category>
		<category><![CDATA[discussion]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[participation]]></category>
		<category><![CDATA[salmon protocol]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=602</guid>
		<description><![CDATA[The Pheromone Lab is a space for experimentation in the company. But it is also a space for exploration into itself. I was discussing with Olivier on how we could improve the engagement of people participating to this space. So far, from Pheromone André Bélanger, Arnaud Blaszkowsky, Daniel Desrosiers, Karl Dubost, Jean-François Dumas, Rémy Giard, [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://lab.pheromone.ca/">Pheromone Lab</a> is a space for experimentation in the company. But it is also a space for exploration into itself. I was discussing with <a href="http://lab.pheromone.ca/author/ot/">Olivier</a> on how we could improve the engagement of people participating to this space. </p>
<p>So far, from Pheromone <a href="http://lab.pheromone.ca/author/belanger/">André Bélanger</a>, <a href="http://lab.pheromone.ca/author/arnaud/">Arnaud Blaszkowsky</a>, <a href="http://lab.pheromone.ca/author/desrosiers/">Daniel Desrosiers</a>, <a href="http://lab.pheromone.ca/author/karl/">Karl Dubost</a>, <a href="http://lab.pheromone.ca/author/jfdumas/">Jean-François Dumas</a>, <a href="http://lab.pheromone.ca/author/remy/">Rémy Giard</a>, <a href="http://lab.pheromone.ca/author/benoit/">Benoit Goyette</a>, <a href="http://lab.pheromone.ca/author/cguy/">Chrystian Guy</a>, <a href="http://lab.pheromone.ca/author/celine.travail.bien/">Céline Seeman</a>, <a href="http://lab.pheromone.ca/author/Sab/">Sabine Séguin</a>, <a href="http://lab.pheromone.ca/author/ot/">Olivier Théreaux</a> have published an article on the lab. But this conversation would not exist without the comments, people interacting with the content and having their own ideas about what is said here. </p>
<p>I have always encouraged a system where there is no distinction between comments and blog posts. In April 2006, I was <a href="http://www.la-grange.net/2006/04/14">proposing a system</a> (French) that would get rid of comments altogether. Basically, everyone should have a space for publishing content and this is an aggregating system (ala Usenet) which would recreate the thread of the discussions across blogs. Google tried a bit with <a href="http://www.google.com/buzz">Google Buzz</a> and <a href="http://wave.google.com/">Google Wave</a> (Google <a href="http://googleblog.blogspot.com/2010/08/update-on-google-wave.html" title="Official Google Blog: Update on Google Wave">killed Wave</a> last week.). These systems even if they claim to be decentralized tried to recreate a new system more than building on top of existing systems. To gain traction, we have to put the decentralization of the discussions into WordPress, MovableType, Adium, MSN, Yahoo! Messenger, Flickr of this world to develop specific modules that will help leverage the existing infrastructure. </p>
<p>Initiatives behing <a href="http://www.salmon-protocol.org/" title="Salmon Protocol">Salmon protocol</a> are very encouraging. <a href="http://status.net/" title="StatusNet | Open Source microblogging service">StatusNet</a> has implemented it. We need to see it implemented in more places. </p>
<p><strong>Distributed implementations are key to the decentralization</strong>.</p>
<p>In the mean time, small steps strategy, we decided to put the comments on the home page at the same level than blog posts. Every comment is part of the discussion. If people take times to write something compelling on this blog, then should be given the same space than people working here. </p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/08/09/comments-are-blog-posts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>bixar: find your bike in Montreal</title>
		<link>http://lab.pheromone.ca/2010/08/05/bixar-montreal/</link>
		<comments>http://lab.pheromone.ca/2010/08/05/bixar-montreal/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 14:35:53 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[UX – Experience Utilisateur]]></category>
		<category><![CDATA[ar]]></category>
		<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[bike]]></category>
		<category><![CDATA[bixar]]></category>
		<category><![CDATA[montréal]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=457</guid>
		<description><![CDATA[bixar is a mobile augmented reality (3d) layer helping people finding bike stations with free docks (can you park?) available bikes in each station (can you get a bike?) for Montréal, Canada. We like to experiment stuff and play with tools available around us. Most of the time, someone (a developer, someone in bizdev, etc) [...]]]></description>
			<content:encoded><![CDATA[<p>bixar is a mobile <a href="http://en.wikipedia.org/wiki/Augmented_reality">augmented reality</a> (3d) layer helping people finding </p>
<ol>
<li>bike stations with free docks (can you park?)</li>
<li>available bikes in each station (can you get a bike?)</li>
</ol>
<p>for Montréal, Canada.</p>
<p>We like to experiment stuff and play with tools available around us. Most of the time, someone (a developer, someone in bizdev, etc) will get an idea or have a need, and ask <strong>Could we do that?</strong> Many of us at Pheromone are users of <a href="http://montreal.bixi.com/accueil">Bixi</a>, the Montreal shared bike system. Sometimes, it is frustrating to reach a station to find out that everything is taken. Where are the closest stations around and in which directions. Bixar does just that. It creates a 3D overview of the position of bike stations and gives information about their vacancy status.</p>
<p>Jon Masse has developed the application using <a href="http://www.layar.com/" title="Augmented Reality Browser: Layar">Layar</a> and finally has ported his work on <a href="http://www.wikitude.org/">wikitude</a> in 2 hours. <a href="http://www.pheromone.ca/about/team/florin-gabor?flash=non">Florin Gabor</a> has created the logo, without forgetting the feedback and help of <a href="http://www.pheromone.ca/about/team/olivier-thereaux?flash=non">Olivier Théreaux</a>, <a href="http://www.pheromone.ca/about/team/sophie-leroy?flash=non">Sophie Leroy</a> et <a href="http://www.pheromone.ca/about/team/philippe-le-roux?flash=non">Philippe Le Roux</a>. </p>
<h3 id="howto">How to use layar on your phone?</h3>
<p>For using layar on your phone you need to <a href="http://site.layar.com/download/download-layar-on-your-iphone/">download the layar application</a>, then you will be able to access a list of augmented reality layers.</p>
<h3 id="howto2">How to use Wikitude on your phone?</h3>
<p>For using wikitude on your phone you need to <a href="http://www.wikitude.org/dedownloadendownload">download the wikitude application</a>, then you will be able to access a list of augmented reality layers.</p>
<h3 id="multi">Universal platforms</h3>
<p>There are benefits to develop for open technologies and not be tied to proprietary technologies. The same way, we love opensource tools and <a href="http://w3.org/">open web standards</a>, we are really looking forward to have an augmented reality format and apps that we could develop once and deploy everywhere.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/08/05/bixar-montreal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>bixar: trouver son vélo à Montréal</title>
		<link>http://lab.pheromone.ca/2010/08/05/bixar-montreal-fr/</link>
		<comments>http://lab.pheromone.ca/2010/08/05/bixar-montreal-fr/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 14:35:40 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[UX – Experience Utilisateur]]></category>
		<category><![CDATA[Augmented Reality]]></category>
		<category><![CDATA[bike]]></category>
		<category><![CDATA[bixi]]></category>
		<category><![CDATA[layar]]></category>
		<category><![CDATA[montréal]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[vélo]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=463</guid>
		<description><![CDATA[bixar est un calque (3d) de réalité augmentée afin d&#8217;aider les montréalais à trouver les stations de vélos avec des places libres (puis-je me garer ?) les vélos disponibles à chaque station (puis-je obtenir un vélo ?) pour Montréal, Canada. Nous aimons expérimenter et jouer avec les outils autour de nous. La plupart du temps, [...]]]></description>
			<content:encoded><![CDATA[<p>bixar est un calque (3d) de <a href="http://fr.wikipedia.org/wiki/R%C3%A9alit%C3%A9_augment%C3%A9e">réalité augmentée</a> afin d&#8217;aider les montréalais à trouver </p>
<ol>
<li>les stations de vélos avec des places libres (puis-je me garer ?)</li>
<li>les vélos disponibles à chaque station (puis-je obtenir un vélo ?)</li>
</ol>
<p>pour Montréal, Canada.</p>
<p>Nous aimons expérimenter et jouer avec les outils autour de nous. La plupart du temps, quelqu&#8217;un (un développeur, une personne aux développements des affaires, etc.) aura une idée ou un besoin, et demandera <strong>Pourrions nous le faire ?</strong> Nombre d&#8217;entre-nous à Pheromone sont des utilisateurs de <a href="http://montreal.bixi.com/accueil">Bixi</a>, le système de partage de vélo de Montréal. Parfois, il est frustrant d&#8217;atteindre une station et de réaliser que toutes les places sont déjà prises. Où sont les stations les plus proches et dans quelles directions. Bixar répond justement à ce besoin. Il donne une vue 3D de la position des stations de vélos et donne de l&#8217;information sur le statut des places disponibles.</p>
<p>Jon Masse a développé l&#8217;application en utilisant <a href="http://www.layar.com/" title="Augmented Reality Browser: Layar">Layar</a> et puis finalement a porté son travail sur <a href="http://www.wikitude.org/">wikitude</a> en 2 heures. <a href="http://www.pheromone.ca/about/team/florin-gabor?flash=non">Florin Gabor</a> a créé le logo sans oublier les commentaires et revues de <a href="http://www.pheromone.ca/about/team/olivier-thereaux?flash=non">Olivier Théreaux</a>, <a href="http://www.pheromone.ca/about/team/sophie-leroy?flash=non">Sophie Leroy</a> et <a href="http://www.pheromone.ca/about/team/philippe-le-roux?flash=non">Philippe Le Roux</a>. </p>
<h3 id="howto">Comment utiliser Layar sur son téléphone?</h3>
<p>Pour utiliser layar sur votre téléphone, vous devez <a href="http://site.layar.com/download/download-layar-on-your-iphone/">télécharger l&#8217;application layar</a>. Ensuite vous aurez la possibilité d&#8217;accéder une liste de calques de réalité augmentée.</p>
<h3 id="howto2">Comment utiliser Wikitude sur son téléphone?</h3>
<p>Pour utiliser wikitude sur votre téléphone, vous devez <a href="http://www.wikitude.org/dedownloadendownload">télécharger l&#8217;application wikitude</a>. Ensuite vous aurez la possibilité d&#8217;accéder une liste de calques de réalité augmentée.</p>
<h3 id="multi">plate-formes universelles</h3>
<p>Il y a des bénéfices à développer pour les technologies ouvertes et de ne pas être piégées par les technologies propriétaires. De la même façon que nous aimons les outils opensource et les <a href="http://w3.org/">normes Web ouvertes</a>, nous attendons avec impatience un format et des apps pour la réalité augmentée où nous pourrions développer une fois et déployer partout.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/08/05/bixar-montreal-fr/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Open Data in Canada. Montréal ?</title>
		<link>http://lab.pheromone.ca/2010/07/27/open-data-in-canada-montreal/</link>
		<comments>http://lab.pheromone.ca/2010/07/27/open-data-in-canada-montreal/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 16:14:59 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[UX – Experience Utilisateur]]></category>
		<category><![CDATA[canada]]></category>
		<category><![CDATA[license]]></category>
		<category><![CDATA[montréal]]></category>
		<category><![CDATA[opendata]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=576</guid>
		<description><![CDATA[There is an international trend requesting access to open data. That is good. Open data helps organizations, companies and governments to create an environment of trust. There is a guide for open government data which is written by W3C. Open Data and Licenses To really promote open data, it is necessary to use the appropriate [...]]]></description>
			<content:encoded><![CDATA[<p>There is an international trend requesting access to open data. <strong>That is good</strong>. Open data helps organizations, companies and governments to create an environment of trust. There is a <a href="http://www.w3.org/TR/gov-data/" title="Publishing Open Government Data">guide for open government  data</a> which is written by W3C.</p>
<h2 id="open_data_and_licenses">Open Data and Licenses</h2>
<p>To really promote open data, it is necessary to use the appropriate licence. Glen Newton looked at the licenses of different data sets published by canadian cities. The terms of the licenses are too restrictive. It is important to ensure that people will be able to use the data freely. There are many ways of achieving that. One of them is using <a href="http://creativecommons.org/" title="Creative Commons">creative commons licenses</a>. It enables people to reuse the data in many circumstances keeping the attribution credits.</p>
<h2 id="open_data_in_canada">Open Data in Canada</h2>
<p>What about Canada? Not that bad. Many initiatives push in the right direction. Governments (federal and local), cities as well as civic organizations are publishing data. Often the licenses are not the right ones, but that can be fixed.</p>
<ul>
<li><a href="http://infosource.gc.ca/index-fra.asp">Info Source Canada Gov</a></li>
<li><a href="http://data.edmonton.ca/">Open Data Edmonton</a></li>
<li><a href="http://www.nanaimo.ca/datafeeds/">Open Data Nanaimo</a></li>
<li><a href="http://www.ottawa.ca/online_services/opendata/index_en.html">Open Data Ottawa</a> See also <a href="http://www.opendataottawa.ca/">Ottawa Data</a> &#8211; <a href="http://blog.opendataottawa.ca/">open data ottawa blog</a> &#8211; <a href="http://opendataapps.org/">opendata apps directory</a></li>
<li><a href="http://www.toronto.ca/open">Open Data Toronto</a></li>
<li><a href="http://data.vancouver.ca/">Open Data Vancouver</a></li>
<li><a href="http://opendatalinks.ca/">Open Data Links Canada</a></li>
<li><a href="http://www.openottawa.org/">Open Ottawa</a> (Civic Organization)</li>
<li><a href="http://www.datadotgc.ca/">Canadian Gov data by citizens</a></li>
<li><a href="http://civicaccess.ca/" title="CivicAccess.ca / Acc&egrave;sCivique.ca">CivicAccess</a></li>
</ul>
<h2 id="montral_">Montréal ?</h2>
<p>And Montréal. There are whispers of interests. But I do not know of any concrete initiatives yet. Have you heard something? How do we encourage Montreal city to share the data?</p>
<p>Montréal has <a href="http://patrimoine.ville.montreal.qc.ca/inventaire/index.html">data</a>, a <a href="http://www11.ville.montreal.qc.ca/sherlock2/index.html">lot</a> of <a href="http://ville.montreal.qc.ca/pls/portal/url/PAGE/MTL_STATISTIQUES_FR/ACCUEIL">data</a>. The access could be improved (RESTful API, data format) and licenses clarified.</p>
<p><strong>Update 2010-08-09</strong> : See the <a href="http://lab.pheromone.ca/2010/07/27/open-data-in-canada-montreal/comment-page-1/#comment-1237">comment</a>. Montreal Ouvert (Open Montreal) has opened a Web site. That is an excellent news.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/07/27/open-data-in-canada-montreal/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>CSSVerificator</title>
		<link>http://lab.pheromone.ca/2010/07/22/cssverificator/</link>
		<comments>http://lab.pheromone.ca/2010/07/22/cssverificator/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 19:48:31 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[MIT]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[validator]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=571</guid>
		<description><![CDATA[CssVerificator is a Rails application which checks 5 CSS items for performances. This prototype has been created by Benoit Goyette. The Story Nicole Sullivan (@stubbornella) recently outlined the Top 5 Mistakes of Massive CSS. After a survey, Nicolle Sullivan found out that 42% Don’t GZIP CSS 44% Have more than 2 CSS external files 56% [...]]]></description>
			<content:encoded><![CDATA[<p>CssVerificator is a Rails application which checks 5 CSS items for performances. This <strong>prototype</strong> has been created by <a href="http://twitter.com/benoitgoyette">Benoit Goyette</a>.</p>
<h2 id="the_story">The Story</h2>
<p><a href="http://www.stubbornella.org/">Nicole Sullivan</a> (<a href="http://twitter.com/stubbornella">@stubbornella</a>) recently outlined the <a href="http://www.stubbornella.org/content/2010/07/01/top-5-mistakes-of-massive-css/">Top 5 Mistakes of Massive CSS</a>. After a survey, Nicolle Sullivan found out that</p>
<ul>
<li>42% Don’t GZIP CSS</li>
<li>44% Have more than 2 CSS external files</li>
<li>56% Serve CSS with cookies (yummy to eat, bad for static content)</li>
<li>62% Don’t minify (check out the YUI Compressor!)</li>
<li>21% Have greater than 100K of CSS</li>
</ul>
<p>We then decided to create a service that would help Web developers fix these 5 items only. We believe in small steps.</p>
<h2 id="cssverificator">Service and Source Code</h2>
<p>The <a href="http://github.com/benoitgoyette/CssVerificator">code</a> is under MIT License. You are welcome to use, fork, improve, twist it. The <a href="http://css-verificator.heroku.com/">service</a> is online (bugs included). Any contributions to create a CSS and a design for it would be more than welcome. Do not shoot the messenger and make it better.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/07/22/cssverificator/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>«I FELL IN LOVE» – les tribulations d&#8217;un flasheur au pays du Javascript</title>
		<link>http://lab.pheromone.ca/2010/07/22/i-fell-in-love-with-les-tribulations-dun-flasheur-au-pays-du-javascript/</link>
		<comments>http://lab.pheromone.ca/2010/07/22/i-fell-in-love-with-les-tribulations-dun-flasheur-au-pays-du-javascript/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 15:34:27 +0000</pubDate>
		<dc:creator>arnaud</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=519</guid>
		<description><![CDATA[Le module que vous pouvez découvrir à cette adresse : http://fellinlove.rd.pheromone.ca est une visualisation de données Twitter résultante de la requête : I fell in love with. Banal sur le principe, cet exercice trouve sa singularité si je vous avoue qu&#8217;il est pour moi une première en matière de développement Javascript. Fort d&#8217;une bonne demie [...]]]></description>
			<content:encoded><![CDATA[<p>Le module que vous pouvez découvrir à cette adresse : <a href="http://fellinlove.rd.pheromone.ca">http://fellinlove.rd.pheromone.ca</a> est une visualisation de données Twitter résultante de la requête : I fell in love with.</p>
<p>Banal sur le principe, cet exercice trouve sa singularité si je vous avoue qu&#8217;il est pour moi une première en matière de développement Javascript.</p>
<p>Fort d&#8217;une bonne demie douzaine d&#8217;années d&#8217;expertise dans le développement flash et l&#8217;utilisation de l&#8217;ActionScript, me voilà parachuté dans l&#8217;univers prototypale du JavaScript. Univers occulté par la puissance et fléxibilité de l&#8217;AS3, j&#8217;ai commencé par me procurer l&#8217;ouvrage, <a href="http://oreilly.com/catalog/9780596517748">JavasScript : The Good Parts</a> des éditions O&#8217;REILLY, puis décortiquer les scripts de la référence en matière de dhtml : <a href="http://www.dhteumeuleu.com/">www.dhteumeuleu.com</a>. Remise à niveau au combien salutaire.</p>
<p>Ma crainte majeure, dans l&#8217;optique de l&#8217;animation, fut de disposer de l&#8217;indépendance que l&#8217;on trouve avec les MovieClip et l&#8217;ActionScript pour les balises html. Crainte très vite estompée par l&#8217;application appropriée de css.</p>
<p>La logique est identique à celle d&#8217;un développement flash (requête Twitter, manipulation des données, routine propre à l&#8217;application, ect &#8230;), les animations utilisent <a href="http://jstween.blogspot.com/2007/01/javascript-motion-tween.html">Javascript Motion Tween</a> de <a href="http://jstween.blogspot.com/2007/01/javascript-motion-tween.html">Philippe Maegerman</a> ainsi que la librairie <a href="http://jquery.com/">JQuery</a>, les css font le reste.</p>
<p>Il est donc facile de conclure ce billet par une note favorable, dire que le développement Javascript est accessible aux  flasheurs semble un euphémisme.<a href="http://lab.pheromone.ca/wp-content/uploads/2010/07/fell.jpg"><br />
</a><a href="http://fellinlove.rd.pheromone.ca"><img class="alignleft size-full wp-image-560" title="fell" src="http://lab.pheromone.ca/wp-content/uploads/2010/07/fell1.jpg" alt="" width="600" height="400" /></a></p>
<p>Je prépare un prochain billet sur quelques travaux avec la librairie <a href="http://raphaeljs.com/">Raphael.js</a><br />
Au plaisir de vous lire .</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/07/22/i-fell-in-love-with-les-tribulations-dun-flasheur-au-pays-du-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How the Yahoo portal personalises User Experience</title>
		<link>http://lab.pheromone.ca/2010/07/19/yahoo-personalised-ux/</link>
		<comments>http://lab.pheromone.ca/2010/07/19/yahoo-personalised-ux/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 19:06:28 +0000</pubDate>
		<dc:creator>Olivier Théreaux</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[UX – Experience Utilisateur]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=497</guid>
		<description><![CDATA[In the course of a week-long benchmark study of portals around the world we ran recently for one of our clients, I stumbled upon the home page for the Yahoo! portal in spain. Notice anything unusual? What fascinates me is how the top third of the page mentioned locations in no less than three countries. [...]]]></description>
			<content:encoded><![CDATA[<p>In the course of a week-long benchmark study of portals around the world we ran recently for one of our clients, I stumbled upon the home page for the <a href="http://es.yahoo.com">Yahoo! portal in spain</a>.</p>
<p><a href="http://lab.pheromone.ca/wp-content/uploads/2010/07/Yahoo_es_2010-07-19.png"><img src="http://lab.pheromone.ca/wp-content/uploads/2010/07/Yahoo_es_2010-07-19.png" alt="Yahoo España - Screenshot" title="Yahoo España - Screenshot" width="600" class="aligncenter" /></a></p>
<p>Notice anything unusual? What fascinates me is how the top third of the page mentioned locations in no less than three countries. How? Why?</p>
<p><img src="http://lab.pheromone.ca/wp-content/uploads/2010/07/Yahoo_es_canada.png" alt="" title="Yahoo españa - Canada link" width="97" height="107" class="alignleft size-full wp-image-504" /> Near the top-left of the page, I can see an icon depicting a Canadian flag, along with a link to the Canada-specific Yahoo! portal. What this means is that the Yahoo! system knows that I am browsing from Canada (I have been, therefore, geolocated). If you view the site from another country, chances are you will be getting a different flag and a different link. And if you view it from Spain? I do not know. When I do follow the hyperlink to Yahoo! Canada, I get a similar link to Yahoo! Quebec, and when I go to Yahoo! Quebec, I get a link to Yahoo! Canada. </p>
<p>Interestingly enough, one of the most common elements of personalised user experience is missing here: language selection. There is no way I can read the news from Spain in English &#8211; or indeed, in Català or Gallego. Neither do I get a &laquo;&nbsp;Français&nbsp;&raquo; link on Yahoo! Canada, or &laquo;&nbsp;English&nbsp;&raquo; on Yahoo! Quebec. </p>
<p> Knowing where I am, the system could assume I necessarily want to view local content in my local language and therefore redirect me to the Canadian/English portal. Fortunately, it does not, and lets me browse news from Spain as much as I like, and limits the effect of geolocation to a subtle but clear hint that <em>local content is also available</em>.</p>
<p><em>How do they do it</em>? Most likely, the <a href="http://en.wikipedia.org/wiki/IP_address">IP address</a> of the machine I used to access the site was compared against a GeoIP database such as <a href="http://www.ip2location.com/">this one</a> or <a href="http://www.maxmind.com/app/geoip_country">that one</a>. Note that, unlike in many mobile applications, the IP-to-location translation is done automatically, without ever prompting the user for her agreement. </p>
<p>Next in our exploration of the personalisation elements is the page-wide bar of text links, calls for action and teaser questions serving a single purpose: convert the visitor into a user, either by registering, or by logging into an existing account.</p>
<p><a href="http://lab.pheromone.ca/wp-content/uploads/2010/07/Yahoo_es_login.png"><img src="http://lab.pheromone.ca/wp-content/uploads/2010/07/Yahoo_es_login.png" alt="" title="Login, register, tease" width="600" class="aligncenter size-full wp-image-510" /></a></p>
<p>Notice how the bar employs about about every trick know to web designers to entice us to log in: give regular users a quick link to their well-known personal space; showcase some of the added value gained through registration (preview of my inbox, directly in my news portal); comfort the potentially puzzled new visitor (New here?) and tease the social fiber (What are you doing? – obviously a go at copying the now-abandoned twitter tagline?).</p>
<p><img src="http://lab.pheromone.ca/wp-content/uploads/2010/07/Yahoo_es_weather.png" alt="" title="Yahoo weather" width="349" height="148" class="alignright size-full wp-image-511" /> The most surprising element comes last. How come, given that I am not logged into Yahoo!&#8217;s system, I am shown a weather widget for the city of Tokyo, Japan? I could have understood if it were Madrid (local to the portal, with an educated guess about which city I may be interested in) or Montréal (through geolocation) – but Why Tokyo? And how? </p>
<p><em>How do they do it</em>? I quickly validated my initial hunch: Yahoo achieved this through the use of cookies &#8211; although other client storage options such as the <a href="http://dev.w3.org/html5/webstorage/">localstorage in html5</a> would have been just as valid. My problem here, however, is that:</p>
<ul>
<li>The cookies are opaque &#8211; even with a cookie browser (most browsers with developer extension offers one) I would hardly be able to know which cookie was telling Yahoo! thay my preferred location was Tokyo. I had to delete cookies, one by one, until the weather widget changed to a geolocated default of Montreal.</li>
<li>I cannot tell how and when this cookie was set in my system. Sure, I could set my browser to have me validate any cookie sites want to store, but given how cookies are entirely opaque, how would I know the meaning and consequences of allowing Yahoo (of flickr, or any site in the Yahoo ecosystem) to store a cookie that sets key <code>T</code> to <code>…CAuNRMqKiCOsvekk…</code>.</li>
</ul>
<p><em>And there&#8217;s more…</em> All these modes of personalisation have been enabled without me even logging into the system. Imagine the many personalised features that can be implemented for recurrent, identified users: social filtering (content that my friends like, for instance), content adapted to my choices or patterns of use (recommendations for <em>you</em>), and much more. Has any content-heavy site ever tried to recommend their users items that they are unlikely to &laquo;&nbsp;like&nbsp;&raquo;, or at least that they are likely to be surprised or challenged by?</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/07/19/yahoo-personalised-ux/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Directeur du Développement chez Phéromone</title>
		<link>http://lab.pheromone.ca/2010/07/16/directeur-dev/</link>
		<comments>http://lab.pheromone.ca/2010/07/16/directeur-dev/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 16:10:39 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Organisation du travail]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=489</guid>
		<description><![CDATA[Hier, Pheromone a publié une annonce d&#8217;emploi pour le poste de directeur du développement. J&#8217;ai relancé l&#8217;annonce sur twitter : You love the Web? &#38; you want to take over my job. Be the Dev Director at @AgencePheromone http://bit.ly/dtl7Pd #job #montreal Juste après Jonathan Bélisle a réagi en posant une bonne question que l&#8217;annonce ne [...]]]></description>
			<content:encoded><![CDATA[<p>Hier, Pheromone a publié une <a href="http://www.pheromone.ca/propos/emploi/directeur-du-developpement-technologique?flash=non">annonce d&#8217;emploi</a> pour le <strong>poste de directeur du développement</strong>. J&#8217;ai relancé l&#8217;<a href="http://twitter.com/karlpro/status/18625310511">annonce</a> sur twitter :</p>
<blockquote cite="http://twitter.com/karlpro/status/18625310511"><p>You love the Web? &amp; you want to take over my job. Be the Dev Director at <a href="http://twitter.com/AgencePheromone">@AgencePheromone</a> <a href="http://bit.ly/dtl7Pd">http://bit.ly/dtl7Pd</a> <a href="http://search.twitter.com/search?q=%23job">#job</a> <a href="http://search.twitter.com/search?q=%23montreal">#montreal</a></p>
</blockquote>
<p>Juste après Jonathan Bélisle a réagi en posant une <a href="http://twitter.com/Wuxia/status/18625399397">bonne question</a> que l&#8217;annonce ne donne pas.</p>
<blockquote cite="http://twitter.com/Wuxia/status/18625399397"><p>What are the challenges / innovation opportunities ?</p>
</blockquote>
<p>Clarification : Je ne quitte pas Phéromone. Mon rôle évolue pour travailler en coopération avec <a href="http://www.pheromone.ca/propos/equipe/olivier-thereaux?flash=non">Olivier Théreaux</a> sur le pôle technologique des projets en amont de la réalisation.</p>
<p>J&#8217;ai commencé chez Pheromone en mars 2009 avec comme objectif de créer une dynamique d&#8217;équipe entre les développeurs. Comme toute agence riche en relations humaines, les interactions font évoluer la mission initiale. Gérer une équipe de 20/25 personnes est difficile à réaliser en même temps que de définir la vision technologique de l&#8217;entreprise. Je préfère me concentrer sur la seconde partie où j&#8217;ai plus de plaisir que la gestion. L&#8217;équipe de développement se structure en petits équipes, mais cela pourrait être appelé à évoluer en fonction de la personne recrutée. Les technologies qui sont utilisées chez Pheromone sont PHP, Ruby et C++. Le C++ fait partie de systèmes développés pour nos anciens projets. Nous ne faisons plus de nouveaux développements en C++, sauf pour améliorer les anciens programmes toujours utilisés dans le cadre des enjeux de performance.</p>
<p>Les performances sont un des enjeux majeurs pour deux de nos clients&nbsp;: <a href="http://viarail.ca/">ViaRail</a> et RDS (site <a href="http://rds.ca/">RDS</a> et <a href="http://legrandclub.rds.ca/" title="LE GRAND CLUB - Accueil">Grand Club</a>). Ces deux sites Web sont extrêmement populaires avec des pics de trafic immenses mettant à rude épreuve l&#8217;architecture technologique logicielle et Web. Parfois une décision UX peut avoir un impact énorme sur la performance du site. Comprendre les enjeux de développement pour être le relai des enjeux des développeurs est alors important. Une excellente connaissance de l&#8217;<a href="http://www.w3.org/TR/webarch/" title="Architecture of the World Wide Web, Volume One">architecture Web</a> permet d&#8217;orienter les développeurs à travers les enjeux de cache, de proxys, les défauts des implémentations.</p>
<p>L&#8217;<a href="http://www.w3.org/WAI/bcase/Overview" title="Developing a Web Accessibility Business Case for Your Organization: Overview">accessibilité Web</a> est une <a href="http://lab.pheromone.ca/2010/06/28/laccessibilite-agile-sur-openweb/" title="Le Lab / Pheromone &raquo; L&#8217;accessibilité agile sur OpenWeb">partie intégrante</a> de plus en plus de projets Web que nous réalisons. Elle est un requis pour certains clients. Elle est essentielle dans les stratégies d&#8217;accès multi-plateformes.</p>
<p><a href="http://www.pheromone.ca/propos/equipe/olivier-thereaux?flash=non">Olivier</a> en coopération avec le reste de l&#8217;équipe a initié un virage de l&#8217;agence vers le <a href="http://lab.pheromone.ca/2009/08/26/the-death-of-the-mobile-website/">mobile</a>. Cela ne veut pas dire que nous réalisons des applications seulement sur Mobile mais des applications qui sont utilisables sur Mobile en même temps que Desktop. Cela a des conséquences pour les types de technologies qu&#8217;un développeur doit posséder dans son bagage. HTML5 (toujours en cours de développement) et CSS deviennent des parties fondamentales de cette orientation.</p>
<p>L&#8217;open Source est une pierre angulaire des systèmes avec lesquels nous travaillons que ce soit Ruby On Rails pour le Grand Club, Elgg pour le Fil, PhoneGap pour les applications mobile, etc. Nous poussons aussi dans nos projet l&#8217;open data, mais j&#8217;en parlerai plus longuement prochainement.</p>
<p>Bien sûr s&#8217;il y a des questions plus précises, j&#8217;y répondrais.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/07/16/directeur-dev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Love Step By Step</title>
		<link>http://lab.pheromone.ca/2010/07/02/data-love/</link>
		<comments>http://lab.pheromone.ca/2010/07/02/data-love/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 13:30:01 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Recherche]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[graphe]]></category>
		<category><![CDATA[linked data]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[rds]]></category>
		<category><![CDATA[uri]]></category>
		<category><![CDATA[web semantique]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=479</guid>
		<description><![CDATA[We often forget about the very basic steps for creating a project. There are no small achievements, each step in a process is rewarding by itself and help to build trust in what you are doing. I was reading again the section on Linked Data from Tim Berners-Lee&#8216;s Design Issues. Linked Data is part of [...]]]></description>
			<content:encoded><![CDATA[<p>We often forget about the very basic steps for creating a project. There are no small achievements, each step in a process is rewarding by itself and help to build trust in what you are doing. I was reading again the section on <a href="http://www.w3.org/DesignIssues/LinkedData">Linked Data</a> from <a href="http://www.w3.org/People/Berners-Lee/">Tim Berners-Lee</a>&#8216;s <a href="http://www.w3.org/DesignIssues/">Design Issues</a>.</p>
<p>Linked Data is part of the process of publishing data in a way that it will be useful for anyone else. It is all about creating <a href="http://blogs.hbr.org/haque/2009/09/is_your_business_innovative_or.html" title="The Awesomeness Manifesto - Umair Haque - Harvard Business Review">awesome</a> stuff. Often, the task seems daunting for organizations or individuals, when it is just a question of baby steps. In the    <a href='http://www.w3.org/DesignIssues/LinkedData'>Linked Data</a> page, there are <a href="http://inkdroid.org/journal/2010/06/04/the-5-stars-of-open-linked-data/ ">5 steps for starting publishing</a> data in a way that would be useful for everyone else.</p>
<blockquote cite="http://inkdroid.org/journal/2010/06/04/the-5-stars-of-open-linked-data/ ">
<ul>
<li>★     make your stuff available on the web (whatever format)</li>
<li>★★    make it available as structured data (e.g. excel instead of image scan of a table)</li>
<li>★★★   non-proprietary format (e.g. csv instead of excel)</li>
<li>★★★★  use URLs to identify things, so that people can point at your stuff</li>
<li>★★★★★ link your data to other people’s data to provide context</li>
</ul>
</blockquote>
<p>One of the big benefits of digital assets is that the cost of putting online data and modifying them is lower than in the material world (an online phonebook can be updated in real time and then evolve). One of the big benefits of Linked Data is URIs for piece of data or concepts on this data. Extensibility comes for free because data are expressed with a <a href="http://legrandclub.rds.ca/api/profils/661780/friends.rdf">graph</a> (not like relational databases).</p>
<p>Small steps are cool and full of awesome. Sharing gives you plenty of love.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/07/02/data-love/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>L&#8217;accessibilité agile sur OpenWeb</title>
		<link>http://lab.pheromone.ca/2010/06/28/laccessibilite-agile-sur-openweb/</link>
		<comments>http://lab.pheromone.ca/2010/06/28/laccessibilite-agile-sur-openweb/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 19:08:12 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Affaires]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[accessibilité]]></category>
		<category><![CDATA[openweb]]></category>
		<category><![CDATA[Phéromone]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[wai]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=453</guid>
		<description><![CDATA[Elie Sloïm vient de publier un article sur OpenWeb à propos de L&#8217;accessibilité agile: L’audit approfondi est une étape fréquente dans la démarche d’amélioration de l’accessibilité d’un site. Une telle démarche débute fréquemment par la recherche d’un état des lieux. Hélas, la production d’un rapport d’audit approfondi de l’accessibilité prend du temps et coûte de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.temesis.com/a-propos/equipe-temesis/elie-sloim-directeur.html">Elie Sloïm</a> vient de publier un article sur <a href="http://openweb.eu.org/">OpenWeb</a> à propos de <a href='http://openweb.eu.org/articles/accessibilite_agile'>L&#8217;accessibilité agile</a>: </p>
<blockquote cite="http://openweb.eu.org/articles/accessibilite_agile"><p>L’audit approfondi est une étape fréquente dans la démarche d’amélioration de l’accessibilité d’un site. Une telle démarche débute fréquemment par la recherche d’un état des lieux. Hélas, la production d’un rapport d’audit approfondi de l’accessibilité prend du temps et coûte de l’argent. Dans certains cas, cette approche se justifie parfaitement, mais dans d’autres que nous aborderons dans cet article, ce n’est pas toujours la meilleure solution. Il est peut-être temps d’inventer de nouvelles méthodes pour améliorer l’accessibilité des sites Internet.</p>
</blockquote>
<p>L&#8217;accessibilité peut éventuellement se traiter en bout de chaîne du processus sur un site simple, mais malheureusement bien trop souvent c&#8217;est trop tard. Développer un site Web accessible peut demander des modifications du choix du CMS, définir des choix de design particulier et des expériences UX particulières. L&#8217;article de Elie s&#8217;inscrit dans le domaine plus large de la compréhension du Web. Il y a, au moins, deux enjeux principaux pour les agences Web à résoudre :</p>
<ul>
<li>L&#8217;éducation du client sur les enjeux du Web</li>
<li>L&#8217;éducation de l&#8217;équipe de conception/UX (création) du site.</li>
</ul>
<p>L&#8217;équipe de développement a rarement le contrôle sur cette partie du site, si ce n&#8217;est d&#8217;implémenter les choix des concepteurs du site. Si les concepts sont corrects du point de vue de l&#8217;architecture Web, de la stratégie de contenu, de l&#8217;accessibilité, de la diversité des plateformes, le développeur aura moins d&#8217;enjeux pour trouver les solutions adéquates. C&#8217;est trop rarement le cas.</p>
<p>Une de mes grandes réalisations cette année est que toute évangélisation à propos du Web est vaine si elle ne prend pas en considération les décideurs d&#8217;affaires ainsi que les départements créatifs.</p>
<h3>disclaimers</h3>
<p><strong>Note 1</strong> : je participe comme rédacteur à l&#8217;équipe de OpenWeb et j&#8217;ai publié un <a href="http://openweb.eu.org/articles/fructifions_donnees">article sur RDFa</a>.</p>
<p><strong>Note 2</strong> : Pheromone a commandé un rapport d&#8217;accessibilité pour un client à la société <a href="http://temesis.com/">Temesis</a> de Elie Sloïm.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/06/28/laccessibilite-agile-sur-openweb/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>RIP Marc-Aurèle</title>
		<link>http://lab.pheromone.ca/2010/06/07/rip-marc-aurele/</link>
		<comments>http://lab.pheromone.ca/2010/06/07/rip-marc-aurele/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 21:29:18 +0000</pubDate>
		<dc:creator>desrosiers</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=420</guid>
		<description><![CDATA[Un collègue très chère à l&#8217;équipe Phéromone est décédé le 28 mai dernier.  Son nom était Marc-Aurèle Laquerre, il a été victime d&#8217;une tumeur au cerveau à l&#8217;age de 25 ans. J’ai eu la chance de travailler avec Marc-Aurèle depuis octobre 2008 en tant que son chef d’équipe. Mon premier entretien avec Marc-Aurèle s’agissait d’une [...]]]></description>
			<content:encoded><![CDATA[<p>Un collègue très chère à l&#8217;équipe Phéromone est décédé le 28 mai dernier.  Son nom était Marc-Aurèle Laquerre, il a été victime d&#8217;une tumeur au cerveau à l&#8217;age de 25 ans.</p>
<p>J’ai eu la chance de travailler avec Marc-Aurèle depuis octobre 2008 en tant que son chef d’équipe.</p>
<p>Mon premier entretien avec Marc-Aurèle s’agissait d’une entrevue pour le poste en administration des systèmes chez Phéromone.</p>
<p>Dès la première rencontre, j’ai noté que Marc-Aurèle apporterait beaucoup à notre équipe.  Il était très talentueux et les connaissances qu’il avait cumulées étaient fort impressionnantes pour un jeune de 24 ans.<br />
Marc-Aurèle était apprécié par tous les employé(e)s.  Dans son travail, il devait souvent interagir avec les autres pour leur apporter du support technique, mais aussi du support moral dans certains cas.  Il aimait son travail et le faisait bien.</p>
<p style="text-align: center;"><a href="http://lab.pheromone.ca/wp-content/uploads/2010/06/MAV2743.jpg"><img class="size-medium wp-image-422   alignleft" title="Échange de cadeau,  noël 2008" src="http://lab.pheromone.ca/wp-content/uploads/2010/06/MAV2743-300x200.jpg" alt="" width="300" height="200" /></a><a href="http://lab.pheromone.ca/wp-content/uploads/2010/06/Noel_2009_MA3.jpg"></a></p>
<p style="text-align: center;"><a href="http://lab.pheromone.ca/wp-content/uploads/2010/06/Noel_2009_MA3.jpg"><img class="size-medium wp-image-424 aligncenter" title="Yves et Marc-Aurèle  - noël 2009" src="http://lab.pheromone.ca/wp-content/uploads/2010/06/Noel_2009_MA3-300x200.jpg" alt="" width="300" height="200" /></a></p>
<p style="text-align: center;"><a href="http://lab.pheromone.ca/wp-content/uploads/2010/06/MAV2792.jpg"><img class="size-medium wp-image-423 aligncenter" title="Noël 2008" src="http://lab.pheromone.ca/wp-content/uploads/2010/06/MAV2792-200x300.jpg" alt="" width="200" height="300" /></a></p>
<p>Lorsque la maladie s’est accaparée de lui, Marc-Aurèle a fait rayonner des qualités supplémentaires fortes impressionnantes;  Après une longue et dure convalescence, il est revenu travailler avec nous et  nous avons tous témoigné sa persévérance son courage et son désir de vivre.  Il est resté positif tout au long de sa bataille.</p>
<p>Voici quelques anecdotes que nous voulons partager avec vous en mémoire de Marc-Aurèle :</p>
<ul>
<li>Lors la fête de Noël du bureau, nous avons effectué un gala Phérostar afin de remettre des prix amusant à certains employé(e)s.  Marc-Aurèle a reçu le prix du « Pirate de l’année » et je crois que ce soir là, il a vraiment senti l’appui et le support chaleureux que tous ses collègues avaient pour lui.  On peut percevoir Marc-Aurèle recevant le trophé sur la photo suivante:<a href="http://lab.pheromone.ca/wp-content/uploads/2010/06/Noel_2009_MA2.jpg"><img class="size-medium wp-image-421 alignnone" title="Pirate de l'année 2009" src="http://lab.pheromone.ca/wp-content/uploads/2010/06/Noel_2009_MA2-300x207.jpg" alt="" width="300" height="207" /></a></li>
</ul>
<ul>
<li>Yves m’a raconté que lorsque Marc-Aurèle faisait de la physiothérapie, il travaillait surtout à renfoncer son bras droit qui était plus fort étant donné que son côté gauche l’était moins.  Cela lui a servi un jour lorsqu’il a manqué d’équilibre dans la cuisine : Il a pu prévenir sa chute en s’agrippant sur le comptoir avec son bras droite.  Ça été fort impressionnant et c’est remarquable comment Marc-Aurèle se connaissait bien.</li>
</ul>
<ul>
<li>Lors d’un entretien avec un collègue (Chrystian), Marc-Aurèle lui a confié comment il était heureux; il a fait une steppette avec sa canne et a dit avec un sourire: &laquo;&nbsp;Check mon cguy, t&#8217;es pas capable d&#8217;en faire une pareille!&nbsp;&raquo; et mon collègue lui a répondu en boutade: &laquo;&nbsp;Non Marc-Aurèle, il y a bien des affaires que je ne suis pas capable de faire comme toi&#8230;&nbsp;&raquo;</li>
</ul>
<ul>
<li>Nous avons confié plusieurs projets à Marc-Aurèle pour lesquels il n’avait qu’une seule main et qu’un œil pour les exécuter.  L’un d’entre eux nécessitait de saisir plus de 500 courriels dans un système de liste de distributions.  Nous ne nous attendions pas à ce qu’il fasse la saisie des données, mais à notre grande surprise, il l’a fait sans même nous demander de l’aide.  Malgré sa maladie, Marc-Aurèle était très lucide et je sais qu’il faisait des efforts pour se surpasser quand il était parmi nous.</li>
</ul>
<p>Merci à ses parents, son frère Alexandre, sa conjointe Sophie et tous les autres qui l&#8217;ont accompagnés dans ses moments difficiles.  Marc-Aurèle est et sera à tout jamais une source d’inspiration pour nous tous.  Nous sommes reconnaissants d’avoir partagé une partie de sa vie avec lui.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/06/07/rip-marc-aurele/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A comparison of performance, UX and dev-friendliness of various webfonts services</title>
		<link>http://lab.pheromone.ca/2010/06/02/comparison-webfont-services/</link>
		<comments>http://lab.pheromone.ca/2010/06/02/comparison-webfont-services/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 21:04:45 +0000</pubDate>
		<dc:creator>Olivier Théreaux</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[UX – Experience Utilisateur]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[webfonts]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=393</guid>
		<description><![CDATA[Recent technological progress has made the life of designers a little less miserable: with @font-face in CSS, Web Typography is no longer limited to a handful of choices. The web is not print, however, and the embedding of nice typography seems to come with a few other issues: the first few site prototypes on which [...]]]></description>
			<content:encoded><![CDATA[<p>Recent technological progress has made the life of designers a little less miserable: with @font-face in CSS, Web Typography is no longer limited to a handful of choices. </p>
<p>The web is not print, however, and the embedding of nice typography seems to come with a few other issues: the first few site prototypes on which we worked with @font-face tended to be plagued with performance problems – a really big deal in our case, given that we manage high-traffic sites. The User experience of the pages we had tested was sub-par: slow loading times, blocks of text “jumping” after the actual font gets loaded, etc. </p>
<p>And yet, webfont services are popping like mushrooms and seem rather popular. I decided to give four of them a look, to see how good – and how fast – their service was. </p>
<p>My <a href="http://ot.zoy.org/2010/06/fontface">test page</a>, based on <a href="http://www.fontsquirrel.com/webfont_comparison/">fontsquirrel&#8217;s webfont comparison page</a> loads the fonts from the 4 providers (unfortunately, fontdeck does not seem to offer the Cantarell fount, a common denominator between all other three services, hence the difference). The rest of my testing consists mostly of analysis of speed, HTTP headers and other tinkering through <a href="http://getfirebug.com/">firebug</a>.</p>
<table>
<tr>
<th title="Name of the service">Service</th>
<th title="Number of fonts available">Fonts</th>
<th title="Does this service require registration?">Need Login</th>
<th title="How does it work?">Approach</th>
<th title="Does the service let you download the fonts and server them from your own server?">Download</th>
<th title="Does the service offer hosted, online webfonts?">Hosting</th>
</tr>
<tr class="odd">
<td><a href="http://code.google.com/webfonts">Google Font Directory</a></td>
<td>18 (plus variants)</td>
<td>No. Fonts are Open-Source, too!</td>
<td>CSS</td>
<td>No (Open source fonts could be downloaded, but no tool or instruction given)</td>
<td>Yes</td>
</tr>
<tr>
<td><a href="http://www.fontsquirrel.com/" title="Font Squirrel | Handpicked free fonts for graphic designers with commercial-use licenses.">Font Squirrel</a></td>
<td>635 (<em>including</em> variants)</td>
<td>No. Free for personal use, some are Open Source</td>
<td>CSS</td>
<td>Yes</td>
<td>No</td>
</tr>
<tr class="odd">
<td><a href="http://fontdeck.com/" title="Fontdeck: Real fonts for your website">Font Deck</a></td>
<td>81 (plus variants)</td>
<td>Yes. Includes a few free fonts.</td>
<td>CSS</td>
<td>No</td>
<td>Yes</td>
</tr>
<tr>
<td><a href="http://typekit.com/fonts" title="Font Libraries | Typekit">Typekit</a></td>
<td>153 (plus variants)</td>
<td>Yes. Includes a few free fonts.</td>
<td>Javascript</td>
<td>No</td>
<td>Yes</td>
</tr>
</table>
<h3>Google Font Directory</h3>
<p><a href="http://code.google.com/webfonts">Google&#8217;s webfont solution</a> is &laquo;&nbsp;view source&nbsp;&raquo; friendly: one can copy-paste from another site and get the fonts working immediately. Their offering is still rather limited, but their site is no-nonsense, immediately usable, and does not require any signup, payment – indeed all the fonts provided are Open Source (distributed under <a href="http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;id=OFL">Open Font License</a>).</p>
<p>Google&#8217;s service is also pretty good with caching – their servers appropriately respond with a 304 not modified open a request, and they send proper Expires: and Last-Modified: HTTP Headers.</p>
<h3>Font Deck </h3>
<p>Setup with <a href="http://fontdeck.com/">Fontdeck</a> is relatively easy: one needs to register on their site, choose a few fonts, and get a piece of HTML and CSS code to use. While I ran into a silly UX issue and couldn&#8217;t find the code samples at some points (a case of bad whitespace and beyond-the-fold design), using the font deck web site is rather pleasant. </p>
<p>However, after setting up my test page by following all their instructions, I never managed to get the fonts to appear: the URIs given to me in the sample systematically resulted in “403 forbidden” responses. I could not test the performance of this solution yet.</p>
<h3>Font squirrel</h3>
<p>Font Squirrel is clearly different from the rest. Similar to the many foundry catalogs available for designers, it includes a really simple <a href="http://www.fontsquirrel.com/fontface/generator">wizard to create a font-face kit</a> from any (downloaded) font. Very geek friendly. This is also the only service that caters to site admins who want to host their fonts themselves, and it does not provide a hosted font-face service.</p>
<h3>Typekit</h3>
<p>One of the first service of the genre, <a href="http://typekit.com/fonts">Typekit</a> also requires you to register yourself and your site. Javascript-based. Really similar to font-deck (which I believe it predates), Typekit will let you browse fonts for your site, and will provide a javascript snippet to add to pages to embed the fonts.</p>
<p>However, after setting up my test page by following all their instructions, I had trouble getting the fonts to appear: the URIs given to me in the sample systematically resulted in a “404 Not Found” response. It took me a while to understand (DOH!) that I had to choose fonts, add them to my site&#8217;s collection THEN publish in order for the system to work. My bad, their UX is really decent and I should really have understood this faster. </p>
<p>This solution is actually quite nice, as it allows me to choose which weight and style I want to include in my kit &#8211; which can be a big win for file weight, and thus performance.</p>
<p>Caching-wise, Typekit also behaves nicely, with the same combination of “304 Not Modified” response, Expires: and Cache-Control: HTTP Headers seen in Google&#8217;s service. </p>
<p>Their caching policy is much less aggressive than Google&#8217;s, however: while Google sends a cache directive for 14 days (Cache-Control: private, max-age=1209600), Typekit sends one for 300 seconds. I assume the reason for this difference is that with Google, you link to each individual font (which change very rarely), while with Typekit you link to your kit, which you may tinker with a lot. In any case, a cache policy of 300 seconds (5 minutes) is rather likely to cover the average visit, so this short timeout should hopefully not have too much of an impact on your visitor&#8217;s experience. </p>
<p><img alt="Typekit logo" src="http://use.typekit.com/badges/default.gif" title="Typekit logo" class="alignleft" width="62" height="25" /> One thing I&#8217;m not a big fan of: the script Typekit gives you doesn&#8217;t just lets you embed fonts, it also adds a little Typekit logo on all your pages. <em>Not cool</em>. I assume that <a href="https://typekit.com/plans">paid customers</a> don&#8217;t get the pesky logo, but regardless, if a service is going to advertise itself on my site, I&#8217;d like to know in advance&#8230;</p>
<h3>Anything Else?</h3>
<p>Any other service you would like to see tested here? Any other indicator of performance or cost-effectiveness you would like to see in the table? Tell us in the comments and we&#8217;ll try to keep this page up to date.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/06/02/comparison-webfont-services/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Astuce : Groupe intelligent avec l&#8217;addressbook (MacOSX)</title>
		<link>http://lab.pheromone.ca/2010/05/27/smart-group-addressbook/</link>
		<comments>http://lab.pheromone.ca/2010/05/27/smart-group-addressbook/#comments</comments>
		<pubDate>Thu, 27 May 2010 18:30:24 +0000</pubDate>
		<dc:creator>karl</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[addressbook]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[quicktip]]></category>
		<category><![CDATA[tutoriel]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=387</guid>
		<description><![CDATA[Il est très souvent pénible de se souvenir de toutes les personnes appartenant à un groupe particulier avant d&#8217;envoyer un message. Le carnet d&#8217;adresses du mac est souvent un outil sous-utilisé. Vous pouvez pourtant créer des groupes intelligents en fonction de catégories précises du carnet d&#8217;adresses (la société, le nom, les pays, etc.) Les fiches [...]]]></description>
			<content:encoded><![CDATA[<p>Il est très souvent pénible de se souvenir de toutes les personnes appartenant à un groupe particulier avant d&#8217;envoyer un message. Le carnet d&#8217;adresses du mac est souvent un outil sous-utilisé. </p>
<p>Vous pouvez pourtant créer des groupes intelligents en fonction de catégories précises du carnet d&#8217;adresses (la société, le nom, les pays, etc.) </p>
<p>Les fiches contiennent une section libre appelée Remarques. Dans cette section, vous pouvez entrer du texte. Imaginez que vous réserviez cette section pour des mots clés. Par exemple, nous avons Paul Dupont et John Smith, deux développeurs dans notre carnet d&#8217;adresses, l&#8217;un développe en ruby mais les deux développent en python.</p>
<p>Je crée un filtre qui sélectionne toutes les fiches dont le champs remarques contient le mot clé python.</p>
<a href="http://lab.pheromone.ca/wp-content/uploads/filtre-addressbook.png"><img src="http://lab.pheromone.ca/wp-content/uploads/filtre-addressbook.png" alt="Filtre addressbook" title="filtre-addressbook" /></a>
<p>Une fois le filtre créé un nouveau groupe intelligent « python » apparaît dans la colonne de gauche et permet de retrouver les personnes facilement.</p>
<a href="http://lab.pheromone.ca/wp-content/uploads/listegenerale-addressbook.png"><img src="http://lab.pheromone.ca/wp-content/uploads/listegenerale-addressbook.png" alt="fenêtre principale du carnet d&#039;adresse" title="listegenerale-addressbook"  /></a>
<p>Mieux que cela dans Mail.app, vous pouvez maintenant, taper python et vous obtiendrez automatiquement la liste des personnes qui font du python. Vous pouvez ainsi gérer de nombreux mots clés, le service commercial, les compétences technologiques, les clients sur lesquels les personnes travaillent, etc. Attention cependant à votre nomenclature pour être sûr d&#8217;avoir les bonnes personnes dans la liste d&#8217;envoi.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/05/27/smart-group-addressbook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Delaying cache clearing with Delayed Jobs</title>
		<link>http://lab.pheromone.ca/2010/05/26/delaying-cache-clearing-with-delayed-jobs-2/</link>
		<comments>http://lab.pheromone.ca/2010/05/26/delaying-cache-clearing-with-delayed-jobs-2/#comments</comments>
		<pubDate>Wed, 26 May 2010 15:06:00 +0000</pubDate>
		<dc:creator>Benoit</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=376</guid>
		<description><![CDATA[Le Grand Club de RDS.ca is a social networking site focussed on sports. it&#8217;s been up since August 30th 2008 and it&#8217;s built in Ruby on Rails. A member can have his own blog and belong to groups. I got a pickle of a problem the other day with group memberships, turns out, everytime a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://legrandclub.rds.ca" target="_blank">Le Grand Club de RDS.ca</a> is a social networking site focussed on sports. it&#8217;s been up since August 30th 2008 and it&#8217;s built in Ruby on Rails. A member can have his own blog and belong to groups.</p>
<p>I got a pickle of a problem the other day with group memberships, turns out, everytime a member was leaving a group, it would take several seconds for the action to complete. Good thing, we have a <a href="http://www.newrelic.com/" target="_blank">NewRelic</a> Gold membership, and with it&#8217;s transaction traces, we were able to pin it down to a specifc method.</p>
<p>Each user has a page that lists the groups the user belongs to, and each group entry displays the number of members in the group. Of course these pages are cached and in the act of leaving or joining the group, the cached pages where deleted. When there are a lot of members in a group, it can take several seconds to delete the cache of each member pages, which is overall a bad user experience.</p>
<p>To solve this problem, I had 2 options available. First, have all fragments cached with an expiry time of, say, 1 hour and delete only the acting user&#8217;s cache when he&#8217;s joining or leaving the group. That is the easy solution. but what&#8217;s the fun in that.</p>
<p>The second approach is to delete the acting user&#8217;s cache immediatly, but and have <a href="http://github.com/tobi/delayed_job" target="_blank">Delayed Jobs</a> handle the deletion of the other members&#8217; caches. This is the approach I&#8217;ll explain here.</p>
<p>First, I need to declare the sweeper in my controller class</p>
<pre class="code">class GroupsMembershipsController &lt; ApplicationController
   ...
   cache_sweeper :groups_memberships_sweeper, :only=&gt;[:create, :update, :destroy]
   ...
end</pre>
<p>Then I create the sweeper class which contains the delayed jobs code.</p>
<pre class="code">class GroupsMembershipsSweeper &lt; ActionController::Caching::Sweeper
  observe GroupMembership

  def after_update(model)
    expire model  unless self.controller.blank?
  end

  def after_destroy(model)
    expire(model) unless self.controller.blank?
  end

  def after_create(model)
    expire(model) unless self.controller.blank?
  end

  protected
  def expire(model)
    # queueing our cache clearing in delayed jobs
    Delayed::Job.enqueue(DelayedGroupMembersSweeper.new(model.group_id)) unless model.group_id.blank?
    expire_group_membership model
  end

  def expire_group_membership(model)
    #... other stuff  ...
  end

  # The class that will be invoked when Delayed jobs performs it's task
  class DelayedGroupMembersSweeper &lt; Struct.new(:group_id)
     include CacheKeys  # helper module that declares functions for creating caching keys
     def perform
       ac = ApplicationController.new
       members = GroupMembership.all(:conditions=&gt;["group_id = ? and status != 'invited'", group_id])
       members.each do |member|
          ac.expire_fragment get_profils_cache_key('modules_groupes',member.profile_id)
      end
    end
  end

end</pre>
<p>There are two important informations here.</p>
<ol>
<li>The queueing of the task we want to perform. When the enqueue function is called, delayed jobs will serialize the class in YAML and store the data in the database to be revived later by the jobs queue process later. I store the group&#8217;s ID, and I&#8217;ll fetch the members belonging to that group in the actual job.</li>
</ol>
<pre class="code">  def expire(model)
    ...
    Delayed::Job.enqueue(DelayedGroupMembersSweeper.new(model.group_id)) unless model.group_id.blank?
    ...
  end</pre>
<ol>
<li>Declaring the class that will perform the task. This class needs to be serializable. inheriting from Struct ensures that it is. Since the code is invoked from a different process, I needed to instantiate the ActionController class for the expire_fragment method to become available. after that, it&#8217;s only a question of iterating through all the members in the group and expiring each of their fragments.</li>
</ol>
<pre class="code">  class DelayedGroupMembersSweeper &lt; Struct.new(:group_id)
     include CacheKeys  # helper module that declares functions for creating caching keys
     def perform
       action_controller = ApplicationController.new
       members = GroupMembership.all(:conditions=&gt;["group_id = ? and status != 'invited'", group_id])
       members.each do |member|
          action_controller.expire_fragment get_profiles_cache_key('modules_groupes',member.profile_id)
      end
    end
  end</pre>
<p>And there it is, Delaying the clearing of the cache with Delayed Jobs.</p>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/05/26/delaying-cache-clearing-with-delayed-jobs-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mise à jour d&#8217;une application Rails 2.2.2 vers Rails 3</title>
		<link>http://lab.pheromone.ca/2010/05/17/mise-a-jour-dune-application-rails-2-2-2-vers-rails-3/</link>
		<comments>http://lab.pheromone.ca/2010/05/17/mise-a-jour-dune-application-rails-2-2-2-vers-rails-3/#comments</comments>
		<pubDate>Mon, 17 May 2010 20:19:14 +0000</pubDate>
		<dc:creator>Rémy Giard</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rails3]]></category>

		<guid isPermaLink="false">http://lab.pheromone.ca/?p=364</guid>
		<description><![CDATA[Dans le monde Ruby, nous attendons tous avec impatience le sortie du prochain et tout nouveau Rails version 3.  Il a déjà de nombreux sites qui discutent de ce sujet et des nouvelles fonctionnalités à venir.  Or, dans le but m&#8217;y faire les dents, j&#8217;ai décidé de mettre à jour une de nos application interne [...]]]></description>
			<content:encoded><![CDATA[<p>Dans le monde Ruby, nous attendons tous avec impatience le sortie du prochain et tout nouveau Rails version 3.  Il a déjà de nombreux sites qui discutent de ce sujet et des nouvelles fonctionnalités à venir.  Or, dans le but m&#8217;y faire les dents, j&#8217;ai décidé de mettre à jour une de nos application interne en version 2.2.2 vers la version 3.  Je décris ici le processus et les embûches que j&#8217;ai rencontrés.</p>
<p>Pour commencer, je devais savoir ce qui n&#8217;était plus supporté dans la nouvelle version.  L&#8217;équipe de développement de Rails a publié un plugin qui permet de détecter ce qui n&#8217;est plus supporté.  Toutefois, ils ont aussi construit un plugin pour faciliter la transition qui permet l&#8217;utilisation de certaines fonctions non-incluses dans la version 3.  J&#8217;ai installé le premier plugin pour connaitre les changements à faire et j&#8217;ai ensuite installé le deuxième plugin.  Voici un résumé des changements principaux :</p>
<ul>
<li>API de ActiveRecord : <a href="http://guides.rails.info/3_0_release_notes.html#active-record">http://guides.rails.info/3_0_release_notes.html#active-record</a></li>
<li>API de ActionMailer : <a href="http://guides.rails.info/3_0_release_notes.html#action-mailer">http://guides.rails.info/3_0_release_notes.html#action-mailer</a></li>
<li>API des routes : <a href="http://guides.rails.info/3_0_release_notes.html#action-dispatch">http://guides.rails.info/3_0_release_notes.html#action-dispatch</a></li>
<li>API des générateurs : <a href="http://guides.rails.info/3_0_release_notes.html#railties-restrung">http://guides.rails.info/3_0_release_notes.html#railties-restrung</a></li>
<li>Changements des constantes de Rails.  Exemple : RAILS_ROOT =&gt; Rails.root, RAILS_DEFAULT_LOGGER =&gt; Rails.logger</li>
<li>Utilisation de Bundler et d&#8217;un Gemfile au lieu de config.gem : <a href="http://guides.rails.info/3_0_release_notes.html#railties-restrung">http://guides.rails.info/3_0_release_notes.html#railties-restrung</a></li>
<li>Plusieurs appels aux helpers ne sont plus disponibles.  Plusieurs sont disponibles en ajouter le <a href="http://github.com/rails/prototype_legacy_helper" target="_blank">plugin prototype_legacy_helper</a> Exemple: link_to_remote : <a href="http://guides.rails.info/3_0_release_notes.html#action-view">http://guides.rails.info/3_0_release_notes.html#action-view</a></li>
</ul>
<p>Comme embûches, j&#8217;ai dû mettre à jour ma version installée de Ruby.  Un excellent outil sous Ubuntu facilite l&#8217;utilisation de plusieurs version en même temps et c&#8217;est &laquo;&nbsp;<a href="http://www.rubyinside.com/rvm-ruby-version-manager-2347.html" target="_blank">rvm</a>&laquo;&nbsp;.  Pour isoler mes tests à la transition vers Rails 3, j&#8217;ai préféré Ruby 1.8.7 à 1.9 pour ne pas avoir les problèmes d&#8217;encodage possibles dûs à l&#8217;utlisation de Ruby 1.9.  J&#8217;ai ensuite installé les gem nécessaire à l&#8217;application en plus de Rails 3.0.0.beta.  L&#8217;ajout de ces gem dans le fichier Gemfile est la nouvelle façon de faire.  J&#8217;étais maintenant prêt à migrer l&#8217;application.  Voici mes prochaines étapes :</p>
<ul>
<li>Construire une application Rails par-dessus l&#8217;application existante ce qui a eu pour effet de créer les nouveaux fichiers nécessaires qui n&#8217;existait pas encore.  Pour ce, il faut seulement appeler &laquo;&nbsp;rails &lt;app&gt;&nbsp;&raquo; comme auparavant.</li>
<li>Créer le fichier &laquo;&nbsp;app/controllers/application_controller.rb&nbsp;&raquo; qui remplace maintenant &laquo;&nbsp;app/controllers/application.rb&nbsp;&raquo;.</li>
<li>Modifier les fichiers d&#8217;environnement (environment.rb, development.rb, etc) pour répondre à la nouvelle structure</li>
<li>Ajuster les routes selon le nouvel API</li>
<li>Remplacer ou supprimer les plugins de l&#8217;application.  Pour will_paginate, j&#8217;ai utilisé la branche &laquo;&nbsp;<a href="http://github.com/mislav/will_paginate/tree/rails3" target="_blank">rails3</a>&nbsp;&raquo; du répertoire sur github.  J&#8217;ai dû enlevé &laquo;&nbsp;exception_logger&nbsp;&raquo; qui n&#8217;est plus supporté</li>
<li>Depuis la version Rails 2.3.4, il n&#8217;est plus possible d&#8217;avoir un clé primaire dans les tables de jointure des relations &laquo;&nbsp;has_and_belongs_to_many&nbsp;&raquo;.  J&#8217;ai donc enlevé ces clés pour ne garder que celles de la liaison.  Il suffisait d&#8217;ajouter &laquo;&nbsp;:id =&gt; false&nbsp;&raquo; comme option du &laquo;&nbsp;create table&nbsp;&raquo; de la migration</li>
</ul>
<p>Pour terminer, la migration d&#8217;une application Rails vers Rails 3 est une tâche faisable mais non sans embûche.  Il faut bien se renseigner sur les changements à Rails 3 pour bien identifer ce qui cause le problème.  Tout au long de la migration, j&#8217;ai dû effectuer des ajustements ici et là dans les controlleurs et les vues pour suivre les nouvelles façons de faire.  Or, la migration vers Rails 3 n&#8217;est pas isolé à seulement un niveau, mais presque partout (controlleurs, routes, vues, dépendances, configuration, etc).  De ce fait, il faut être vigilant et s&#8217;assurer de tester tous les chemins possibles.  Ici, si on a créé et maintenu nos tests unitaires et fonctionnels, nous sommes heureux de les avoir sous la main.  Voilà un excellent sujet pour une prochaine publication sur Le Lab &#8230;</p>
<p>Liens utiles:</p>
<ul>
<li><a href="http://guides.rails.info/3_0_release_notes.html" target="_blank">Ruby on Rails 3.0 Release Notes</a></li>
<li><a href="http://omgbloglol.com/post/353978923/the-path-to-rails-3-approaching-the-upgrade" target="_blank">The Path to Rails 3 : Approaching the upgrade</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lab.pheromone.ca/2010/05/17/mise-a-jour-dune-application-rails-2-2-2-vers-rails-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
