Blocage des Tweet, passez à Status.net

Image representing StatusNet as depicted in Cr...
Image via CrunchBase

Twitter a annoncé qu’il allait bloquer les messages spécifiques dans les pays dont la législation locale interdit tel ou tel propos. Pour justifier le bien fondé de son choix, le service de micro-bloggage propriétaire argue que en France par exemple les messages neo-nazis sont interdits. Certes, mais l’émoi est sensible dans les pays du printemps arabe où Twitter avait joué un rôle dans la diffusion d’information…

Une fois de plus on voit que le modèle propriétaire avec son corollaire la centralisation, ne permet pas de garantir la liberté de l’utilisateur. Seul l’informatique libre en utilisant des logiciels libres (pas seulement open-source) garantit à l’utilisateur la liberté d’executer, de modifier et de distribuer le logiciel modifié ou pas. Twitter n’est donc pas un service libre pour reprendre la terminologie consacrée de “Soffware As A Service”. Les gens doivent en prendre conscience.

Il existe heureusement comme quasiment toujours une alternative libre. Dans le cas du micro-bloggage, il existe même une alternative décentralisée qui pare au risque de censure. Il s’agit de Status.net. Tout le monde peut installer sur sa machine personnelle un serveur status.net et ainsi héberger son propre service de micro-bloggage. Plus besoin d’avoir un compte ici ou là, vous pouvez suivre et être suivi par n’importe quel utilisateurr de n’importe quel serveur status.net ! Si l’installation est trop compliquée pour vous, il est possible de se créer un compte sur le service identi.ca qui met en oeuvre status.net.

Vous avez le choix d’être libre !

Le pigeon bat de l’aile

Feral pigeon (Columba livia).
Image via Wikipedia

Hésitant un temps à écrire ce billet, je fini par me résoudre à partager mon expérience en tant que client de Free Mobile. Cela fait plus de semaines que le nouvelle opérateur a lancé son offre et il a subit nombre de railleries de la part de ses concurrents dont la plus recevable concerne la qualité de son réseau.

Sur ce point j’ai constaté que durant plusieurs heures sur 2 jours cette semaine, je n’avais plus accès à internet sur le secteur de la Défense à Courbevoie. Le terminal accrochait le signal et l’icône de connexion data s’affichait puis le N900 perdait la connexion. Mon collègue qui utilise un autre téléphone constatait le même problème. Une manipulation qui semble palier à cela pour le N900 consiste à forcer le mode 3G de la SIM. Pour cela il faut soit utiliser l’applet de sélection du mode ou aller dans le paramétrage puis l’icône du téléphone pour choisir le mode 3G seul.

Mon interprétation empirique du problème est que par moment, le signal 3G est trop faible et si le téléphone est en mode DUAL (sélection du mode 3G si disponible sinon utilise le 2G), c’est ennuyeux car la connexion est instable. Si on force le mode en 3G, le téléphone reste en 3G même si il aurait préféré passer en 2G. Cette explication mérite toutefois de passer au crible de l’expérimentation.

Alors est-ce un problème de saturation du réseau Free Mobile ? un problème temporaire ? Un problème d’itinérance ? Attendons pour voir si cela s’améliore et puis de toute façon un pigeon libre peut toujours s’en aller voler chez le voisin.

Webdev 16 de déception en déception

Voulant partager du code entre plusieurs projet, l’idée naturelle est de mettre ce code dans des bibliothèques dont va dépendre les projets. En java cette dépendance peut être définie par Maven qui gère le cycle de build. Avec Windev on est loin d’une solution industrielle….

Tout d’abord le simple partage de code via le centre de réutilisabilité revient ni plus ni moins à partager les sources sur un disque réseau sans versionnage aucun des pseudo-bibliothèque obtenue. Chaque projet doit alors faire un copier-coller des sources. C’est vraiment pauvre !

Il existe néanmoins un notion plus intéressante en WebDev qui gère le versionnage: le composant. Avec des composants, les projets sont mis à jour automatiquement quand une nouvelle version est disponible pour peu que le composant indique sa compatibilité. Cela se rapproche de la gestion des dépendances de Maven et de son système de dépôt, grâce à la mise en ligne du composant dans le Gestionnaire De Sources (GDS) de WebDev (son SCM propriétaire).

