vendredi 23 juillet 2004

Oh, XML.

I remember when I posted a project on SourceForge, I had to categorize it (aka Trove Software Map). Among the different attributes I filled in, there was the language (used for development). Because my code was heavily based on XML (for describing a MMI, a little bit 'à la' XUL), I intended to declare XML.
But when browsing through the available languages, I noticed that XML was not promoted as "first class" language (neither second class, BTW!). Which scared me (I avoided a heart-attack, at last ;-)
I e-mailed something like "I know that XML is not a 'real' programming language, but due to the increase of its usages in programming technics, why not adding it". No answers (apart from two other 'sourceforgers': one who agreed and another who talked me about the non-LALR(1) aspect of XML, sic).

Things are perhaps changing with the arrival of o:XML. I let you go through an interesting overview on XML.com (don't be put off by the classical 'HelloWorld' code snippet: the power of that language is not there!). Let me quote something really important about the strength of o:XML:
o:XML is a practical language, designed to solve practical problems. For many types of applications it already provides faster, easier, better solutions than any other technology. If you are writing code that processes or produces XML, chances are you will benefit from using o:XML.
In fact you really can avoid the pain of XSLT (sometimes), and use o:XML to script your output XML (like JSP in fact). But that's not the only use case: it is far more productive to write o:XML than Java (or C#) to produce simple XML.

So, when you have to produce XML as an output, you have the choice of XSLT, XQuery AND o:XML. The later shares with XQuery the advantage of being output format-oriented (try to picture what the output will look like by reading an XSLT stylesheet ;-)

mardi 13 juillet 2004

Est-ce Végé?

(For once, I post in this category a french news about SVG; for non french-aware brains, they should retain that: 1°) the title is a (sort of) play on words about SVG, 2°) there are (at least) two OpenSource SVG editor available out there 3°) there is a very good zine in french on SVG - That's all folks!)

Je viens de découvrir 2 éditeurs SVG en OpenSource:
Chacun avec des galleries amusantes (pas mal de manga, mais aussi des logos comme Tux pour Solipodi).
D'ailleurs, à propos de gallerie, il y a http://openclipart.org qui contient tout un lot de dessins bien sympaSVG

Et bien sûr le site français traitant du sujet (http://svgfr.org/). Lequel nous apprend que les fabriquants de téléphones portables s'emballent pour SVG (Sony, Nokia, Siemens).

vendredi 4 juin 2004

Richard Feynman

Il y a deux types de génies: les génies "ordinaires" et les "magiciens". Un génie ordinaire est un type comme vous et moi pourrions l'être, si nous étions infiniment plus intelligents. La manière dont son esprit fonctionne n'est pas un mystère. Dès que nous comprenons ce qu'il a fait, nous sommes alors persuadués que nous aurions pu faire de même.
Les magiciens sont différents. Ils sont, en jargon mathématique, dans le complément "orthogonal" de l'endroit où nous nous trouvons, le fonctionnement de leur esprit nous est totalement incompréhensible. Même quand nous comprenons ce qu'ils ont fait, le processus par lequel ils y sont arrivés nous est inaccessible. Ils n'ont que très rarement, voire jamais,n d'élèves, parce qu'ils ne peuvent pas être imités et qu'il doit être terriblement frustrant pour un jeune esprit brillant d'être confronté aux voies impénétrables de l'esprit d'un magicien. Richard Feynman est un magicien d'un niveau exceptionnel.
Marc Kac (1914-1984), Enigmas of Chance, 1995 

Un conseil: lire le dossier sur ce magicien dans le hors-série "Les Génies de la Science" de Pour La Science de (mai-août 2004). Un régal.

jeudi 3 juin 2004

Willy: le poids de l'Or (sic), le choc de l'Intelligence humaine

Mon pote Willy est un gars extraordinaire, à plusieurs points de vue.

Techniquement, c'est lui qui m'a mis le pied à l'étrier sur Java et XML. Merci de m'avoir coaché: un vrai Guru qui a le nez fin.
Physiquement (au sens de "La Physique"; mais j'aurai pu dire "Mathématiquement" qui m'aurait fait passer à côté d'un quiproquo amusant), il m'a refait prendre goût à un tas de choses que j'adorais du temps de mes études de prépa. Les Maths tout d'abord et ensuite une certaine partie de la Physique (celle des Trous Noirs, de la Relativité, de la Physique Quantique, de la Théorie des Cordes, de la Gravité Quantique). Il prétend n'y rien comprendre, mais c'est faux! Il a cette capacité d'en retenir l'essentiel et de faire partager son goût par des anecdotes motivantes.
Musicalement, c'est lui qui m'a permis de découvrir les Bénabar, Vincent Delerme et autres Sanseverino. C'aurait été dommage de passer à côté de ces grands "renouvellants" de la chanson française.
Humainement, il est passionnant. Plein d'humour, toujours positif (même lorsqu'il est englué dans les soucis perso ou pro). Son jugement sur les gens est fiable et pénétrant, jamais méchant, toujours avisé et sans complaisance.

Un regret?
Ben ouais: je n'ai pas réussi à son contact à prendre goût aux échecs (comprenez le jeu de stratégie; pour le reste, je ne l'ai jamais vu en subir un seul). Et pourtant, ce n'est pas faute de m'entretenir sur ce jeu merveilleux, sur les prouesses étonnantes de sa progéniture, sur ses propres talents. Dommage pour moi.

