Juste un autre Mongueur de Perl

samedi 6 février 2010

Où sur le Web ranger et mettre mes scripts ?

Le Web c'est bien pour ranger et retrouver des choses. En fait pour moi c'est rapidement devenu le meilleur endroit pour mettre mes affaires. Mais j'arrive pas encore tout à fait à tout virtualiser.

Exemple: Laurent me file un script Perl pour mettre à jour plusieurs comptes de micro-blogging (genre Twitter, identi.ca) en même temps.

#!/usr/bin/perl

use warnings;
use strict;
use 5.10.0;

use Net::Twitter::Lite;
use Net::Identica;

use constant USER1 => 'elbeheho@free.fr';  # change the user here 
use constant USER2 => 'elbeho';  # change the user here too
use constant MDP => 'XXXXXXXX';  # chan  ge the passweurd

if ( scalar @ARGV < 1 ) {
        exit 0;
}
my $msg = join ' ', @ARGV;
$msg = substr($msg, 0, 135);

my $nt = Net::Twitter::Lite->new(
        username => USER1,
        password => MDP
);

my $r = eval { $nt->update( $msg ); } ;
warn "$@\n" if $@;

my $ni = Net::Identica->new(
        username => USER2,
        password => MDP
);
$ni->update( $msg );

exit 0;

OK c'est cool et ça me serait très utile un tel script. J'ai une identité de base (kaicarver) et j'ai pas envie de me logger et délogger pour poster sur d'autres comptes.

Mais mon problème c'est: où ranger le script? Je travaille sur 3 ou 4 machines. Même sur ma machine principale, je suis tellement bordélique que je retrouve rien. En plus c'est une nouvelle machine. J'ai plein de choses sur l'ancienne machine qui n'ont pas (encore?) été migrés.

Bon donc je voudrais bien ranger ce script quelque part sur le Web. Les endroits où je mets des choses, ça ne manque pas: mon serveur (hébergé chez moi), Gmail et autres Google Docs, DropBox, GitHub, Google Sites, les serveurs DediBox ou OVH du boulot, ... Mais c'est un script, et je voudrais aussi pouvoir l'exécuter là où il est, de n'importe où.

J'ai pas la solution pour l'instant.

mardi 20 octobre 2009

Travailler du doigt

L'expression "travailler du doigt" n'existe apparemment pas (encore) sur Google.

Une amie bulgare m'a appris cette expression il y a longtemps. Son père, un entrepreneur bon vivant et bien connecté, avait apparemment un talent certain pour travaillait du doigt.

Travailler du doigt, si j'ai bien compris, c'est dire: fais-ci, fais ça, ça c'est bien, ça c'est pas bien. En gros on se sert de son doigt pour pointer, pour désapprouver, éventuellement pour approuver, et on complète si nécessaire avec la parole.

J'aime bien cette expression et parfois je sens un vrai besoin pour ce genre de travail, qui n'est pas si ridicule qu'il en a l'air.

Certes, au premier abord, ça peut sembler drôle, un truc de flemmard. Mais parfois, ce dont on a le plus besoin, c'est d'un bon travailleur du doigt, qui a du recul, un sens sûr de où on va et d'où on veut pas aller, et qui sait le faire savoir.

dimanche 11 octobre 2009

Tout devrait être wiki

Je suis maniaque.

Particulièrement pour l'orthographe. Peut-être parce que j'ai travaillé dans l'édition (pour la première fois en traduisant le Chameau), peut-être parce que l'orthographe et la grammaire étaient beaucoup discutés dans ma famille d'immigrés, et peut-être parce que je me fais vieux...

En tout cas quand je vois une faute d'orthographe, ça m'interpelle et j'ai envie de la corriger*.

En voici un exemple que sans doute seuls des maniaques comme moi peuvent trouver intéressant. L'excellent guide des concerts de musique d'orgue de France Orgue m'annonce aujourd'hui un concert près de chez moi:
16:00 Paris (75) - eglise St Jean Baptiste de Belleville
Didier Hennuyer, orgue
Haëndel, Guilmant, Messiaen, Jongen
- entrée libre
Super, mais l'orthographe du compositeur germano-britannique me perturbe... Georg Friedrich Händel est devenu George Frideric Handel lorsqu'il est devenu sujet anglais. En France on francise l'umlaut de son nom allemand: Georg Friedrich Haendel.

Mais ce tréma sur le e... Hypercorrection tout à fait erronée! Hélas je ne peux pas corriger cette erreur, sauf en écrivant un mail sans le moindre intérêt à l'administrateur du site.

