Putain de bordel de merde, qu'il est difficile de trouver du temps pour bloguer (désolé pour l'accent mais je suis en Europe). À partir de demain, je vais participer à un important congrès qui porte sur les technologies OpenSource en géomatique dans le domaine de l'éducation et de la recherche. Demain (25oct.) je vais assister aux présentations MAIS vendredi (26oct.), je serai conférencier et ce pour la première fois dans un événement aussi important (et en anglais en plus...).
Comme premier (de 2 ou 3) billets sur mon aventure, je n'attaquerai pas le monde géo mais plutôt mon intégration à la civilisation Suisse.
1-J'ai déniché un hôtel assez sympa dans le quartier Flon de Lausanne. Le nom très original de cet établissement (LHotel) n'est pas très bien indexé dans Google. Il est tout de fois parfait pour mes besoins: pas cher du tout (100CF/nuit), à coté de la gare de train, WIFI gratuit (et performant), entouré de Pubs, de boutiques et de restaurants branchés. Idéal pour une visite éclair comme je m'apprête à vivre.
2-Malgré le fait que j'ai ajusté (à la hausse) le niveau de ma language maternelle, je me suis fait dire à deux reprises "Yo no hablo español" depuis mon arrivé (c.a.d. en 2hrs). Ça doit être mon débit rapide qui porte à confusion. J'essais de parler lentement et ça va beaucoup mieux depuis.
3-Évidemment, comme je voyage pas beaucoup, j'ai oublié un adapteur pour recharger mon ordinateur portable. Vous savez que pour un "geek", avoir du courant de disponible vient au deuxième rang (tout de suite après avoir accès à une connexion internet potable) dans la liste des priorités pour survivre. J'ai déniché une boutique d'électronique pas loin de mon hôtel. Comme j'ai l'air d'un type sympa, le vendeur m'a refilé un convertiseur "gratos". Mon intégration va très bien.
4-Il est 17:00pm (heure locale), je suis à 6000KM de la maison et je marche devant un pub dont le nom m'intrigue: "Les gosses du Québec". L'endroit me semble très sympa malgré le nom et une recherche rapide sur internet me confirme que ce n'est pas un bar de danseurs, alors j'entre. La serveuse m'offre une Molson Canadian mais j'opte plutôt pour une bière en fût locale (Calanda). L'ambiance est super, j'ai un gilet des Nordiques en avant de moi et parfois, la serveuse lâche des sacres québécois en servant les clients pour les faire rire.
Feels like home...
24 octobre 2012
29 mars 2012
Autonomie et Beauté
Il y a clairement un vent nouveau qui souffle sur le WebMapping de masse. Alors qu'OpenStreetMap (OSM) a connu un léger essoufflement au cours des dernières années, il semble que les reproches à son égard (manque de données pour certaines parties du globe ou encore envers la qualité de son contenu) ne soient plus un facteur restrictif comparé à sa liberté d'utilisation. Le plus grand perdant de ce vent de changement est évidemment Google. L'apparition récente de Google Map Maker n'est donc pas une énorme surprise, mais est-ce trop peu trop tard pour ralentir le courant?
- "timeline" récapitulatif
- Juillet 2004 - Naissance d'OSM
- Novembre 2010 - Steve Coast (fondateur) quitte OSM pour se joindre à l'équipe BING chez Microsoft
- 29 Février 2012 - Foursquare se joint au mouvement OSM
- 8 Mars 2012 - Apple remplace Google Maps par OSM pour iPhoto sur iOS
- 27 Mars 2012 - Microsoft BING rend sa couverture aérienne disponible pour OSM
De la vitesse vers la beauté
Afin de rendre son service plus flexible (et surtout plus attrayant visuellement), Google a ajouté la possibilité de personnaliser l'affichage des cartes dans la version 3 de son API. Par contre, les changements récents aux licences d'utilisation ainsi que les coûts de facturation viennent restreindre considérablement son utilisation.
En tant que développeur, ma première réaction face à la cartographique en ligne (remontons ici en 1998 avec MapQuest et Google Maps en 2004) fût:
"
Non, mais as-tu vu la vitesse à laquelle la carte s'affiche!"
La technologie étant ce qu'elle est et, nous, maintenant habitués aux performances, la vitesse n'est plus un facteur qui nous impressionne. Par contre, une belle carte nous fait encore écarquiller les yeux. En septembre dernier, je me suis rendu à Denver pour le FOSS4G 2011 et je dois dire que je suis entièrement d'accord avec cet extrait du blogueur James Fee. Une des présentations était même dédiée aux techniques de production de "Beautiful Maps".
En terminant, voici quelques exemples de magnifiques cartes qui démontrent l'énorme potentiel de croiser Techno, Géo et Design (tiens ça ferait un bon nom de compagnie ça...). Merci à mon chum @SimonMercier qui est un véritable passionné de ce domaine émergeant et qui fait profiter sa tweetosphère de ses trouvailles:
Washington par @developmentseed
1 mars 2012
ConFoo & GeoTools
Voici quelques liens que j'ai trouvé intéressants suite à l'unique présentation, à saveur géospatiale, du Web Techno Conference (ConFoo) 2012. Le conférencier est Andrei Zmievski et l'intégralité de sa présentation est disponible sur Speaker Deck:
- GeoHash
- Géocodage d'IP / GeoIP City free Database
- MongoDB spatial
- Mapping type avec ElasticSearch
- Flickr Shapefiles Public Dataset 2.0
- Logiciel OpenSource pour faire du routing avec OSM
29 février 2012
Plénière d'ouverture @confoo 2012
Je vais tenter de "live-bloguer" ma première journée à ConFoo 2012. Vous devriez donc avoir l'information en temps réel en rafraichissant cette page:
NOTE: Le WIFI à 5.8Ghz est vraiment performant...pour l'instant
8:00AM: Arrivé au Hilton Bonaventure
8:50AM: La plénière d'ouverture n'est pas encore débuté... (déjà un retard de 20 minutes)
9:06AM: L'adapteur VGA est la cause du retard...
9:10AM: Je viens de me rendre compte qu'il n'y aura pas de présentation technique en ouverture. Je vais donc modifier ce billet en fonction des présentations auxquelles je vais assister aujourd'hui (GIT, HTML5, Javascript, WebSocket)
9:30AM: "Git: a beginners guide for developers" par @MikeMcQuaid
Je connais Git mais pas suffisamment à mon goût. J'espère en apprendre un peu plus sur les bonnes pratiques avec ce système de contrôle (versions) de code source. Contrairement à SVN, Git n'est pas centralisé mais local sur votre ordinateur ce qui permet d'être totalement fonctionnel ("standalone") en mode déconnecté (sans connexion Internet) incluant tous les historiques.
Il est recommandé de ne pas utiliser un GUI pour accélérer l'apprentissage de Git.
gitx and gitk sont des meilleurs outils (que Git log) pour visualiser les statuts
Si vous avez de gros fichiers binaires à gérer, il semble que Git ne soit pas le meilleur outil (commentaires de quelques personnes dans la salle)
Le "branching" avec Git est BEAUCOUP plus simple qu'avec SVN.
Excellente référence pour Git: http://progit.org/
10:45AM: "HTML5: mode déconnecté et push" par @goldoraf
l'Application Cache permet de forcer la sauvegarde des ressources (html, js, css) même si l'utilisateur vide la cache de son browser. Il faut ajouter un numéro de version dans ce manifeste de cache ce qui permet un rafraichissement des ressources advenant une mise à jour du manifeste. Se référer à l'objet window.applicationCache pour plus d'information. À noter que cette fonctionnalité n'est pas supporté par IE (éventuellement dans version 10+).
3 options pour stocker localement des données:
A) FileSystem API (Chrome seulement version 13+)
B) WebStorage (localstorage et sessionStorage) API. (compatible avec la plupart des navigateurs)
Il est recommandé d'utiliser JSON.stringify et JSON.parse pour sauvegarder des objets dans cet hashmap persistent. À noter qu'il y a un quota de 5Mo. Dans les inconvénients on retrouve la performance et l'absence d'indexation dans le hash
C) IndexedDB (compatible seulement avec FF 8+ et Chrome 16+ et peut-être IE 10+)
Concepts intéressants de stockage, de requête (simili SQL) et d'indexation MAIS tout ça en local.
La librairie Lawnchair est très intéressante car elle utilise la meilleure méthode disponible pour stocker les données.
Il existe une superbe librairie Socket.IO qui permet d'utiliser les WebSockets dans TOUS les navigateurs (même sur IE 5, faut le faire). Voir aussi la nouvelle norme Server-Sent event. Pour faire du "push" avec du Python dans le back-end: Twisted.
13:15PM: "Migrating MVC to the front-end using Backbone JS" par Martin Drapeau
Salle pleine pour cette présentation très attendue (de ma part à tout le moins). Désolé mais cette présentation était tellement intéressante que je n'ai pas été en mesure d'écrire des notes. Un billet dédié à Backbone.js verra le jour sur mon blog éventuellement.
NOTE: Le WIFI à 5.8Ghz est vraiment performant...pour l'instant
8:00AM: Arrivé au Hilton Bonaventure
8:50AM: La plénière d'ouverture n'est pas encore débuté... (déjà un retard de 20 minutes)
9:06AM: L'adapteur VGA est la cause du retard...
9:10AM: Je viens de me rendre compte qu'il n'y aura pas de présentation technique en ouverture. Je vais donc modifier ce billet en fonction des présentations auxquelles je vais assister aujourd'hui (GIT, HTML5, Javascript, WebSocket)
9:30AM: "Git: a beginners guide for developers" par @MikeMcQuaid
Je connais Git mais pas suffisamment à mon goût. J'espère en apprendre un peu plus sur les bonnes pratiques avec ce système de contrôle (versions) de code source. Contrairement à SVN, Git n'est pas centralisé mais local sur votre ordinateur ce qui permet d'être totalement fonctionnel ("standalone") en mode déconnecté (sans connexion Internet) incluant tous les historiques.
Il est recommandé de ne pas utiliser un GUI pour accélérer l'apprentissage de Git.
gitx and gitk sont des meilleurs outils (que Git log) pour visualiser les statuts
Si vous avez de gros fichiers binaires à gérer, il semble que Git ne soit pas le meilleur outil (commentaires de quelques personnes dans la salle)
Le "branching" avec Git est BEAUCOUP plus simple qu'avec SVN.
Excellente référence pour Git: http://progit.org/
10:45AM: "HTML5: mode déconnecté et push" par @goldoraf
l'Application Cache permet de forcer la sauvegarde des ressources (html, js, css) même si l'utilisateur vide la cache de son browser. Il faut ajouter un numéro de version dans ce manifeste de cache ce qui permet un rafraichissement des ressources advenant une mise à jour du manifeste. Se référer à l'objet window.applicationCache pour plus d'information. À noter que cette fonctionnalité n'est pas supporté par IE (éventuellement dans version 10+).
3 options pour stocker localement des données:
A) FileSystem API (Chrome seulement version 13+)
B) WebStorage (localstorage et sessionStorage) API. (compatible avec la plupart des navigateurs)
Il est recommandé d'utiliser JSON.stringify et JSON.parse pour sauvegarder des objets dans cet hashmap persistent. À noter qu'il y a un quota de 5Mo. Dans les inconvénients on retrouve la performance et l'absence d'indexation dans le hash
C) IndexedDB (compatible seulement avec FF 8+ et Chrome 16+ et peut-être IE 10+)
Concepts intéressants de stockage, de requête (simili SQL) et d'indexation MAIS tout ça en local.
La librairie Lawnchair est très intéressante car elle utilise la meilleure méthode disponible pour stocker les données.
Il existe une superbe librairie Socket.IO qui permet d'utiliser les WebSockets dans TOUS les navigateurs (même sur IE 5, faut le faire). Voir aussi la nouvelle norme Server-Sent event. Pour faire du "push" avec du Python dans le back-end: Twisted.
13:15PM: "Migrating MVC to the front-end using Backbone JS" par Martin Drapeau
Salle pleine pour cette présentation très attendue (de ma part à tout le moins). Désolé mais cette présentation était tellement intéressante que je n'ai pas été en mesure d'écrire des notes. Un billet dédié à Backbone.js verra le jour sur mon blog éventuellement.
16 février 2012
Le HTML5 peut modifier vos données
J'affectionne particulièrement développer avec JQuery mais hier, je me suis buté à un problème important. En fait, le problème ne provient pas de JQuery lui-même, mais plutôt de sa conformité à la spécification W3C du HTML5 en matière de nommage des attributs non visibles. Pour ceux, qui comme moi, aiment utiliser la méthode .data() de JQuery, cette spécification à une incidence assez importante; elle enlève systématiquement les tirets dans le nom de vos attributs...OUCH!
Si vous stockez la valeur 1 dans la variable Foo-Bar:
$('body').data('Foo-Bar', 1)
Vous pourrez ensuite la récupérer comme ceci:
console.log($('body').data('Foo-Bar'))
= 1Mais de façon interne, la valeur sera conservée sous FooBar:
$.each($('body').data(),function(i,e){console.log(i)})
= FooBar
Donc FooBar contiendra également la valeur 1:
console.log($('body').data('FooBar'))
= 1L'action suivante écrasera la valeur initiale:
$('body').data('FooBar', 2)
Dorénavant:
console.log($('body').data('Foo-Bar'))
= 2
et évidemment:
console.log($('body').data('FooBar'))
= 2
À partir du moment que l'on est conscient de ce problème comportement, il est facilement contournable. Je fais partie de ceux qui essaient tant bien que mal de se conformer aux normes et spécifications dans le développement d'applications. Je dois par contre avouer que je n'aime pas que l'on altère mes données, SURTOUT sans même m'en avertir. C'est probablement mon côté franco-canadien hyperprotecteur de mes données...
Inscription à :
Articles (Atom)