Malheueusement la notion de composant impose des limites. Un composant doit être vu comme un boîte offrant un service de bout en bout à l’application utilisatrice. Il peut fournir des procédures, des pages etc mais le composant ne peut accéder aux objets de l’application utilisatrice. Le terme objet est volontairement flou car c’est là que les ennuis commencent. Le WLangage ne pousse pas à faire de l’objet et toutes les fonctions du WLangage sont globales (ex: HChangeConnexion). Malheureusement ce paragdigme est vraiment insuffisant pour expliquer clairement la magie qui s’opère à l’execution. Ainsi selon que la fonction WLangage est appelée dans le composant ou pas, son résultat est différent. Par exemple un composant ne peut être utilisé pour effectuer un changement des connexions de l’application utilisatrice, car HChangeConnexion echoue silencieusement (comble de l’horreur…là où Java léverait une exception) si appelée depuis le composant.

Du coup il est impossible d’initialiser les connexions de l’application comme indiqué dans ce billet et il faudra mettre le code dans l’application même. Dommage, cela calme les ardeurs du concepteur qui cherche à faire du code réutilisable et classe définitivement WebDev hors-jeu pour le développement professionnel.

Connexion internet Free Mobile impossible sans borne Free Mobile

Deutsch: Logo GSM - Global System for Mobile C...
Image via Wikipedia

Depuis hier le pigeon en liberté ne pouvais plus se connecter à internet avec Free Mobile. Cette épidémie avait commencé avec une perte de connexion 3G, puis toute tentative de connexion était instable: impossible de naviguer ou faire quoi que ce soit, la connexion se coupait immédiatement.

En regardant de plus près les bornes GSM aux alentours (La Défense Courbevoie), il n’y avait pas de trace de la borne Free Mobile mais seulement celles de SFR, Bouygue et Orange. Sachant que la semaine dernière, on voyait 4 bornes: SFR, Bouygues, celle de Free Mobile et celle de Orange, j’en conclue que sans la borne de Free, point de roaming vers Orange et donc pas d’internet du tout !!!

En rapprochant cet incident avec les rumeurs de non allumage de ses antennes colportées par ses concurrents, je me dis que Free Mobile n’est peut-être pas en mesure de m’offrir le service data qui est un point primordial dans le choix de mon opérateur. Pourtant tout fonctionnait la semaine dernière. Est-ce que Orange a modifié son système pour n’accepter le roaming que si vraiment il n’y a pas de borne Free dans le secteur afin de forcer Free a allumer ses bornes ?

Cette interruption de service est heureusement terminée et pour l’heure, la borne Free Mobile et la borne Oranges apparaissent toutes les 2. Le pigeon peut de nouveau voler dans le cyber-espace.

Un pigeon de plus en liberté

Free mobile vient de faire un heureux de plus ! Ainsi une semaine aprés avoir fait mon inscription sur mobile.free.fr, j’ai reçu la carte SIM et 45 minutes après avoir activé la SIM sur le site de Free, me voilà connecté au réseau.

Le réseau Free Mobile semble bien activé, comme le montre la capture suivante, à moins que ce ne soit le réseau Orange que squatte Free. Cela n’a à vrai dire aucune importance pour l’utilisateur…

Le paramétrage du N900 se fait sans anicroche. Pour l’accés internet il suffit de modifier l’unique point d’accés du N900 comme suit:



Tous les autres paramètres doivent êtres laissés vides (proxy etc.)

Le paramètrage des MMS doit se faire au travers l’application fMMS. Dans le menu paramètre, il faut rentrer les valeurs suivantes pour la connexion internet:

Voilà le pigeon peut maintenant roucouler.

Squelette de projet python pour Maemo5

Le projet Pyjama est aujourd’hui dans un état presque utilisable. Pyjama est un outil écrit en python pour générer un squelette de projet python pour Maemo5. Il s’agit d’un “bootstrapper” à la manière du plugin archetype de maven.

Le principal objectif de Pyjama est atteint puisque la version disponible sous forme de source permet de générer un embryon d’application exécutable. Les sources générés comprennent des outils afin de gérer le messages d’informations, la remontée de bug via googlecode et les tâches asynchrones.

Le prochaine étape est la création d’une interface de saisie des paramètres du projet ainsi que d’une IHM pour Maemo5. Ainsi on pourra créer le squelette sur PC ou bien directement sur le terminal.