Donc je me dis, et pas pour la première fois, qu'il faudrait généraliser le mécanisme de wiki à tout. Cela pose des petites questions d'autorisation, de modération, de sécurité... Mais l'évolution d'Internet c'est de ne pas faire les choses tout seul. Le monde est un jardin public où l'on cultive tous des fleurs et où l'on gagne à permettre aux autres de se mêler de ce qu'ils regardent.

*tentation à laquelle il m'arrive de résister justement sur Wikipedia, car la faute d'orthographe peut en dire long sur la qualité de l'information à laquelle elle est associée. Dans ces cas, l'orthographe est une espèce d'outil de ranking automatique et auto-généré, dans la veine du c'est celui qui l'a dit aui l'est, et il faut lui laisser faire son travail.

lundi 31 août 2009

One keyboard to rule them all

Je crois avoir trouvé la solution au problème des claviers et des accents.

Cette solution, c'est le clavier US International.

Je suis en période de transition. L'absence d'accents de mes précédents posts s'explique par le fait que j'ajustais Ubuntu au clavier US International (en fait il y avait une mauvaise interaction avec le chinois et SCIM, bref...).

J'essaie aussi et en même temps d'apprendre à taper sans regarder le clavier.

Bref c'est une période un peu difficile pour moi...

J'espère sortir de cet enfer capable d'écrire facilement, rapidement, et naturellement en anglais et en français et en divers langages de programmation.

Quand je suis rentré en France il y a longtemps j'ai passé une très mauvaise période à apprendre le clavier AZERTY. Rétrospectivement, c'était une erreur. À présent je fais le chemin inverse. J'ai bon espoir mqis des fois je fqtigue,,,

En souvenir de cette période difficile de ma vie, comme une espèce de monument à l'arbitraire, j'ai inauguré un site recensant divers ordres alphabétiques.

Ya pas d'arrangement? Oh que si, il y en a bien trop. Camarades victimes d'ordres farfelus exaspérants, je suis de tout cœur avec vous et vos contributions sont les bienvenues!

jeudi 27 août 2009

Un, plusieurs, et le chaos

