String Formatting in XSLT 2.0

To migrate my photo albums from Gallery to WordPress, I ended up having to transform XML fragments such as:

<row>
  <field name="g_id">22909</field>
  <field name="g_description" xsi:nil="true" />
  <field name="g_keywords" xsi:nil="true" />
  <field name="g_summary" xsi:nil="true" />
  <field name="g_title">dsc00001</field>
  <field name="g_pathComponent">aaa.jpg</field>
  <field name="g_pathComponent">011120-Forum-XML-2001</field>
  <field name="g_orderWeight">1000</field>
</row>

Into SQL statements such as:

update
  wp_ngg_gallery g,
  wp_ngg_pictures p
set
  p.image_slug = "dsc00001",
  p.description = "dsc00001",
  p.alttext = "dsc00001",
  p.sortorder = 1
where
  p.galleryid = g.gid
  and g.title = "011120-Forum-XML-2001"
  and p.filename = "aaa.jpg";

That’s pretty obvious to do, but the usual technique is both verbose, boring and unreadable, giving something more or less like this:

<xsl:template match="row">
 <xsl:variable name="title" select="if (field[@name='g_title'] != '') then field[@name='g_title'] else field[@name='g_pathComponent'][1]"/>
 <xsl:variable name="description" select="if (field[@name='g_description'] != '') then field[@name='g_description'] else $title"/>
 <xsl:variable name="summary" select="if (field[@name='g_summary'] != '') then field[@name='g_summary'] else $title"/>

 <xsl:text><![CDATA[update
 wp_ngg_gallery g,
 wp_ngg_pictures p
set
 p.image_slug = "]]></xsl:text>
 <xsl:value-of select="$title"/>
 <xsl:text><![CDATA[",
 p.description = "]]></xsl:text>
 <xsl:value-of select="$description"/>
 <xsl:text><![CDATA[",
 p.alttext = "]]></xsl:text>
 <xsl:value-of select="$summary"/>
 <xsl:text><![CDATA[",
 p.sortorder = ]]></xsl:text>
 <xsl:value-of select="position()"/>
 <xsl:text><![CDATA[
where
 p.galleryid = g.gid
 and g.title = "]]></xsl:text>
 <xsl:value-of select="field[@name='g_pathComponent'][2]"/>
 <xsl:text><![CDATA["
 and p.filename = "]]></xsl:text>
 <xsl:value-of select="field[@name='g_pathComponent'][1]"/>
 <xsl:text><![CDATA[";
]]></xsl:text>
 </xsl:template>

Half way through typing this awful tag soup, I wished I could use some string formatting feature such as what I would have done in Python:

print '''
update
 wp_ngg_gallery g,
 wp_ngg_pictures p
set
 p.image_slug = "%(title)",
 p.description = "%(description)",
 p.alttext = "%(alttext)",
 p.sortorder = %(sortOrder)
where
 p.galleryid = g.gid
 and g.title = "%(galleryTitle)"
 and p.filename = "%(filename)";
''' % {"title": ..., "description: ...", ...}

Much better, don’t you agree?

The good news is that it’s easy to implement in XSLT 2.0!

I have chosen to use a « ${param-name} » syntax rather than the Pythonic « %(param-name) » but you could easily adapt the implementation to stick to the Pythonic syntax and the code is as simple as defining this named template:

<xsl:template name="template">
 <xsl:param name="template"/>
 <xsl:param name="parameters"/>
 <xsl:analyze-string select="$template" regex="\$\{{(\i\c*)\}}" flags="">
   <xsl:matching-substring>
     <xsl:value-of select="$parameters/*[name() = regex-group(1)]"/>
   </xsl:matching-substring>
   <xsl:non-matching-substring>
     <xsl:value-of select="."/>
   </xsl:non-matching-substring>
 </xsl:analyze-string>
</xsl:template>

Having done so, I can now use it to format my string:

 <xsl:variable name="title"
   select="if (field[@name='g_title'] != '') then field[@name='g_title'] else field[@name='g_pathComponent'][1]"/>
 <xsl:variable name="description" select="if (field[@name='g_description'] != '') then field[@name='g_description'] else $title"/>
 <xsl:variable name="summary" select="if (field[@name='g_summary'] != '') then field[@name='g_summary'] else $title"/>
 <xsl:call-template name="template">
   <xsl:with-param name="parameters">
     <title>
       <xsl:value-of select="$title"/>
     </title>
     <description>
       <xsl:value-of select="$description"/>
     </description>
     <alttext>
       <xsl:value-of select="$summary"/>
     </alttext>
     <gallery-title>
       <xsl:value-of select="field[@name='g_pathComponent'][2]"/>
     </gallery-title>
     <filename>
       <xsl:value-of select="field[@name='g_pathComponent'][1]"/>
     </filename>
     <sort-order>
       <xsl:value-of select="position()"/>
     </sort-order>
   </xsl:with-param>
   <xsl:with-param name="template"><![CDATA[update
 wp_ngg_gallery g,
 wp_ngg_pictures p
set
 p.image_slug = "${title}",
 p.description = "${description}",
 p.alttext = "${alttext}",
 p.sortorder = ${sort-order}
where
 p.galleryid = g.gid
 and g.title = "${gallery-title}"
 and p.filename = "${filename}";
]]></xsl:with-param>
</xsl:call-template>

Much nicer, don’t you think so?

Coup de neuf pour mon blog

Mon blog était hébergé sur un vieux serveur qui commence à donner des signes de faiblesses et son déménagement sur un serveur plus récent a été l’occasion de lui donner un petit coup de neuf…

Mises à jour de la version de WordPress et de ses plugins bien entendu, mais aussi changement de thème : le thème dkert3 que j’utilisais jusqu’à présent s’est subitement mis à générer une erreur PHP après l’upgrade et en activant Twenty ten (le nouveau thème par défaut de WordPress) pour examiner ce qui se passait j’ai trouvé qu’il convenait bien à ce blog.

Le plus gros changement est sans doute l’intégration de mon ancien album photo au blog.

Pour le moment, cette intégration est faite « à périmètre constant » et reproduit l’ancien album mais j’essayerai de trouver le temps de l’enrichir et de l’améliorer!

C’est album photo était auparavant géré par Gallery, un logiciel de gestion d’albums photos que j’utilisais depuis sa première version.

Pourquoi l’abandonner?

Le positionnement de Gallery devient un peu délicat : c’est un logiciel de gestion d’albums photos destiné à publier des photos sur le web et à les partager des photos avec ses amis ou sa famille sans être un logiciel de gestion de photos ou un DAM.

J’apprécie beaucoup le logiciel Gallery, mais il me semble qu’il est pris en tenaille entre les extensions permettant de gérer des albums photos directement dans les blogs et les DAMs qui permettent également de publier des photos sur internet.

Ma décision d’intégrer l’album photos a finalement été motivée par deux raisons :

  • le souhait de pouvoir intégrer plus facilement les photos de l’album au blog,
  • la charge de travail lié au maintient de deux logiciels différents pour le blog et pour l’album photo.

Avant de prendre cette décision, j’ai migré mon ancien album photo sous la dernière version de Gallery (Gallery 3) et ai testé les plugins heiv Gallery3 et  Gallery3 Picker qui permettent d’intégrer respectivement des albums et des photos de Gallery3 dans WordPress. Le résultat était satisfaisant mais il m’a semblé moins convainquant que le plugin de gestion de photos NextGen Gallery que j’utilise déjà sur le site du Retour à la Terre.

Outre ce plugin, j’ai également installé :

  • Broken Link Checker qui vérifie les liens inséré dans le blog. J’ai du travail à faire à ce niveau : le plugin a détecté 72 liens « cassés’!
  • OpenID qui me permet, ainsi qu’à mes visiteurs de m’identifier en utilisant un OpenID.
  • Une version modifiée de Comment Form Notes qui affiche un message pour inciter mes visiteurs à utiliser OpenID pour poster leurs commentaires (ils évitent ainsi la phase de « modération »).
  • pageMash, bien utile pour gérer l’arborescence des pages du blog.
  • Raven’s Antispam dont j’espère qu’il facilitera la tâche de gestion des commentaires sur le site. Dites moi s’il bloque intempestivement vos commentaires!
  • Redirection qui permet de garder des URLs cools (qui ne changent pas) et d’analyser les erreurs 404.
  • Relevanssi qui améliore les fonctions de recherche.
  • Shutter Reloaded qui gère l’affichage des photos de manière spectaculaire.
  • XRDS-Simple nécessaire au plugin OpenID.

Un grand merci aux développeurs de WordPress et de ces plugins!

L’écosystème WordPress continue de m’impressionner par sa richesse. C’est une des raisons pour lesquelles j’ai adopté WordPress mais cette richesse comporte aussi des risques : lorsque l’on dépend de 10 plugins et d’un thème pour gérer un site, les risques que quelque chose ne se passe pas bien quand on met à jour la version du moteur WordPress ne sont pas négligeables et on a tendance à croiser les doigts avant chaque mise à jour!

Cachez cette sécheresse que l’on ne saurait voir

Sécheresse en Normandie

Les chiffres publiés par Univers Nature viennent confirmer, si l’on en doutait, que la sécheresse de notre verger normand n’est pas cas isolé.

Ce sont au contraire la moitié des départements français qui ont été soumis à des arrêtés préfectoraux imposant des restrictions d’usages de l’eau et le quart des départements qui sont sous restriction totale.

Je ne me souviens pourtant n’avoir vu passer qu’un petit article dans l’Eure Agricole en juillet sur le sujet et une recherche sur Google actualité laisserait presque penser que les sécheresses sont réservées aux « pays du sud« .

Pourquoi ce silence? A t-on oublié que l’eau est un élément vital? Le sujet n’est il pas beaucoup plus important que, par exemple, le cours de la bourse que tout bulletin d’information se croit obligé de donner?

Peut-être que les journalistes se désintéressent tout simplement du sujet.

A moins qu’ils ne le trouvent moins vendeur que des sujets plus bling-bling tels que la grippe A ou la castration chimique des récidivistes en matière de criminalité sexuelle (qui ne concernerait que 1,6% des condamnés).

Ou qu’ils veuillent éviter de mettre un peu plus de pression sur les agriculteurs qui ont suivi les incitations de nos ministères de l’agriculture pour tout miser sur des cultures gourmandes en eau (maïs notamment) et consomment maintenant 68% de l’eau consommée en France.

Ou encore qu’on ne veuille éviter de faire trop de bruit alors que de grandes manœuvres sont en cours pour achever la marchandisation des ressources naturelles dont l’eau n’est qu’un exemple.

Et vous, qu’en pensez-vous?

Les belles images

Certains pays sont mal partis : l’Afrique noire en particulier; la poussée démographique en Chine et dans toute l’Asie est inquiétante; cependant grâce aux protéines synthétiques, à la contraception, à l’automation, à l’énergie nucléaire, on peut considérer que vers 1990 sera instaurée la civilisation de l’abondance et des loisirs. La terre ne formera plus qu’un seul monde, parlant peut-être –grâce aux traducteurs automatiques– une langue universelle; les hommes mangeront à leur faim, ils ne consacreront au travail qu’un temps infime; ils ne connaitront plus la douleur ni la maladie.

Les belles images, Simone de Beauvoir, 1966

Ce petit roman que j’avais acheté chez un bouquiniste pendant mes années de taupe n’est, à juste titre, pas considéré comme une œuvre majeure de Simone de Beauvoir et je l’avais complètement oublié avant de la redécouvrir sur une étagère chez mes parents.

Les belles images qu’il décrit semblent aujourd’hui incroyablement naïves et utopiques : pensait-on réellement que les progrès technologiques allaient assurer le bonheur de l’humanité? Si j’essaye de me remettre dans l’ambiance de l’époque, il me semble que cette vision était en tout cas couramment affichée dans les médias et par nos dirigeants. Ce qui est également frappant est l’absence de toute considération environnementale dans cette vision.

Ce décalage est d’autant plus troublant qu’il est cantonné à ces déclarations et n’existe pas au plan des actes : on pourrait le transposer et le rendre très actuel en les remplaçant et en conservant la trame du roman et les actes de ses personnages qui n’ont pas pris une ride.

Les belles images ont décidément bien peu d’influence sur notre façon de vivre!

Debian/Ubuntu PHP packages and virtual hosts: introducing adminstance

As a short term way to deal with my Debian/Ubuntu PHP packages and virtual hosts issue, I have written a pretty crude Python script that I have called « adminstance« .

This script can currently install, update and remove an instance of a web package such as websvn:

vdv@studio:~/Documents/Dyomedea/code/adminstance$ ./adminstance


Usages:  

adminstance -h|--help
  print this message

adminstance -l|--list 
  lists the installed instances for this directory

adminstance -i|--install [-f|--force]  
  installs an instance for a root directory
  
adminstance -u|--update [-f|--force]  
  updates an instance for a root directory
  
adminstance -r|--remove [-f|--force] [-p|--purge]  
  removes an instance for a root directory

Options:

  -i, --install : action = installation 
  -f, --force   : when action = install, update or remove, install
                  without prompting the user for a confirmation
  -h, --help    : prints this message
  -l, --list    : action = list 
  -p, --purge   : when action = remove, remove also files and directories
                  under /var and /etc (by default, these are preserved)
  -r, --remove  : action = remove
  -u, --update  : action = update
   
  

To install an instance of websvn named « foo », type:

vdv@studio:~/Documents/Dyomedea/code/adminstance$ sudo ./adminstance -i /usr/share/websvn/ foo
[sudo] password for vdv: 
install an instance of /usr/share/websvn/ named foo? (y|N) y
Copying /var/cache/websvn to /var/cache/adminstance/websvn/foo

Copying /usr/share/websvn to /usr/share/adminstance/websvn/foo

Copying /etc/websvn to /etc/adminstance/websvn/foo

Creating a symlink from /etc/adminstance/websvn/foo/config.php to /usr/share/adminstance/websvn/foo/include/config.php
Creating a symlink from /var/cache/adminstance/websvn/foo/tmp to /usr/share/adminstance/websvn/foo/temp
Creating a symlink from /var/cache/adminstance/websvn/foo to /usr/share/adminstance/websvn/foo/cache
Creating a symlink from /etc/adminstance/websvn/foo/wsvn.php to /usr/share/adminstance/websvn/foo/wsvn.php

To update it if you get a new version of websvn:

vdv@studio:~/Documents/Dyomedea/code/adminstance$ sudo ./adminstance -u /usr/share/websvn/ foo
update an instance of /usr/share/websvn/ named foo? (y|N) y
Synchronizing /usr/share/websvn to /usr/share/adminstance/websvn/foo
rsync -a --delete /usr/share/websvn/ /usr/share/adminstance/websvn/foo/

Creating a symlink from /etc/adminstance/websvn/foo/config.php to /usr/share/adminstance/websvn/foo/include/config.php
Creating a symlink from /var/cache/adminstance/websvn/foo/tmp to /usr/share/adminstance/websvn/foo/temp
Creating a symlink from /var/cache/adminstance/websvn/foo to /usr/share/adminstance/websvn/foo/cache
Creating a symlink from /etc/adminstance/websvn/foo/wsvn.php to /usr/share/adminstance/websvn/foo/wsvn.php

To list the instances of websvn:

vdv@studio:~/Documents/Dyomedea/code/adminstance$ sudo ./adminstance -l /usr/share/websvn/ 
List of instances for the package websvn:
	bar
	foo

To remove the instance foo:

dv@studio:~/Documents/Dyomedea/code/adminstance$ sudo ./adminstance -r /usr/share/websvn/ foo
remove an instance of /usr/share/websvn/ named foo? (y|N) y
Deleting /usr/share/adminstance/websvn/foo
rm -r /usr/share/adminstance/websvn/foo

To remove it including its directory under /etc and /var:

vdv@studio:~/Documents/Dyomedea/code/adminstance$ sudo ./adminstance -rp /usr/share/websvn/ foo
remove an instance of /usr/share/websvn/ named foo? (y|N) y
Deleting /var/cache/adminstance/websvn/foo
rm -r /var/cache/adminstance/websvn/foo
Deleting /usr/share/adminstance/websvn/foo
rm -r /usr/share/adminstance/websvn/foo
Deleting /etc/adminstance/websvn/foo
rm -r /etc/adminstance/websvn/foo

It’s pretty basic and has a few limitations but that should be enough for me for the moment.

In the longer term, it should be possible to pack it as a .deb that uses dpkg triggers to automate the update of all its instances when a package is updated through apt…

Debian/Ubuntu PHP packages and virtual hosts

I am a big fan of the Debian packaging system and use it on my Ubuntu systems as much as I can as it greatly simplifies both the installation of new software and more important their maintenance and security updates.

There is unfortunately one downside that bites me so often that I am really surprised that nobody seems to care…

When you run a web server, it is often the case that you want to install popular web applications such as WordPress, Gallery, websvn or whatever and Debian/Ubuntu packages are perfectly fine until you want to run these applications on multiple virtual hosts.

To enforce the strict separation between /usr, /var and /etc that is part of the Debian policy, these packages usually put their PHP source files under /usr/share and replace the configuration files by symbolic links to files located under /etc. Symbolic links to files located under /var are also added in some cases.

I understand the reasons for this policy but when you want to run several instances of these applications, links from the source to a single set of configuration files just seem plain wrong! Ideally you’d want things to work the other way round and get instances that have their own configuration and variable space under /etc and /var and link to a common set of source files located under /usr.

Taking a package such as WordPress and converting it into a « virtual host friendly » form isn’t that difficult but as soon as you start modifying a package after it’s been installed you need to redo these modifications after each new package update and loose a lot of the benefit of using a package.

Have I missed something obvious and is there an easy solution for this issue?

See also Debian/Ubuntu PHP packages and virtual hosts: introducing adminstance.

Réparer son toit

D’après notre couvreur notre toiture a été refaite lors des reconstructions massives effectuées après la dernière guerre. C’est son état général et surtout la taille des ardoises, introuvables en France mais communes en Angleterre, qui lui fait dire cela.

Elle tient encore le coup. Ce sont les crochets métalliques qui tiennent les ardoises qui lâchent lorsque le vent est trop violent comme cela a été le cas ces derniers jours en Normandie et cinq ardoises avaient été déplacées.

Ce n’est pas bien compliqué de replacer des ardoises : il suffit de remplacer les crochets et de les glisser à leur place.

Réparer mon toit fait partie des occupations simples et fondamentales que j’ai toujours plaisir à faire par moi-même tout comme faire mon pain.

C’est aussi l’occasion de voir notre terrain et les alentours sous un angle inhabituel et spectaculaire et le plateau qui nous entoure est d’une grande beauté bien que les agriculteurs aient fait disparaître le bocage normand dont on devine encore quelques traces.

Algorithmes génétiques

Un aspect inattendu du magasin le Retour à la Terre créé par ma femme Catherine est qu’il me donne l’opportunité de travailler dans des domaines connexes à ceux que je connais sur des projets intéressants parce que directement valorisables et à taille humaine.

C’est le cas du système de gestion des emplois du temps dont je viens de terminer une première version.

La gestion des emplois du temps dans une entreprise gérant une dizaine de personnes avec des rôles et des contraintes d’emploi du temps très variées est un véritable casse-tête et Catherine passait chaque semaine plus d’une demi-journée à constituer l’emploi du temps de la semaine suivante.

Les recherches que j’ai fait sur Internet pour essayer de dénicher un logiciel pouvant gérer cela sans modifier les habitudes déjà prises au magasin (j’estime que c’est aux logiciels de s’adapter aux organisations et non l’inverse) et de préférence disponible en Open Source se sont soldées par un échec et après l’avoir vu une nouvelle fois gâcher son week-end à travailler sur l’emploi du temps je me suis résolu à écrire mon propre système pour gérer cela.

Ce type de problème me rappelait pourtant de mauvais souvenirs, l’optimisation sous contraintes restant pour de nombreux centraliens de ma promotion synonyme de « Simplexe« , un des points les plus obscurs du cours d’analyse numérique…

Pour éviter cela, j’ai décidé de mettre en pratique les rudiments d’algorithmes génétiques que j’avais récemment acquis grâce au livre fascinant de Toby Segaran : « Programming Collective Intelligence« .

Et ça marche!

C’est sans doute un des problèmes les plus complexes que j’ai dû résoudre et l’efficacité de cette méthode est simplement ahurissante.

En deux mots, les algorithmes génétiques appliquent à la recherche de solutions des techniques empruntées à l’évolution naturelles des espèces : on part d’une population de solutions générées aléatoirement que l’on note et on les améliore, génération après génération par des sélections et des mutations et croisements aléatoires.

Les deux principales difficultés sont la modélisation et la notation des solutions, le reste étant de la programmation classique sans grande difficulté.

C’est une manière de programmer – et de raisonner! – totalement nouvelle pour moi. Elle est fascinante par le parallèle entre ces populations de solutions et la biodiversité du monde qui nous entourent et l’observation de la manière dont convergent ces solutions alimente toutes sortes de réflexions…

J’aime beaucoup ce type de projets courts dont la richesse repose sur quelques idées simples.

Un demi siècle

J’ai cinquante ans depuis dimanche et me propose de faire un rapide survol de ces cinq décennies…

1958

Je suis né en au Raincy en 1958 mais n’ai pu rester que quelques mois dans cette commune du « neuf trois » qui s’appelait encore Seine et Oise : mes parents louaient un meublé chez une vieille dame qui ne supportait pas les enfants et nous a expulsé peu après ma naissance.

Les effets du baby boom se faisaient encore cruellement sentir et nous avons du revenir habiter chez mes grands parents dans un petit deux pièces pendant plusieurs années avant de pouvoir trouver un appartement dans un HLM.

1958 c’est aussi (entre autres) :

1968

Un matin de printemps je découvre que les portes de l’école primaire Jean Jaurès de Villeneuve la Garenne dans laquelle je suis élève en classe de CM2 sont verrouillées par de grosses chaînes. Une affiche nous informe que l’école est fermée jusqu’à nouvel ordre et je rentre chez moi.

J’apprécie beaucoup ces vacances imprévues pendant lesquelles nous suivons fébrilement les informations à la radio et où tout le monde discute politique et se prend à refaire le monde. Peu de temps après, c’est au tour de mon père de rentrer à la maison. Je n’ai jamais compris s’il faisait grève ou s’il avait simplement été empêché d’aller travailler, mais le laboratoire de Saint-Gobain dans lequel il travaille est lui aussi fermé.

L’essence se met ensuite à manquer et nous redécouvrons un monde sans voiture où l’on se déplace à pieds et en vélo. Le temps est comme suspendu et Villeneuve la Garenne semble loin de tout.

1968 c’est aussi (entre autres) :

1978

A la fin du printemps, je passe les concours d’entrée aux grandes écoles et entreprend seul en vélo un long périple de Viarmes dans le Val d’Oise aux portes de la Picardie jusqu’à Tarragone au sud de la Catalogne.

Ce voyage me permet de tourner la page de deux années de « taupe« .

C’est en Auvergne que mon père me donne au téléphone les résultats des concours et que j’apprends que je suis accepté à l’Ecole Centrale de Paris et je profite pleinement de ces moments de liberté avant une orientation que j’ai choisi par défaut de vocation.

En seconde, j’avais essayé en vain de convaincre mes parents de quitter la région parisienne pour reprendre une ferme dans les Cévennes et avais ensuite caressé l’idée de devenir menuisier mais avait fini par me laisser guider par mes professeurs vers une voie plus conforme à mes « capacités ».

C’est à l’Ecole Centrale que je rencontrerai deux ans plus tard ma femme Catherine et le bilan des trois années que j’y passerai ne sera donc pas entièrement négatif mais j’aurai du mal à supporter le discours dominant nous répétant à longueur de temps que nous étions l’élite de la jeunesse française.

Ma réaction à ce matraquage consistera dans un premier temps à me réfugier au CTI (Centre de Traitement Informatique) dans lequel nous programmions un vénérable Iris 45 au moyen de cartes perforées avant de me consacrer au journal de l’école, le PI (Piston Information) dans lequel j’exposais mes idées de manière aussi polémique que violente.

1978 c’est aussi (entre autres) :

1988

Après trois ans d’études à l’Ecole Centrale et dix huit mois de travail pour le CNRS dans le cadre du service national dont un an passé à l’île Amsterdam, je suis entré dans la vie « active ». J’ai travaillé pendant cinq ans chez TRT, une filiale du groupe Philips.

J’ai beaucoup hésité avant de quitter le CNRS où je travaillais sur la mesure du taux de CO2 dans l’air et où le problème de réchauffement climatique était déjà bien connu, mais le laboratoire dans lequel je travaillais n’embauchait en moyenne d’une demi chercheur par an et il m’aurait fallu faire au moins trois ans d’études pour obtenir un DEA et un doctorat payé en dessous du SMIC avant d’avoir une chance sur deux d’intégrer l’équipe… J’ai donc cédé à la facilité en acceptant une des offres d’emplois qui nous arrivaient de manière quasiment spontanée à notre sortie de l’école.

Je me suis bien intégré chez TRT et trouvais mon travail plutôt intéressant mais je ne me sentais pas bien à ma place dans une société de cette taille et en janvier 1988 je rejoins Anator, une petite société indépendante d’une vingtaine de personnes.

Je suis marié avec Catherine, nous avons deux enfants de un et trois ans et nous vivons rue Ginoux, dans le 15ème arrondissement de Paris.

1988 c’est aussi (entre autres) :

1998

Après deux petites entreprises, Anator et Esterel, j’ai rejoint Sybase en 1993 et au début 1998, j’y suis responsable européen du support de deuxième niveau de la gamme serveurs de données.

Bien qu’étant plutôt allergique aux grands évènements sportifs, il m’est difficile d’ignorer la coupe du monde cette année là : l’architecture informatique de son système de gestion utilisait beaucoup de produits Sybase et mon équipe aurait été en première ligne en cas de problème technique.

Il faut donc organiser les astreintes et le fonctionnement du support technique 24 heures sur 24 en utilisant le réseau de support « follow the sun » permettant de mobiliser des équipes Sybase se relayant sur tous les continents.

En marge de toute cette excitation, il faut gérer des tâches moins prestigieuses : Sybase qui a été pendant un temps la société croissant le plus vite sur le Nasdaq paie le prix de sa stratégie de croissance forcenée. Le mot d’ordre « get big fast » s’avère insuffisant sur le long terme, le chiffre d’affaire se met à stagner et chaque manager doit donner des noms pour le prochain plan social.

Je décide de tenter ma chance et à l’automne 1998, j’ajoute mon nom sur la liste ce qui me permet aussi de ménager mon équipe…

Chez Sybase, j’ai découvert Internet et les logiciels libres. J’ai aussi beaucoup aimé l’ambiance et le travail du support technique et j’essaye d’abord de lancer une société de support technique autour des logiciels libres.

Mon idée est de proposer aux grands comptes des contrats de supports similaires à ceux qu’ils souscrivent auprès des éditeurs de logiciels classiques et portant sur l’ensemble des logiciels libres qu’ils utilisent. Je suis convaincu que l’absence d’une telle offre freine l’adoption des logiciels libres et que l’arrivée d’internet permet de faciliter les communications avec les clients et avec les développeurs et donc de réduire les coûts.

Puisque le projet se nourrira du développement des logiciels libres qu’il favorisera à son tour, je l’appelle Amphyprion en référence au poisson clown de la famille des amphiprioninae qui vit en osmose avec son anémone.

Avec deux complices, je pars à l’assaut des sociétés de capital risque et la première que nous contactons semble intéressée. Nous discutons assez longuement avec elle avant qu’elle nous dise qu’elle ne donnera pas suite parce que notre projet semble manquer d' »effet de levier ». Nous sommes avant l’éclatement de la bulle internet et les capitaux risqueurs cherchent des niveaux de gain qu’une société de service ne peut pas assurer!

Après ce premier revers, mes deux acolytes se découragent et trouvent un homme miracle, un investisseur prêt à financer le projet à ses débuts et à en prendre la direction, ce qui m’enchante moins. Ne voyant pas ma place dans le projet tel qu’il se redessine, je les laisse poursuivre créer open care sans moi.

Après cette péripétie, je me tourne vers une activité plus classique de conseil et crée Dyomedea au début de l’année 1999.

Catherine et moi avons maintenant quatre enfants de cinq, huit, onze et treize ans. Nous habitons toujours dans le 15ème arrondissement mais nous avons déménagé rue Edgar Faure.

Nous avons acheté une maison de campagne aux Préaux en 1994 lorsque nous nous sommes aperçus que nos enfants étaient ébahis quand ils voyaient une vache. Nos week-ends sont donc consacrés au jardinage et nous entreprenons de planter des arbres fruitiers sur le terrain de 1,7 ha qui l’entoure.

L’effet sur la santé des enfants est surprenant : depuis que nous les emmenons régulièrement à la campagne, la plupart des maladies bénignes qu’ils avaient auparavant disparaissent et le rythme de nos visites chez le pédiatre diminue fortement!

1998 c’est aussi (entre autres) :

2008

Après « du côté de » un projet de site web de quartier pour lequel je n’ai pas réussi à trouver de modèle économique viable, j’ai développé une activité de conseil et de formation autour des technologies XML et suis rapidement devenu un expert international reconnu dans mes domaines d’excellence.

Cela va faire dix ans que je travaille comme indépendant et c’est Catherine qui décide de franchir le pas et de quitter Renault pour créer sa société. Cherchant un projet qui soit utile à l’amélioration de la condition humaine et à la protection de la nature, elle décide de créer un magasin de produits biologiques et rejoint le réseau Biocoop dont elle partage les valeurs éthiques.

Le magasin a ouvert ses portes le 20 août et le succès est au rendez-vous puisque tous les objectifs ont été largement dépassés et Catherine a ainsi pu créer une dizaine d’emplois directs.

Il fait partie d’une démarche plus large et nous voulons réorienter notre vie pour être plus proches de la nature et plus respectueux de l’environnement. Le magasin se double ainsi d’une activité de production de fruits : ceux de notre maison de campagne dont le verger est maintenant certifié AB et labellisé Nature & Progrés et à terme ceux d’un second verger que nous avons acheté et commencé à planter au printemps.

Je me suis également lancé dans l’apiculture sous l’impulsion de notre fils cadet et nous avons des ruches depuis 2004.

Il faut donc que j’arrive à trouver un équilibre entre mes activités de conseil et de formation et mes nouvelles activités dans nos vergers qui demanderont de plus en plus de travail à mesure que les arbres grandiront et au magasin dans lequel je ne travaille pas à plein temps mais aide ponctuellement, notamment pour ce qui est de l’informatique et du site internet.

Lorsque nous ne sommes pas à la campagne, nous habitons toujours dans rue Edgar Faure.

2008 c’est aussi (entre autres) :

RSS en campagne

Les agriculteurs AB sont rares en Haute-Normandie dont les bocages ont été transformés en grandes culture partout où c’était possible. Pour briser l’isolement, ils se sont rassemblés au sein de groupements et cherchent à garder le contact par tous les moyens.

En tant qu’arboriculteur AB, nous ne faisons pas exception à la règle et rendons volontiers visite à Paola et Benoît Lelièvre de la ferme de Pincheloup qui sont nos plus proches voisins AB, mais depuis le mois d’août et l’ouverture du magasin, nous avons du quelque peu espacer ces contacts.

Catherine a reçu hier un mail de Paola lui donnant quelques nouvelles et lui disant que nos aventures étaient suivies avec attention par la ferme de Pincheloup grâce… au flux RSS de notre site!

Lorsque j’ai participé à la rédaction de la spécification RSS 1.0 en 2000, j’étais loin de me douter que ce vocabulaire dont j’avais tant de mal à expliquer l’intérêt à mon entourage serait un jour utilisé dans les campagnes et me servirait à mener à bien un projet de nature si différente!