Pattern Visiteur: Java vs Python

Duke, the Java Mascot, in the waving pose. Duk...
Image via Wikipedia

Le développement du moteur de génération de pyjama est plus long que prévu. Je le souhaitais extensible facilement mais avec le moins de dépendance externe possible. Après avoir jeté un oeil sur la version python de stringTemplate, j’en ai conclu que le besoin de templating de Pyjama pouvais se contenter de la classe standard string.Template de python. Nul besoin de dépendre d’une librairie externe.

Si le mécanisme de remplacement était trouvé, le moteur de génération restait encore à écrire. En effet dans mon esprit ce moteur doit pouvoir prendre en charge une modification du modèle de projet ou carrément de nouveau type de projet. Les notions de Template en tant que modèle de fichier, de Transformateur en tant qu’unité de transformation commencèrent a émerger, chacune étant indépendante l’une de l’autre et la première à priori fixe tandis que la seconde pouvant s’enrichir au grès des besoins de générations.

Les transformateurs sont appliqués à l’ensemble des templates et un transformateur donné doit agir différemment selon la nature du template. Par exemple le transformateur de source python ne doit pas agir sur le fichier logo du projet et inversement le transformateur de logo doit créer des logos de différentes tailles pour le bureau hildon mais ne pas agir sur les sources python ! Le pattern visiteur frappe à la porte.

Le pattern visiteur permet d’ajouter des comportements à un ensemble d’objet sans toucher aux objets eux-mêmes. Le visiteur ne sait pas sur qui il agit et c’est l’élément visité qui rappel le visiteur en indiquant qui il est, ainsi le visiteur peut appliquer le bon comportement.

Son implémentation la plus simple en Java est la suivante:

public interface IVisitor {
    public void visit(VisitedElement ve);
}

public interface IVisitable {
    public void accept(IVisitor v);
}

class VisitedElement implements IVisitable {
    public void accept(IVisitor visitor){
        visitor.visit(self)
    }
}

class Visitor implements IVisitor {
    public void visit(VisitedElement visiteElement){
       // faire algo spécific à VisitedElement
    }
 }

Ainsi pour appliquer un visiteur à un d’element il suffit de faire

IVisitable e = VisitedElement();
IVisitor v = Visitor();
e.accept(v);

Pour apliquer le visiteur à un ensemble d’élément de nature différente, il suffit d’appeler la méthode accept(IVisitor) de leur interface commune dont l’implémentation, identique dans chacune d’elle, appelle le visiteur en passant l’élément lui-même. Ici opère la magie du compilateur Java qui traduit cela par un appel à la méthode prenant un paramètre du type de l’élément. Ainsi le visiteur sait qui il visite !

Malheureusement en Python une méthode ou plus généralement une fonction ne se définie pas par sa signature (nom + paramètre) mais uniquement par son nom. En python la surcharge de fonction n’existe pas mais uniquement l’écrasement (la redéfinition). Ainsi il n’existe que une et une seule fonction portant un nom donné!

Cela nous empêche d’avoir une implémentation identique de la méthode accept(IVisitor). Les éléments doivent indiquer qui ils sont en appelant des méthodes nommées différemment.

 class IVisitable():
     def accept(self, visitor):
         pass

 class IVisitor():
     def visit_Element(self, e):
         pass

 class Element(IVisitable):
     def accept(self,visitor):
         visitor.visit_Element(self)

 class Visitor(IVisitor):
     def visit_Element(self, e):
         # action spécifique quand on gère un Element
         pass

Ouverture de ligne Free Mobile : Erreur de clé rib

Common rock pigeon (Columba livia)
Image via Wikipedia

Le pigeon n’aime pas le Javascript c’est de notoriété publique. En effet tout site web se basant sur du javascript s’expose à ne pas fonctionner car il s’appuie sur un composant client non maîtrisé. Je dois être un peu vieux jeu même si je n’ai pas encore 36 ans… Enfin pour quelques semaines me séparent encore de l’horizon des 36 ans: l’âge limite des informaticiens selon cadreonline….

Une fois de plus, mon aversion du JavaScript se justifie. En essayant de libérer mon pigeon je suis tombé sur une erreur de clé RIB lors de la toute dernière étape:

Erreur clé rib