Mais il n'est pas trop tard (ceci n'est pas une bio-posthume!), même si je ne verrai dorénavant plus mon très cher complice au quotidien: nos chemins professionnels divergent, après plusieurs années de collaboration hédonistique.

S'il vous arrive de le côtoyer, soyez bien conscient qu'on n'en rencontre pas deux comme lui dans toute une vie; il est un bain de jouvence intellectuel permanent et c'est un pur plaisir que de plaisanter avec lui.


Bon vent, mon ami, mon mentor, je regrette déjà nos "revues de pipe" (private joke, sorry for that).

samedi 29 mai 2004

Êtes-vous atteint du NIH ?

Le NIH est le syndrome du " Not Invented Here ". Il s'agit d'une forme fréquente d'autisme dont sont atteintes certaines organisations, et en particulier celles développant du logiciel. Elle fait partie de la famille des affections caractérisées par : " le re-use ne passera pas par moi ". Les organismes infectés refusent (sciemment ou non) d'utiliser ou ré-utiliser des briques logiciel existantes (au sens large) lorsque l'occasion se présente. Le NIH peut s'attaquer à un individu isolé, à un groupe, à un service voire même dans certains cas à une entreprise entière.

Pourquoi ce syndrome frappe-t-il, alors que tout le monde s'accorde sur la vanité de la ré-invention de la roue ? Sans classifier toutes les causes, passons en revue les plus typiques, celles rencontrées le plus fréquemment.
Au premier rang, on trouve la méconnaissance. Telle organisation se lance dans le développement coûteux et complexe d'une couche logiciel (prenons un pool de connexion à une base de données pour fixer les idées). Ce n'est pas son métier, mais qu'importe on investit. Qui plus est, à aucun moment le recensement et l'étude des solutions existantes ne sont réalisés. Le seul credo (bien que non établit comme une doctrine mais plutôt une sorte de douce paresse intellectuelle) est " j'en ai besoin donc je le développe ! " Le NIH a fait une nouvelle victime. Cependant cette absence de stratégie claire, bien que gênante, n'est pas méprisable. Maintenant que vous êtes prévenus, soyez vigilants. Après les innocentes victimes, nous trouvons les premiers malades volontaires. Ceux-là sont de la catégorie des hédonistes. Ils aiment se faire plaisir et le savent. Ils re-développent volontiers un calendrier en HTML pour la beauté du geste, alors qu'il en existe en pagaille qui ne demandent qu'à être utilisés et améliorés. Les mêmes implémentent leur propre couche de mapping Objet-Relationnel en balayant d'un revers de la main celles qui existent ou alors écrivent leur propre DTD XML singeant une version existante afin de laisser leur empreinte. Regardez autour de vous, il est presque certain que vous pourrez débusquer ces malades-là : ils sont dangereux.
Mais pires sont ceux atteint de la forme perverse du NIH. On pourrait la résumer par " Not Invented By Me ". Elle survient lorsqu'une entité refuse de ré-utiliser le travail de l'entité d'à-côté pour le refaire à sa façon. Elle sévit le plus souvent dans les grandes structures et est très inquiétante et en tout cas contre-productive.

