30 juin 2008

Kazeii.com - Gérer, suivre, partager sa construction de maison

Fin 2007 et début 2008, je m’étais lancé avec un copain établi près de Toulouse, Jérémy Girard, dans l’aventure d’une start-up web. Le thème : suivi de projets de construction de logements individuels et collectifs.

Il s’agissait d’une plate-forme web classique, de blogging, d’albums photos, etc. au service des particuliers qui font construire leur maison, cela afin de leur permettre de montrer aux copains et à la famille l’avancement des travaux (les internautes qui font construire ouvrent souvent un blog pour cela), d’avoir une vision synthétique des différentes étapes, voire d’utiliser la plate-forme pour gérer ses postes comptables et faciliter ses échanges avec l’architecte ou le maître d’œuvre. Le fait d'avoir une plate-forme centralisée pour plusieurs blogs de constructions, permettait également de créer une communauté autour du sujet.

L’idée est simple, et très bonne à mon avis. On avait pas mal dégrossi le concept, pondu un Business Model, demandé leurs avis à plusieurs professionnels, sans compter évidemment les particuliers rencontrés, puis commencé le développement. Étant tous les deux développeurs Java, ça travaillait fort.

Malheureusement, après un bout de chemin ensemble, il m’est apparu que l’équipe de Batilog.com (nom initial du projet) ne fonctionnait pas avec une vision commune. Proche, mais pas commune. Or dans un projet comme celui-là, l’énergie étant forcément présente, ce qui compte c’est la cohérence. Malgré les indéniables qualités humaines de part et d’autre, et le bon feeling, j’ai donc pris la sage décision de sortir du projet en l’état. Sage décision à mon avis en terme d’entrepreneuriat. Jérémy a continué d’arrache-pied seul pour sortir une version publique (ne me demandez pas quelle aurait été ma position : vous m’avez vu sortir une version publique dans les mêmes délais ? ;-) que voici : Kazeii.com - Gérer, suivre, partager sa construction de maison.

La version a été rendue publique hier dimanche 29 juin 2008, et il y a déjà presque 100 inscrits !

Je voudrais chaleureusement féliciter Jérémy pour avoir lancé son site. Grand bravo, et le succès pour cette implémentation d’une très bonne idée ! Il n’y a qu’à lire certains commentaires pour voir que l’accueil est positif ; Jérémy a fait connaître son site dans divers forums francophones, notamment par ici : Forum BricoZone - Sujet : Comment assurer un bon suivi de sa construction.

Bonne route Jérémy :-)

27 juin 2008

La vérification à la compilation, c'est bien

Soit un modèle où l'on diffère, sous forme de commandes, des appels à passer à une certaine classe. Par exemple, dans le cas où l'implémentation finale de la classe est distante, on souhaite passer tous les appels dans une seule connexion réseau : on va donc trouver un moyen de « sérialiser » les intentions d'appels, en général sous forme de texte, on les enverra en lot, puis côté serveur la liste sera détricotée, les appels passés, et on retournera la liste des résultats (dans le cas où tout se passe bien).

Pour illustrer le problème, disons que l'interface de la classe distante s'appelle « Toto », avec les méthodes « doSomething(int, int) » et « doSomethingElse(String) ».

On faisait jusqu'ici un appel réseau pour chaque invocation :


Avec le code Java ci-dessous :
final Toto toto = <proxy>; // proxy pour appel distant

toto.doSomething(2, 5); // 1er appel
toto.doSomething(14, 8); // 2e appel
toto.doSomethingElse("Fantastic!"); // 3e appel
toto.doSomething(0, 1); // 4e appel
Après s'être aperçu qu'on pouvait gagner en performances, nous décidons que du point de vue du réseau il n'y aura qu'un appel, qui agrègera les invocations :


Eh bien je ne sais pas pourquoi, mais pour faire ça certains pensent à écrire la chose suivante :
final Commands commands = new Commands(Toto.class);

commands.storeCommand("doSomething", 2, 5); // 1er
commands.storeCommand("doSomething", 14, 8); // 2e
commands.storeCommand("doSomethingElse", "Fantastic!"); // 3e
commands.storeCommand("doSomething", 0, 1); // 4e

CommandUtils.executeCommands(<proxy>, commands);
C'est tout à fait dommage, car on perd l'avantage de la vérification à la compilation : si on se trompe dans une chaîne de caractères qui contient un nom de méthode, ou dans le type des paramètres d'une méthode, on ne s'en apercevra qu'à l'exécution.

En fait il faut s'arranger pour pouvoir coder ainsi :
final Toto toto = FutureUtils.newFuture(Toto.class);

toto.doSomething(2, 5); // 1er appel
toto.doSomething(14, 8); // 2e appel
toto.doSomethingElse("Fantastic!"); // 3e appel
toto.doSomething(0, 1); // 4e appel