Cette erreur est vraiment incongrue puisque j’ai laissé le RIB qui est déjà utilisé pour mon compte Freebox. Je compare le RIB avec celui que me donne ma banque: c’est bien le bon. Je modifie le RIB en ressaisissant le même mais rien n’y fait. Le pigeon se sent alors floué car son collègue dans le même pigeonnier vient lui de réussir à se libérer.

C’est alors que mon désamour du JavaScript se réveille. Ce contrôle de surface (vérification de la clé de Luhn) doit être fait côté client. Mon navigateur doit avoir un problème… Je prend alors mon N900 et via la connexion internet de mon opérateur actuel, que je vais quitter pour Free, je réussi enfin à m’inscrire ! hourra le N900 à sauvé le soldat piegon et ironie de l’histoire, mon opérateur m’a permis de le quitter !

Free Mobile, j'arrive

La libération du pigeon est difficile

English: Pigeons. Polski: Go??bie (Katowice).
Image via Wikipedia

Lors de la conférence de press d’hier pour le lancement de Free Mobile, le patron de Iliad, maison mère de Free, Xavier Niel déclarait peu ou prou “Si vous ne venez pas chez nous, c’est vous les pigeons”. Après la libération des tarif de l’internet, Free veut maintenant libérer la téléphonie mobile et laisser voler les pigeons en liberté.

Cependant comme toute chose la liberté à un prix et hier soir jusqu’à tard il étai impossible de souscrire sur le site Free Mobile à cause d’une trop forte affluence. Les choses semblaient aller mieux ce matin puisque vers 8h00 il était possible de passer commande. C’est donc avec l’excitation du pigeon sentant la liberté s’approcher que je commence mon inscription.

L’abonnement se fait en 3 étapes: l’identification, choix du portage, choix du RIB. Dans mon cas comme j’avais auparavant laissé mon inscription entre la première et la deuxième étape m’étant fait jeté pour cause de surcharge du serveur, je me retrouve dans la première étape sans pouvoir modifier mon adresse. j’aurais voulu mettre le numéro d’appartement dans le complément d’adresse au lieu de la rue. Mais cela sera sans conséquence… Je pense, je l’espère, le pigeon est naïf. Je passe alors à l’étape suivante, entre mon actuel numéro de mobile, mon RIO, clique sur suivant… Patatrac ! Le serveur est surchargé et je me fait jeter. Le pigeon est persévérant et je recommence. C’est fois je passe la deuxième étape. Je confirme mon RIB et clique sur le dernier bouton qui va m’ouvrir les portes de la liberté….Patatrac ! Le serveur est surchargé et je me fais jeter.

La libération des pigeons sera plus longue que prévue.

Free mobile est lancé, j’y cours

J’attendais depuis longtemps (plus d’un an) le lancement des offres de l’opérateur Free Mobile. Ce matin le couperet est tombé: 16€ pour de l’illimité pour faire simple.

Sans une hésitation je prend une page blanche pour faire un simulation. Mon forfait actuelle me coûte 30€ et je suis engagé pour encore 1 an. Avec la loi Chatel je devrais m’acquitter des frais limité à un quart du restant soit 87€. Au bout de 6 mois je suis à l’équilibre et au bout d’un an j’aurai économisé environ 80€.

Je téléphone le 3179 pour obtenir mon numéro RIO afin de conserver mon numéro puis je passe un appel au service client de mon opérateur afin de m’assurer du montant de l’indemnité de résiliation. Je recherche le numéro du service client… Je n’en ai jamais eu besoin en bon geek qui se respecte. Heureusement qu’un collègue me le donne car lui, possède un téléphone marqué par l’opérateur.

Ça doit être le chaos chez les opérateurs, l’annonce vocale m’informe une attente de 10 minutes qui se transforment en 20 minutes. Le conseiller n’essaye pas de me retenir quand je lui annonce que pour 16€ ce n’est pas 2h de communication mais de l’illimité chez Free. Je lui demande conbien vais-je payer de frais et il me dit 57€. Cela fait un peu moins que prévu. Ah c’est une belle journée !

Pour le moment j’ai le business plan (grosse économie), le RIO (cerise sur le gâteau), il ne reste qu’a prendre un abonnement avec portabilité du numéro. Hélas le site Free Mobile est encore non opérationnel ce midi et le 1044 est saturé. Free j’arrive, je ne veux plus être un pigeon !!!!