Les solutions sont pourtant simples et bien connues. Elles reposent sur l'éducation, la curiosité et la confiance.
L'éducation car c'est par elle que s'acquiert le tissu des connaissances indispensables à des décisions argumentées et maîtrisées. Il s'agit de toutes les lectures possibles (presse papier ou électronique, livres et autres documents comme les " white paper " ou les " FAQ "), mais aussi de la formation, des séminaires et des réunions (eh oui, on peut apprendre des choses fort instructives dans une réunion bien menée !). Mais cela ne serait rien sans l'indispensable curiosité qui doit nous habiter quotidiennement sous peine de s'encroûter dans un carcan d'ignorance. Comment peut-on encore manquer de curiosité quand on baigne dans un luxe d'informations mises à disposition avec force moyens. Pour ne parler que d'Internet, il y a les innombrables sites Web, les mailing-lists et leurs contre-parties que sont les forums de discussion : à eux trois, ces points d'accès à l'information sont les piliers des curieux. Et puis, pour être un peu philosophe, être curieux c'est déjà une démarche vers les autres et leur travail, donc un bon facteur de cure contre le NIH. Enfin, la confiance est peut-être la clé de voûte des mesures prophylactiques. Mais c'est aussi la plus dure à acquérir et à garder pour les deux parties (d'ailleurs, bien souvent, la confiance qui aura été trompée sera perdue à jamais). Mais ce joyau, une fois acquis, devient un pourfendeur de NIH quasi inextinguible. Car avec la confiance, on peut baser son travail sur celui que d'autres auront mis à notre disposition.
Ces trois qualités permettent donc aux organisations (et aux membres qui les constituent) d'avoir l'aptitude à choisir parmi les solutions existantes ; qu'elles soient issues d'un éditeur de logiciel, de la communauté OpenSource ou bien sûr des développements internes déjà réalisés.

Donc, le NIH est une sorte d'ignorance (souvent passive parfois perfidement active). Mais certaines circonstances peuvent nous amener à considérer que le NIH peut être une arme stratégique, une volonté affirmée. Ainsi, le fait d'être la seule organisation à posséder un composant logiciel peut constituer un avantage concurrentiel non négligeable. Ne pas élaborer son Système d'Informations (ou une partie de celui-ci) comme la réplique de la concurrence est une volonté délibérée que l'on constate de plus en plus. (Est-ce pour autant la fin des progiciels ?). Dans ce cas, le NIH n'est plus subit comme un syndrome mais affiché comme une politique, une ligne de conduite (ponctuelle ou sur le long terme, localisée à une entité du SI ou étendue plus largement) assurant innovation et différentiation.
Dans tous les cas, luttons contre le NIH-ignorance soit par l'adoption des composants existants (en les étoffant ou modifiant si nécessaire), soit en se fortifiant (vis-à-vis de la concurrence) par des développements spécifiques innovants (et différenciateurs).