FutureUtils.execute(
<proxy>);
C'est-à-dire qu'il faut s'appuyer le plus possible sur ce qui compile... déjà.

Un très bon modèle pour penser de cette façon, est EasyMock : ce framework d'aide aux tests permet d'enregistrer les appels à contrôler par du code d'appel ! On a donc la vérification de la syntaxe à la compilation, puis évidemment la vérification de la séquence à l'exécution.

23 juin 2008

Message de maintenance

L'hébergeur Online a procédé ce week-end à un changement de plate-forme technique du site de ma société Avantage Compris. Du coup plus rien ne fonctionnait. Pour seulement 5 simples pages, c'était un peu dommage.

Ça y est, c'est rétabli.

Pour les techniciens, attention à passer vos XSLT en UTF-8 : certaines configurations de Sablotron n'acceptent pas l'ISO-8859-1 dans les feuilles de styles (mais pour le XML en entrée, bien).

13 juin 2008

L'Irlande a dit non au traité de Lisbonne

Apparemment les Irlandais qui ont profité de la chance que leur démocratie à eux leur permet de s'exprimer sur un sujet qui les engage au sein de l'Union Européenne, ont répondu majoritairement « non » à la question qui leur était posée quant à la ratification par leur pays du traité de Lisbonne, lui-même vendu comme un mini-traité remplaçant le TCE, qui en 2005 avait déjà montré le gouffre abyssal entre certaines couches de la population européenne, notamment de la population française, et les élites-zet-dirigeants.

La démocratie est un sujet qui me tient à cœur. Peut-être plus encore que l'Europe, c'est dire. Ainsi le projet « Les Fûts » est, ou fut, un projet d'empowerment de citoyens, en l'occurrence de citoyens déjà engagés dans l'action collective et associative.

Pour en revenir à ce 13 juin 2008, je trouve admirable que les Irlandais aient dans leur Constitution une clause qui à oblige à organiser un référendum pour un sujet de cette nature. Je trouve évidemment lamentable qu'on ne prenne pas en compte le « non » français de 2005.

Car quelle que soit ma virulence à défendre le « oui », je suis avant tout pour un régime démocratique, c'est-à-dire qui donne le pouvoir à un peuple qui a les moyens d'en être responsable. Quand la question se résume à « vous sentez-vous prêt(s) à ratifier ce traité que vous avez dit à maintes reprises incompréhensible et loin de vos préoccupation ? », je trouve sain, je trouve hygiénique, que la réponse soit « non » quand les citoyens consultés ne se sentent effectivement pas prêts.

Je lis çà et là qu'il y aurait eu 885 000 Irlandais à voter non, contre 764 000 ouis, sur un traité qui doit être ratifié à l'unanimité au sein de 27 pays qui comptent au total 500 millions d'habitants. Ce sont les règles que nous nous sommes fixées, simple constat.

Une première remarque, qui me trouble énormément, c'est que si sur lesdits 27 pays, disons, 20 étaient à ce point pour le « oui », que n'ont-ils uni leurs forces de propagande (médias, conférences, meetings... ils avaient même les moyens de faire des films et de les diffuser dans les cinémas !) pour agir et faire œuvre éducative, sinon marketing ? La construction européenne les concerne-t-elle aussi peu qu'ils s'en tiennent à pleurer quand le mal est fait ?

L'autre remarque, je la tire d'un adage qui veut que l'éducation et la paix soient sœurs siamoises. En effet, dit vite, l'éducation permet la paix (elle en montre les bienfaits, les limites, la fragilité, les conditions), et la paix permet l'éducation (elle en est une condition). Or nous construisons l'Europe certes pour le bien-être économique et pour que tout le monde parle anglais, mais surtout et avant tout pour la paix. Aujourd'hui d'ailleurs cette paix a de plus en plus une composante écologique. Un corollaire de cette paix, c'est l'éducation, et notamment l'éducation politique, avec ses ramifications dans la plupart des sciences humaines. Ne pas construire l'Europe sur cette base-là, c'est ne pas construire l'Europe dans l'objectif de la paix.

Alors on peut pleurer d'un « non » dû à une inexistante propagande (j'emploie ce mot de façon pragmatique, sans connotation morale) d'État, mais il montre surtout un désintérêt des penseurs de l'Europe pour la question éducative. Et soyons clairs, je ne dis pas que le traité serait passé avec davantage d'éducation, car je ne confonds pas propagande et éducation : je dis qu'avec davantage d'éducation en amont le hiatus, pour le moins, entre ceux qui ont rédigé et manigancé ce traité, et ceux qui étaient consultés, voire ceux qui auraient dû l'être dans une visée démocratique, se serait grandement réduit. En particulier le traité lui-même n'aurait pas été rédigé dans cette forme si complexe. Accorder de l'importance à l'éducation, c'est aussi permettre un certain feedback entre les diverses couches sociales.