J'aime bien programmer, mais j'aime bien raler aussi. C'est mon cote francais. Et ca ne s'arrange pas avec l'age. Pourtant, au fond, je suis tres pragmatique et positif, et je ne critique qu'avec l'espoir, sans doute naif, qu'on pourrait faire mieux. (Je tente de repousser aussi loin que possible le petit soupcon qui me suggere que les problemes, ils ne sont pas ailleurs, ils sont... chez moi. Soupcon indelicat qui coexiste avec le secret espoir que quelqu'un me dira, mais non, il n'y a pas de probleme, regarde... et le monde s'illuminera.)

Une des nombreuses choses qui me posent probleme quand je fais des petits programmes, c'est les structures de donnees, qui ne sont jamais exactement ce que je voudrais, et dans lesquelles tres rapidement je m'embirlificote comme dans du spaghetti.

Oui, je suis eternellement reconnaissant pour la magie des tableaux et des hachages. Je peux faire pas mal de choses tres vite avec ca. Je suis reconnaissant aussi pour l'elegance et la simplicite du format YAML, qui permet presque le DWIM des donnees. Mais, parfois, je me sens carrement ingrat et frustre, parce que je veux faire des choses tres simples, et apparemment c'est pas si simple, et je ne comprends pas pourquoi.

Voici donc deux problemes elementaires que j'ai avec les structures de donnees elementaires:

1. $=@ Pourquoi la difference fondamentale entre une chose et plusieurs? Entre un scalaire et une liste? Genre, j'ai une bille dans ma poche, OK cool, c'est un scalaire. Mais si j'en ai deux, alors c'est completement different! C'est une liste, enfin un tableau, enfin une structure d'un niveau d'abstraction superieur, avec un comportement completement different. Bref il y a une espece de impedance mismatch entre le cas un, qui est tout de meme tres courant, et le cas plusieurs, qui est le cas general, mais qui survient parfois quand on ne s'y attend pas. Genre, j'ai un permis de conduire, evidemment, je n'en ai qu'un. Ah ben non, je suis parti vivre a l'etranger, maintenant j'en ai deux. C'est completement different, je n'ai plus un permis, j'ai un ensemble de permis de conduire! Tout change! Le policier ne me dit plus: "Votre permis, SVP." mais "L'un de vos permis, SVP." Et moi je lui reponds, "Je ne sais pas quel permis vous donner." Bref c'est penible de devoir tout changer dans mon programme pour une raison aussi triviale que le passage de 1 a 2. Je ne sais pas quelle tete aurait un langage qui ne ferait pas de difference fondamentale entre un et plusieurs, enfin pas plus de difference entre 1 et 2 qu'entre 2 et 3. Je sais juste que parfois ca serait bien pratique.

2. @=% L'autre truc qui me navre, c'est le fait qu'un hachage n'est pas ordonne. Tres pratique, le hachage, pour acceder a mes donnees. Mais qui a decide que le prix a payer pour ca c'est de melanger toutes mes donnees? Pourquoi me condamne-t-on a l'irreversible? Oui, l'entropie existe. Mais si je range des livres sur une etagere, je m'attends a les retrouver dans le meme ordre le lendemain. Cette insistance pour jeter a la poubelle l'ordre sous pretexte qu'on utilise un certain algorithme de stockage des donnees me parait nuisible dans la plupart des cas. Par defaut, l'ordre devrait etre preserve. Les ordinateurs sont tres doues pour ca. Le desordre devrait etre un choix delibere qu'on ne ferait que dans quelques cas d'optimisation des performances. A mon avis, dans la plupart des cas, on serait tres contents de garder l'ordre.

Ha. ca me fait penser, dans le genre, truc debile avec l'informatique qui existe depuis toujours et dont on est seulement maintenant en train de se defaire: l'idee que tant qu'on a pas fait "Sauvegarder", on a tout perdu. Excuse-moi, cher ordinateur, mais quand je travaille, je m'attends a ce que les choses restent, pas a ce qu'elles disparaissent parce que j'ai oublie de dire, "Ah oui, ce truc sur lequel je travaille depuis une heure? En fait j'aimerais le garder." Cher ordinateur, c'est toi qui as une memoire photographique et quasi infaillible, pas moi. Alors oui, je suis reconnaissant que, avec un ordinateur, contrairement a une feuille de papier, si je souhaite tout effacer, je peux le faire sans difficulte et recommencer avec une page blanche. Cela dit, merci de ne pas faire ca par defaut et sans rien me demander, ok? Et non, c'est pas une question intelligente, quand je ferme le programme apres une dure journee de travail, de me dire: "Vous ne m'avez pas dit de garder votre travail, voulez-vous que je le jette a la poubelle?" Quand les robots deviennent nos infirmieres, j'espere ne jamais en entendre un me dire: "Vous ne m'avez pas dit que vous souhaitiez rester vivant. Souhaitez-vous que je vous tue?"

A la recherche de la Planete Mongueurs

OK, ceux qui savent faire, font, et les autres... bloggent (bloguent?).

Je cherche a faire la liste des blogs, twitter etc. de tous les Mongueurs pour faire un ou plusieurs fils permettant de suivre l'activite de la "Planete Mongueurs", comme dans cet exemple. Ceci pour ameliorer la communication des Mongueurs de Perl en rendant visible ce que publient les Mongueurs et en incitant ls Mongueurs a publier plus.

Mais en fait (evidemment) je me pose des problemes et je me prends la tete. Je trouve toujours des problemes ou il ne devrait pas y en avoir. En gros je me pose trois questions:

1. Qui sont les Mongueurs?

Plus largement qui sont les membres de la communaute Perl francophone?

2. Ou sont-ils?

Quels sont les types de sites ou ils produisent du contenu?

3. Qu'est-ce qu'on en fait?

Une fois qu'on a les sites des Mongueurs et apparentes (une liste deja interessante en soi, a mettre quelque part et a tenir a jour):

a. Quelles sites sont exploitables automatiquement? En gros lesquels ont des fils de type RSS?

b. Quelles sources de contenu souhaite-t-on utiliser? On veut sans doute eviter d'agreger des sites qui n'auront jamais aucun rapport avec Perl, mais la frontiere est floue, surtout dans le cas de microblogs. Elle est egalement floue parce que la communaute des Mongueurs n'est pas que technique, elle est egalement sociale. On peut avoir plusieurs fils, plus ou moins perso, plus ou moins micro (et aussi plus ou moins franco (phones)).

Apres il y a la question de comment collecter et stocker ces informations. Ca serait utile que ces informations puissent etre mises a jour collectivement.

J'ai commence a faire une table mettant en correspondance Mongueurs et differents types de site, mais je commence a penser qu'une structure un peu plus flexible serait mieux, genre ce simili* YAML:
Machin Truc:
site: http://geocities.com/machin norss
blog: http://blog.com/machinmachin
twitter: truclife perso note2 note3
useperl: machin
github:
perlmonks:
cpan:
Sebastien Aperghis-Tramoni:
site:
blog:
twitter:
useperl:
github:
perlmonks: Maddingue
cpan: saper
Alexis Sukrieh: !!pairs
site: http://www.sukria.net/
blog: http://www.sukria.net/fr/
blog: http://www.sukria.net/en/
twitter:
useperl:
github:
Kai Carver:
blog: http://juamdp.blogspot.com/ tags=perl,dev
twitter: kaicarver perso dontaggregate
On pourra ajouter des notes standardisees pour gerer les points 3, genre norss si ya pas de rss, perso si ca a rien a voir avec Perl, dontaggregate si on veut pas que ce contenu apparaisse dans nos fils, tags=perl,dev si on ne veut agreger que les posts tagues perl ou dev, lang=fr pour specifier la langue, etc.

*simili YAML parce que, c'est peut-etre bete, mais je prefere ecrire
  blog: http://www.sukria.net/fr/
blog: http://www.sukria.net/en/
que
  blog:
- http://www.sukria.net/fr/
- http://www.sukria.net/en/
Voila du code pour gerer ce pseudo YAML:
# Try out a pseudo YAML file format and make sure it does what I want

use 5.010;
use strict;
use warnings;

use YAML;
use Data::Dumper;
use LWP::Simple;

# I find this pseudo YAML easier to use in this case
my $pseudo_yaml =<<END;
Sebastien Aperghis-Tramoni:
site:
blog:
twitter:
useperl:
github:
perlmonks: Maddingue
cpan: saper
Alexis Sukrieh: !!pairs
site: http://www.sukria.net/
blog: http://www.sukria.net/fr/
blog: http://www.sukria.net/en/
twitter:
useperl:
github:
Kai Carver:
blog: http://juamdp.blogspot.com/ tags=perl,dev
twitter: kaicarver perso dontaggregate
END
# Get the data in text format from the shared Google Document
# this URL requires authentication 'http://docs.google.com/feeds/download/documents/Export?docID=ah69gtdhbpc5_38f4db5hhf&exportFormat=txt'
#$pseudo_yaml = get('http://docs.google.com/View?id=ah69gtdhbpc5_38f4db5hhf');

# Turn into proper YAML and load
# Actually it's a conversion from a !!map with duplicates to !!pairs
print $pseudo_yaml;
my $yaml = $pseudo_yaml;
$yaml =~ s/\n /\n - /gsm;
my $struct = Load($yaml);
say Dumper $struct;
say Dump $struct;
exit;

# Turn into an easier to use structure
my %all;
my %keys;
for my $name (sort keys %$struct) {
my $list = $struct->{$name};
for my $item (@$list) {
my ($key, $val) = (%$item);
$val //= '';
$keys{$key}++;
push @{$all{$name}{$key}}, $val;
}
}

# Print back out sorted and normalized
for my $name (sort keys %all) {
say $name, ":";
for my $key (sort keys %keys) {
if (defined $all{$name}{$key}) {
for my $val (@{$all{$name}{$key}}) {
say " $key: $val";
}
} else {
say " $key: ";
}
}
}
(Couleurs via perl -pe 's/\t/" "x8/ge' testyaml.pl | perltidy -html -nss -pre -i=2)

Ya plus qu'a remplir ce simili YAML avec les donnees dont je dispose, puis demander a la communaute de rajouter ce qui manque en mettant ces donnees sur un fichier partage genre Google Docs accessible au format texte.

UPDATE: Google m'énerve, je me demande si Etherpad ne serait pas mieux et plus simple pour ce qu'on veut:
...

donnees diverses a integrer:

http://use.perl.org/~BooK/journal/

arhuman briac darobin echo Frog grinder Jean+Forget mirod rafael Sniper
pmichaud?

http://perlmonks.org/?node=mongueurs

Paris.pm

* grinder - David Landgren
* echo - Eric Cholet
* stefp - Stéphane Payrard
* OeufMayo - Briac Pilpré
* tortue - Kai Carver
* sniper - David Rigaudière
* pop - Yann Kerhervé
* darobin - Robin Berjon
* zejames - Julien Bordet
* cpc - Nicolas Lidzborski
* bwana147 - Cédric Bouvier (loin de Paris)
* Genius - Nicolas Crovatti
* happy - Fabien Penso
* nehlwyn - David "D@vid" Elbez
* iza - Isabelle Blanc
* brx - Philippe Bricout
* R4f - Raphaël Rousseau
* glb - Eric Cassagnard
* mirod - Michel Rodriguez
* Blop - Ronan Le Hy
* arhuman
* Gloom - Nicolas Repiquet
* bobione - Antoine Bobin
* webdaemon
* Maddingue - Sébastien Aperghis-Tramoni
* BooK - Philippe Bruhat
* arno - Arnaud Martinez
* Beatnik
* guillaume

Suisse / Autres

Laurent Dami http://zarb.org/~dami/

http://consttype.blogspot.com/

Olivier Mengue http://o.mengue.free.fr/

Alexis Sukrieh
http://www.sukria.net/
http://www.sukria.net/fr/
http://www.sukria.net/en/

Institutionnel:

mongueurs
articles

FPW
OSDC.fr

sur twitter, youtube, ...

http://linuxfr.org/topics/Perl

feed des compte-rendus de Jean?

...