< !-- ********* Dimanche 28 Avril 2002 ********* posté le 29 Mai 2004--> /** * Êtes-vous atteint du NIH ? * * * par Charles-Antoine Poirier * * * * Copyright (c) 2002, Charles-Antoine Poirier. Le contenu de ce document peut être * redistribué sous les conditions énoncées dans la Licence pour Documents Libres version * 1.1 ou ultérieure. (http://garp.univ-bpclermont.fr/guilde/Guilde/Licence/) */

vendredi 28 mai 2004

Se rassurer sans se laisser aller...

On vient de me faire part d'une merveilleuse maxime à propos de modestie et d'auto-satisfaction:

"Quand on se mesure, on se fait peur; Mais quand on se compare, on se rassure"

Conclusion: quand on a un grand niveau d'exigences envers soi-même, on se met souvent une pression terrible. Elle n'est pas toujours justifiée en regard de ce que produisent/attendent les autres...
J'aime bien cette sentence, mais il faut veiller à ne pas tomber dans la médiocrité en s'accordant des satisfecit complaisants.

mardi 22 juillet 2003

Testing in OpenSource

There is a comprehensive paper dealing with application Testing on an ObjectWeb sub-site. 
It deals with 7 major OpenSource testing suites available (OpenSTA, JMeter, ...) and it compares to the (current) commercial leader from Mercury. 
All allow testing Web applications (some including WebServices-based). Very few care about other protocols (such as SMTP or FTP). 

It has been updated on May 2003.

jeudi 17 juillet 2003

XSL:for-each-group: a starter

Have you ever encoutered a flat XML file? 
I know it sounds a little bit weird, but they exist; even more, they are very commons. 
In fact, they could be seen as an XML-isation of a trivial flat file (think csv file) or a single RDMS table (I do not mean it is a best practice in the later cases) 
But where I find them very useful is for resources/properties/configuration files (or whatever you call them!): they are files generally edited by hand which contain every single parameter your application mandates for running. 
The flatness comes from the absence of hierarchy: in french, we would say it is a "rateau" (a rake). Here is an exemple of such a rake-file ;-)

<Resources>
<user name="Gosling" firstname="James" company="Sun" group="guru"/>
<user name="Kay" firstname="Michael" company="SoftwareAG" group="guru"/>
<user name="Poirier" firstname="Charles-Antoine" company="WorldCompany" group="beginner"/>
</Resources>

From such a file, very often comes the need to get a hierarchical view; by instance, one focused on 'company' or 'group'.

That hierarchical view could be needed for producing another XML file, sending a stream over the wire or get an in-memory tree-view of those resources.

An example of such an hierarchical perspective could be as follow (I apologize for being too much 'hierarchical' in that example ;-)):
 
<Groups>
<Group type="guru">
<Member fromCompany="Sun">
<FirstName>James</FirstName>
<LastName>Gosling</LastName>
<Member>
<Member fromCompany="SofwareAG">
<FirstName>Michael</FirstName>
<LastName>Kay</LastName>
<Member>
</Group>
<Group type="beginner">
<Member fromCompany="WorldCompany">
<FirstName>Charles-Antoine</FirstName>
<LastName>Poirier</LastName>
<Member>
</Group>
</Groups>


Obviously to go from <Resources>-XML to <Groups>-XML, you are already thinking to ... XSLT.

To be more precise, you certainly envision XSLT 2.0 which contains a very rich new feature: xsl:for-each-group. It enables you to get something similar to SQL-'Group-By'.

As an example, here the XSLT which allow the aforementioned transformation:
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent='yes' method='xml' encoding="ISO-8859-1" />

<xsl:template match="/">
<Groups>
<!-- "sort" 'user' by 'group' -->
<xsl:for-each-group select="//user" group-by="@group"> <!-- group-by group is not a joke!!! -->
<xsl:element name="Group"> <!-- Creates a new 'Group' element as needed -->
<xsl:attribute name="type"><xsl:value-of select="@group"/></xsl:attribute>

<xsl:for-each select="current-group()"><!-- Iterate over the XSL-group to create 'Member's -->
<xsl:element name="Member">
<xsl:attribute name="fromCompany"><xsl:value-of select="@company"/></xsl:attribute>
<FirstName><xsl:value-of select="@firstname"/></FirstName>
<LastName><xsl:value-of select="@name"/></LastName>
</xsl:element>
</xsl:for-each>

</xsl:element>
</xsl:for-each-group>
</Groups>
</xsl:template>
</xsl:transform>


This is a very simple case where you can take advantage of this wonderful new feature (using Saxon makes it rock!). It leads to very elegant (and readable) XSLT code (and that's not the least)

lundi 14 juillet 2003

Cultiver son Jardin d'Amour

D'enfer!!! 
Ou plutôt "De Paradis". 
Voilà ce qui me vient à l'esprit après avoir lu "L'île des Gauchers" d'Alexandre Jardin

Il y déploie un thème qui lui est cher (du moins il me semble): "comment aimer?". Tous ceux qui ont déjà lu de ses livres ou plus certainement vu le film "Le Zèbre" (avec Thierry Lhermitte) connaissent les interrogations d'Alexandre Jardin. 
Dans "L'île des Gauchers", l'auteur est moins fantasque que dans "Le Zèbre" mais décrit une monde plus fantastique: une île où la seule occupation essentielle est de savoir aimer (et non pas de se faire aimer!); une inversion salutaire par rapport au monde des droitiers qu'est le nôtre!. 
L'épouse d'un de mes très bons amis prétend que tout couple devrait lire ce livre: elle a complètement raison. On n'y trouve pas de recette miracle (il n'en existe pas de générique) mais des réflexions pleines d'imagination pour tenter de savoir mieux aimer, tolérer, comprendre et partager. 

"L'île des Gauchers" fait partie de ces rares livres qui vous structurent la tête pour longtemps tout en vous rafraîchissant les neurones du plaisir littéraire par son style et son inventivité. Candide aurait adoré!

Robin, c'est un gars 'bat'

Toujours sans polémique sur les navigateurs, il faut quand même reconnaître que Mozilla (ou son prochain successeur: Firebird) permet de faire de bien belles choses.

Vous pointez donc le meilleur navigateur du monde (arrggh çà y est, j'ai craqué! J'suis tombé dans la Paule-Emique! Mais j'me soigne: je rédige ce blog sous IE ;-) Donc vous allez sur Robin chef sf.net (sans tricher: IE ne vous conduira nulle part [du moins ce coup-ci!])
Et là, vous tombez sur une page qui représente ... un desktop; si si, un desktop avec son petit bouton "Démarrer" (enfin "Launch" dans le texte) accompagné de son petit menu déroulant et de l'heure à droite, son fond d'écran psychédélique et le menu associé.
Bon, alors on peut commencer à faire joujou avec les menus. Et là, c'est le festival de l'inutile (donc de l'indispensable): un démineur, un tétris, un pac-man, un astéroïd, un snake, un invaders, ... Chacun dans sa petite fenêtre dans la page Web; et elles bougent, s'iconifient, se maximisent et meurent! Vraiment balaise le gars...

Et c'est quoi qui permet donc ce petit miracle (à part le meilleur navigateur du ...)?
XML bien sûr. En l'occurrence: XUL (prononcer "zul") pour XML User interface Language. Avec un chouia d'aide de JavaScript, of course.

Ah oui, j'oubliais de mentionner la seule appli utile: un navigateur Web... (dur le coup dans l'estomac en fin de blog, hein?) Et "oui", la réponse est "oui" (sachant que la question normale que vous devriez vous poser est: "est-ce que ce navigateur permet de recharger Robin?"). Bien sûr que je me suis amusé à récurrencer: je n'ai pas eu la patience de trouver à partir de quand çà plante (je me suis arrêté à 3 niveaux!)