Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Amusons nous un peu avec ...

[new:30/08/2011]On ne peut vraiment pas dire que le personnage de Hitler soit sympathique et c’est un doux euphémisme... Ni même qu’il puisse représenter un “héro” auquel on tend naturellement à s’identifier. Encore moins est-il un sujet de plaisanterie. Et chercher un rapport entre cette figure historique plus que contestable avec Silverlight semblerait relever non plus de l’audace ni même de la provocation mais de l’hérésie la plus délirante. Pourtant certaines personnes ont l’art de faire rire avec des choses qui n’ont rien de drôle. En détournant des images du film “La Chute” (2004) où Hitler est interprété de façon grandiose par Bruno Ganz, un développeur à créé une parodie à la fois drôle, déchirante, dramatique, où chacun s’identifie (hélas ?) au personnage principal.Plus...

Le futur de Silverlight (ou Silverlight vs HTML 5)

[new:01/03/2011]En voilà un troll comme il y avait longtemps qu’on n’en avait pas vu, ça fait plaisir Smile. Je résume : HTML5 c’est de la bombe, avec une poignée de balises et le Notepad vous pourrez tout faire et Silverlight autant que Flash sont déjà morts que même d’en parler c’est être un “hasbeen-dinosauresque-à-qui-on-n’ose-plus-parler-à-la-machine-à-café-tellement-il-fait-honte”. On se calme et on regarde les choses sérieusement...Plus...

SeedFucker, Hadopi et C#

Voici un beau cocktail ! Pouvoir à la fois parler de C#, donc en plein dans le sujet de ce blog, et de Hadopi, un système liberticide non pas dans son fondement (le respect de la propriété intellectuel est un sujet sérieux) mais dans sa forme. Vous commencerez à recevoir vos premiers emails le 21 juin, c’est décidé et c’est en route ! Plus...

Le retour du spaghetti vengeur

Le code spaghetti est de retour ! Fuyez braves gens !

Sous-titré : Du Rififi dans le Xaml.

Avertissement au lecteur : ce billet, bien que bâti sur un fond technique préoccupant et une expérience réelle, utilise un formalisme un peu romancé. Ne cherchez pas d’extraits de code ici. Mais si vous avez un peu de temps, laissez vous porter par l’histoire. Si vous êtes pressés, revenez plus tard lire ce billet !

Genèse d’un malaise

Comme vous le savez je suis un passionné de WPF et de Silverlight, la puissance de Xaml servi par un Framework aussi riche que .NET et des outils de qualité comme Blend ou Visual Studio ne peuvent laisser de marbre (comment peut-il y avoir encore des gens travaillant sous Java ou Delphi ?). J’en suis tellement passionné que j’évangélise à tour de bras, ici et ailleurs, et que mes compétences autant techniques que de gardien des brebis égarées me valent d’avoir l’honneur d’être Microsoft MVP, notamment en 2010 pour les technologies de développement d’applications clientes (Client Application Development, “CAD”" MVP).

Bref, si je dis tout cela c’est pour faire comprendre que bien que cultivant mon objectivité comme un joyau précieux garant de la liberté de mes neurones, je suis plutôt “pro” Microsoft et que, bien entendu, cela peut déplaire à certains comme en séduire d’autres… La diversité du monde en fait sa richesse, isn’t it.

Et un partisan de Microsoft, MVP de surcroît, fan de Silverlight, ne dira jamais le moindre mal de sa technologie fétiche… Et soyez-en convaincu je ne briserai pas cette loyauté, essentielle à mes yeux, mais il faut pourtant savoir tirer les sonnettes d’alarme de temps en temps. D’ailleurs c’est une question de crédibilité, que vaudrait un expert sans liberté de parole ni de pensée… Et puis au fond vous verrez que c’est bien plus, comme à chaque fois, l’humain qui en prend pour son grade dans ce récit que les outils, innocents, par nature.

Tout cela pour parler franchement d’un risque, d’une dérive, et surtout d’un grand danger : le retour du code spaghetti ! Et, comble de l’infamie, la peur de cette tare qu’on croyait du passé, je ne la brandis pas à propos de langages ésotériques comme F#, ou de solutions vieillissantes comme Java. Non. Le drame est bien là : c’est de WPF et de Silverlight dont je veux vous entretenir, et ce, au travers d’une anecdote récente.

J’ai fait il y a quelques temps un audit dont je tairais, vous le comprendrez aisément, le nom du client visité ainsi que la date exacte. Au demeurant une société ni trop jeune pour n’être pas assez structurée, ni trop vieille pour en être devenue ringarde. Une entreprise de bonne taille, assez dynamique et assez typique de ma clientèle, se targuant de posséder une équipe de développement à la pointe du progrès, la preuve, puisque maniant les balises Xaml avec la même dextérité que la truelle l’est par un vrai maçon diplômé.

Le trait n’est pas forcé, il n’y en a nul besoin. Ce fut au début un audit “classique” c’est à dire durant lequel j’ai vu du code “normal” donc assez médiocre. Je dis “normal” au sens de la loi normale statistique ce qui signifie que grâce à  messieurs Laplace et Gauss il m’arrive de voir des choses épouvantables comme de pures merveilles, mais que ces deux cas représentent un pourcentage faible au deux bouts de la cloche… Je ne savais pas encore que j’allais atteindre le bout de la cloche. Le mauvais. Bien entendu.

Espèce de spaghetti !

Le code “normal” est médiocre généralement. C’est finalement une définition en soi. Le code exceptionnel, étant, par le même genre de raisonnement, plus rare. C’est finalement une lapalissade. Donc, en général, je vois du code médiocre, donc normal (dans l’autre sens c’est intéressant aussi, non ?).

Et j’appelle médiocre un code qui se caractérise par plusieurs aspects distinctifs très techniques que je détaille avec moult délicatesse dans mes rapports d’audit pour expliquer les choses en y mettant les formes mais qui se résument en général à quelques cas généraux qu’on pourrait caractériser très doctement. Je m’exprimerais ici de façon bien plus directe puisqu’on est “entre nous” :

  •  
    • La “putain” c’est à dire le code sur lequel tout le monde est passé, sauf le train et vous, mais ça, c’est même pas sûr, puisque vous êtes là… C’est du code typique des boîtes où les gens sont mal payé et où les salariés défilent plus vite qu’une hirondelle dans un ciel de printemps…
    • Les migrations de migrations de portage d’intégration (de milles sabords, version 24 bis modifiée E). En général du code qu’on trouve dans les administrations. Avec des documentations de plusieurs centaines de pages, que personne n’a jamais lu bien entendu.
    • Le code mille-feuille. Savoureuse pâtisserie constituée de tant de couches qu’on ne peut les compter, comme les pattes du iule (autrement appelé mille-pattes). C’est un peu un mélange des deux précédents mais en plus structuré que le premier (beaucoup plus, et c’est la son problème) et en moins documenté que le second (beaucoup moins, et c’est aussi là son problème). C’est du code de SSII “in” avec de vrais morceaux de “nouvelles technos” dedans.
    • Le code “start-up”, celui-là est bourré de technos innovantes, hélas non maîtrisées, peu documentées et en bêta ne tournant que sur les versions US de l’environnement. Un code d’essayiste pur travaillant pour la beauté du discours qui va autour plus que pour l’efficacité, des gens qui devraient être en agence de pub plutôt que devant un environnement de développement.
    • Le code à papa, ou l’objet est utilisé comme du C procédural. C’est le code C# écrit par de vieux delphistes ou cobolistes reconvertis sur le tard par exemple.
    • Le code d’ingénieur, un des pires. Sortant de l’école et voulant montrer ses muscles en complexifiant tout et l’enrobant dans une prose technique pleine de sigles bizarres et de référence à des bouquins lus de lui seul et de ses potes de promo. Quand il arrêtera de sucer son pouce, il deviendra un bon développeur sévèrement burné comme disait Tapie. Mais en attendant son code c’est l’enfer…
    • Et enfin, le célèbre, le magnifique, le code spaghetti, marquant l’incompétence à maîtriser la complexité du sujet. Celui-là est typique des mauvaises équipes, tous contextes confondus.

Il y en a bien d’autres dans mon bestiaire, en 20 ans d’audit vous imaginez ce que j’ai pu voir (heureusement je rencontre aussi des équipes compétences et même parfois de l’excellent code, sinon ça serait désespérant !).

Et WPF et Silverlight dans tout ça ?

C’est là que je voulais en venir, mais il fallait bien passer par ce détour pour vous plonger dans l’ambiance trouble de cette descente aux enfers binaires. Sinon cela aurait été d’une platitude redoutable. Un peu de lecture ça change des extraits de code en Xaml. Justement. Parlons de lui et de ce dernier audit (qui n’est pas le dernier, confidentialité oblige comme je le disais plus haut). Disons que c’est assez récent pour être en Xaml mais pas suffisamment pour être en Silverlight 3.

Qu’avait ce code qui vaille ce billet un peu particulier ?

Le code qui rend fou

il m’a rendu fou. Tout simplement ! Et en plus il m’a filé les chocottes !

WPF et Silverlight sont des technologies merveilleuses, Xaml a un pouvoir descriptif exceptionnel à tel point qu’il permet d’économiser beaucoup de code behind.

Malgré le génie des équipes MS ayant travaillé sur le Framework j’aurais malgré tout préféré que cette révolution se fasse à 100% dans le respect du paradigme objet et du fortement typé. Or ce ne fut pas totalement le cas, et si je comprends bien les contraintes techniques sous-jacentes qui ont interdit cet idéal, certains choix sont hélas autant de portes ouvertes sur des risques que je viens de palper de près. Et ça fait peur.

Il y a en premier lieu l’architecture. Il ne suffit pas de prendre Prism et ses Dll pour avoir un bon logiciel. Il faut comprendre et maîtriser la chose. Ce qui ne s’improvise pas. Mais il y a pire, car plus lié à la technologie elle-même.

Par exemple, prenez la syntaxe du Binding, en Xaml donc. Vous avez une balise, vous la complétez d’une propriété et là, au lieu de mettre une valeur, vous ouvrez des accolades américaines suivies du mot Binding, le tout entre guillemets, une simple chaine de caractères. Quant à ce qu’il y a après le mot Binding, je suis convaincu qu’aucun aficionado de WPF ou de Silverlight n’est capable de me citer de tête toutes les combinaisons possibles et astuces disponibles. Parfois  c’est {Binding} tout court, parfois c’est une longue phrase intégrant imbriquées d’autres accolades faisant référence à des ressources statiques ou dynamiques, des paramètres, des convertisseurs, etc… Une puissance énorme, un peu comme les expressions régulières : puissant mais pas très clair (et c’est un euphémisme). Pas clair, on peut s’y faire… mais pas clair et pas fortement typé ni même contrôlé, c’est là que la chute aux enfers commence…

Le code que j’ai audité était bourré d’element binding, de datacontext pointant des conteneurs de services avec des indirections dans tous les sens “pour la souplesse”. Quand MVC et MVVM ne sont pas compris, mieux vaut tout mettre en procédural dans le code-behind de chaque fiche, c’est plus simple à débugger ! Le pire c’est que chacun dans l’équipe y allait de sa petite couche, de sa petite modification. Et je fais du “refactoring” par là, et je refactore par ici… Oui mais voilà, dans les balises Xaml ça commence à danser le cha-cha-cha toutes ses chaînes de caractères non contrôlées, tous ces paramètres de convertisseurs qui ont évolués sans qu’on ait mis à jour les références dans le Xaml, ces ressources statiques et d’autre dynamiques dans des dictionnaires chargés dynamiquement !

Le soft ne tenait plus que par un fil qu’un joyeux drille a du couper juste avant que je n’intervienne. Dommage. Je n’arrivais même pas à dépasser un ou deux écrans avant que ça me pète à la figure. Même avec des outils très intelligents comme NDepend, comprendre le soft était virtuellement impossible.

Quant à savoir d’où vient “le” problème ! C’est le soft lui-même tout entier qui était “le” problème… Ainsi que ceux l’avaient écrit (et ceux qui les dirigent, car un mauvais soft est toujours la cause d’une mauvaise direction bien plus que de mauvais développeurs).

En fait, le Binding Xaml est une porte ouverte sur l’inconnu. Une feature d’une grande puissance, sans laquelle beaucoup du charme disparaîtrait, mais assez déraisonnable dans cette implémentation libre sous forme de chaînes de caractères non compilées. La porte sur le néant, l’incontrôlé, et pire : l’incontrôlable. Un trou noir syntaxique. La damnation du testeur envoyé moisir au purgatoire des pisseurs de ligne. Et l’enfer de l’auditeur.

le Binding au pays des X-Files

Le Data binding Xaml est une jungle syntaxique pas très bien … balisée et totalement déconnectée de toute forme d’analyse à la compilation. du “Late Bugging” comme je m’amuse à appeler cette stratégie de type “late binding”, principe de ligature tardive utilisé d’ailleurs en d’autres endroits et même sous d’autres frameworks. Pire que les Dynamic de C# 4 (pratiques mais dangereux), pire que F# (stimulant mais pas industrialisable), le Binding de Xaml est un gouffre à bugs, un chien fou s’il n’est pas tenu en laisse fermement.

En réalité un marteau ne pourra jamais être jeté aux fers (!) pour le meurtre de qui que ce soit. Un marteau est un outil, et même s’il a servi et servira encore dans de nombreux crimes, un outil est un objet sans âme, sans conscience et donc sans responsabilité. Même un fusil mitrailleur est un objet innocent, même un canon de 105 ou une bombe atomique sont plus innocents que l’agneau qui vient de naître et qui, comme tout être vivant, et à la mesure de son intelligence, portera le poids de la responsabilité de ses agissements. Un outil de développement restera donc à jamais hermétique à tout procès d’intention. A celui qui s’en sert de le faire correctement.

Il en va de même de Xaml, de son data Binding et de bien d’autres de ces facettes. La responsabilité incombera toujours à l’humain qui tient le marteau. A l’informaticien qui tient la souris. Au développeur qui tape un code affreux.

Mais certaines features de Xaml, certains choix conceptuels comme l’utilisation de chaînes de caractères non contrôlées et non parsées à la compilation sont à mon sens des erreurs. Si des projets comme celui que j’ai audité et dont je vous parle ici devenaient courants, nul doute que cela signerait l’arrêt de mort de WPF et de Silverlight. La faute aux mauvais développeurs ? Pas seulement. A ceux aussi qui ont décidé de programmer Xaml de cette façon trop ouverte, trop permissive. On voit bien comment Silverlight a été verrouillé dès le départ par Microsoft. Si le moindre virus, le moindre phishing avait été réalisé avec Silverlight 1 ou 2 c’en était fini des espoirs portés par cette technologie. Microsoft a été méfiant pour préserver l’avenir de la technologie et c’est une bonne chose. Ce que j’ai vu dans le projet WPF dont je parle ici, c’est un peu de la même nature, mais à l’inverse : Microsoft n’a pas verrouillé Xaml comme cela a été fait avec Silverlight. Et si de tels détournements se généralisent c’est toute la technologie qui trinquera. D’ici un an environ, lorsque les projets lancés ces derniers temps seront finalisés, et qu’il faudra compter ceux qui n’aboutiront pas ou qui ne marcheront jamais bien, la note peut être salée pour Xaml. Microsoft a pris un sacré risque en faisant des choix de conception comme celui des balises non compilées (et dans lesquelles même Intellisence se prend les pieds dans le tapis).

Déjà sous Delphi je voyais souvent ce genre de code spaghetti avec des variables globales référencées n’importe où, des fiches utilisant des variables d’autres fiches jusqu’à créer des chaines de dépendances ingérables. J’ai vu des codes de ce type ne pouvoir jamais aboutir. Il m’est même arrivé une fois de réécrire en 15 jours proprement à partir de zéro un soft développés en 1 an par deux personnes sans le dire au client histoire que les 15 jours d’expertise qu’il m’avait payés servent à quelque chose… Je tairais ici le nom du client (une administration). J’étais plus jeune et je voulais me prouver des choses certainement, mais personne ne l’a jamais su jusqu’à ce billet (et encore vous en savez peu!). En tout cas ce projet là je l’ai sauvé. Mais être un pompier de l’ombre n’est pas ma vocation. Les gars étaient malgré tout étonnés ne pas vraiment s’y retrouver dans “leur” code. Amusante situation. Je n’avais rien gardé de “leur” code :-) Mais le soft marchait…

Mais avec Xaml, et une puissance décuplée, je viens de voir des horreurs du même genre alors que depuis des années, je commençais à trouver que C# incitait plutôt à faire du code “correct”, le niveau étant globalement meilleur que celui que je voyais sur Delphi. Et patatras ! Xaml arrive avec ces chausses-trappes dans lesquels les développeurs s’engouffrent. La faute à Xaml ? Pas totalement, mais si tout était typé et contrôlé à la compilation certaines mauvaises utilisations ne seraient pas possibles. Après tout, le fortement typé en soi ça ne sert à rien si on suppose que tous les développeurs sont “bons” ! Mais tous les langages modernes tentent de l’être car on sait que l’humain est faillible. En créant une brèche incontrôlable dans un édifice aussi beau de Xaml, ses concepteurs ont fait un pari risqué. Celui que tous les développeurs sauraient maîtriser le potentiel sans tomber dans ses pièges. Un pari forcément perdu d’avance.

Vision d’horreur

Ce que j’ai vu est donc indescriptible. Un peu comme si j’essayais de décrire Cthulhu. Ceux qui ont essayés sont souvent morts avant de finir d’écrire son nom (ah Lovecraft…) !

Imaginez vous un logiciel de 250 fiches WPF environ utilisant de l’ADO.NET, des bouts de LINQ to SQL, et des nouveautés en Entity Framework, le tout à la sauce Prism / MVC (mais en ayant lu le manuel certainement à l’envers car Prism c’est très bien !) avec des tentatives d’inversion de contrôle (et des dérapages non contrôlés) farci d’un code Xaml bourré de Binding renvoyant vers on ne sait quoi (et hélas pas contrôlé à la compilation), le tout planqué dans 4 ou 5 couches DAL, BOL pré-BOL, post-BOL, et j’en passe, histoire de faire court. La note s’élève a 6000 jours/homme (5 ans/homme environ). Pas un truc gigantesque mais qui commence à faire mal au budget malgré tout.

Agrémentez le tout de deux systèmes de versionning dont aucun n’avait vraiment une version complète du soft, des essais épars de tests unitaires avec MbUnit et VSTS. Vous obtiendrez le tableau. Une œuvre qui dépasse le classicisme habituel de ce point de vue, plus proche du Cubisme que de l’Hyperréalisme tout de même, avec au moins la bonne volonté de faire des petites choses (du mauvais testing prouve au moins qu’on a essayé de tester, ce qui est encore bien rare…). Mais l’enfer est pavé de bonnes intentions, c’est un peu ça le problème.

Le code était impossible à maintenir, les problèmes de performances impossible à cerner sans y passer plus de temps qu’à toute refaire, le code Spaghetti, avec un grand S avait frappé de son coup de poignard vengeur et lâche dans le dos. Une complexité non maîtrisée qui tel l’horizon d’un trou noir aspirait irrémédiablement le bon code vers l’enfer central laissant le hasard faire le tri entre les chemins à prendre… Démêler l’écheveau n’était pas possible, pas plus que de formuler des guidelines sérieusement applicables dans un tel contexte ni aucun conseil pour se sortir d’une telle situation.

Vous imaginez peut-être l’horreur qu’a été l’écriture du rapport d’audit. Entre dire une vérité que personne n’était prêt à entendre et mentir sachant que peu importe ce que je dirais cela passerait mal et qu’au fond mieux valait ne pas trop déplaire… Mon éthique a tranché, j’ai dit la vérité. En l’enrobant. Des heures passées à réécrire deux fois, dix fois certains paragraphes. Ils ne s’en douteront jamais… Et au final un rapport qui sera peut-être classé au fond d’un tiroir car personne ne voulait vraiment savoir ce qui n’allait pas. La remise en question d’un tel échec dépasse de loin le cadre technique et peu de gens savent admettre leurs erreurs, surtout quand toute la chaîne hiérarchique de la base au sommet doit participer à ce questionnement.

Le salaire de la peur

La peur dont je parlais plus haut, les chocottes que cet audit m’a données, c’est d’être confronté au fleuron de la technologie informatique, à des choses en lesquelles je crois car elles marquent un réel progrès et que (bien utilisées) elles permettent justement un code limpide. Cet audit a brisé ce fantasme en me rappelant qu’un marteau pouvait servir au meilleur, comme au crime. Xaml, WPF et Silverlight n’échapperaient pas à la règle et il faudra être vigilant. Surtout que l’avalanche de technologies et de patterns (WCF Ria Services, Entity Framework, MVVM, Prism, …) rendent presque impossible la maîtrise de tous ces sujets. Je suis payé pour ça. Au minimum 50% de mon temps est passé en autoformation pour apporter un conseil éclairé sur les technos à venir. Ce sont les 50% vendus qui financent cette formation et cette recherche permanente. Comment un développeur qui fait ces 48h (35 de base + le dépassement obligatoire non payé car il est aux “cadres”) peut-il se former à tout cela en travaillant sur d’autres projets la journée ? C’est impossible. Et cela créé une situation très dangereuse. Technologie sophistiquée + manque de formation = code spaghetti !

David Vincent au pays des tags

Il était donc urgent de vous en parler, d’attirer votre attention sur certaines dérives, car dans une moindre mesure, je sais, je l’ai vu chez d’autres, ces chausses-trappes savent s’ouvrir sous les pieds des développeurs les mieux formés et les mieux intentionnés !  Je les ai vues, et je dois convaincre un monde incrédule…

Ma mission, que j’ai acceptée (forcément avant de voir, on a pas vu…), était de faire un audit de pré-release. C’est à dire de venir faire le point sur l’état de la situation, les derniers fameux “boulons à serrer” en quelque sorte, et surtout de venir signer un satisfecit au DI, très fier de son bébé (Rosemary’s baby plutôt que Dora de TF1 au final), afin qu’il puisse faire monter sa prime de fin d’année je suppose.

Hélas, déception et vilenie. Ce n’est pas avec le prix d’un audit (fort raisonnable, devis gratuit sur simple demande) qu’on achète ma conscience. Il m’a donc fallu trouver les mots et les formules diplomatiques pour rendre un audit policé et mesuré sur cet édifice in-maintenable, voué à l’échec et bon à mettre à la broyeuse. Ce n’est pas la partie la plus difficile, car tout rapport d’audit se doit d’être policé et tourné de façon neutre et technique. Même si parfois on a envie de crier “bande de nuls !”, non, ce n’est pas bien, on ne le fait pas…

Que les futurs clients ne s’affolent pas trop, ce que je raconte aujourd’hui est malgré tout à classer dans les exceptions, le fameux bout de la cloche de la courbe Normale. Même si je ne suis que rarement content du code que je vois, on est, heureusement en moyenne, assez loin de l’horreur qui justifie le présent billet !

O Tempora, O Mores !

Parfois je rêve, j’imagine un monde où l’un de ces clients m’appellerait en me proposant un pont d’or pour lui avoir ouvert les yeux et l’avoir empêché de plonger plus encore tant qu’il était encore temps… Mais ce n’est qu’un rêve, bien entendu. Je suppose que je n’entendrais plus parler de ce client comme de quelques autres dont, les années passant et les vœux annuels restant sans réponse m’ont forcé à une résignation réaliste. Comme le chantait l’artiste, “il a dit la vérité, il doit être exécuté” !

Hélas, les temps ne sont pas à la prise de conscience ni à la bravoure. Nous vivons une époque de lâches où chacun ouvre son parapluie pour que les gouttes en atteignent d’autres. Forcément celui qui est au plus bas de la pyramide se prend tout sur la figure. Souvent c’est le développeur qui trinque pour une chaîne hiérarchique défaillante qui n’a pas fait son métier et qui n’assume pas ses responsabilités. Un développeur n’est jamais coupable seul d’un mauvais code, c’est toute la chaine de commandement qui faillit.

Il y a encore un rêve que je fais et que j’aimerais voir se réaliser avant ma (encore lointaine) retraite : que les entreprises fassent intervenir un conseil, un auditeur avant que l’irréparable ne soit commis, pas après pour constater les dégâts ! … ça serait tellement mieux et plus gratifiant pour moi et mes confrères ! Conseiller, orienter, former, en un mot aider, c’est tout de même plus chouette que de passer pour le père fouettard et l’inspecteur des travaux finis !

Faut-il brûler Xaml ?

Certes non.

Mais ce que je veux qu’il vous reste de ce récit hallucinant autant que réel, c’est que Xaml est utilisé par certains comme un langage dans le langage. Un moyen de vider le code-behind de son C# pour remplir des balises ésotériques. Un langage dans le langage avec son Binding qui est, telles le sont les poupée Russes, encore un langage dans le langage.

A vouloir tout faire par binding, à tout dynamiser, à appliquer tout Prism et le chargement dynamique des modules, la découvertes des plugins avec MEF, le tout mis en forme façon MVVM, sans compter les ruses purement graphiques du templating sous Blend, des DataTemplate à double face pivotante en 2,5 D, à vouloir appliquer tout cela dans un seul soft sans avoir pris les 2 ou 3 ans nécessaires à acquérir la parfaite maîtrise méthodologique pour faire marcher tout cela ensemble, on peut facilement arriver à une situation désastreuse. Encore plus facilement que sous C, encore plus que sous Delphi, pire que sous Windows Forms. Tout cela n’était que de l’amateurisme face aux dérapages délirants que WPF et Silverlight peuvent permettre… Comment faire des tests unitaires parlants sur des balises de Binding imbriquées à un tel point que même Intellisense de VS s’y perd ?

L’extrémisme essayiste est un fléau dans notre métier. Il m’a toujours effrayé, mais il a toujours eu sa sanction “naturelle” : une technologie qui finit par être si mal utilisée créée une telle publicité négative qu’elle tend à disparaître. Je ne voudrais pas que cela arrive à WPF et à Silverlight qui apportent tant d’autres progrès !

Il faut sauver le soldat Xaml !

Pitié pour Xaml, un bon geste pour WPF et Silverlight : ne laissez pas des sagouins faire du mal à toutes ces belles technologies que Microsoft nous offre depuis quelques années. Laissez leur une chance, celle que les développeurs deviennent plus matures et mieux formés aux méthodologies qui vont avec. Ne commettez pas le crime d’être complice de ce genre de chose. Intégrer les technologies les unes après les autres, ne sautez pas d’une bêta à l’autre sans avoir l’assurance que vous maîtrisez la précédente !

Mieux vaut une application Silverlight fonctionnant avec un Service Web classique et dont les champs sont connectés par code, qui marche et qui est maintenable, qu’une élucubration technologique improbable et non maîtrisée qui s’écroulera comme un château de carte au premier éternuement du premier bug venu…

Un peu de sérieux…

Il ne s’agit pas d’une invitation à la méfiance, encore moins au passéisme. Non, c’est une invitation au professionnalisme : n’utilisez que ce que vous maîtrisez.

Si vous maîtriser le top de la techno, allez-ci, franchement. Si vous avez un petit doute : faites joujou dans une machine virtuelle et produisez du code que vous comprendrez à 100% et surtout que d’autres pourront comprendre pour le maintenir, le faire vivre dans les années à venir.

Le code Kleenex coûte cher, il dévalorise notre métier et les outils que nous utilisons.

Le code spaghetti peut assassiner une technologie.

Codez bien. Formez-vous bien.

Et faites auditer vos projets avant, pas après.

Et Stay Tuned, j’aurais des trucs plus légers à vous dire la prochaine fois !

Polémique : Lettre ouverte à la Commission Européenne de la Concurrence

Marre de ces institutions délirantes ? Il faut le dire ! La dernière affaire du “ballot screen” imposé par l’Europe à Microsoft pour le choix du navigateur Internet a été la goutte d’eau qui a fait déborder mon vase… Il y a tant de sujets vraiment graves qui touchent le peuple et pour lesquels on ne fait rien. Gâcher mon argent de contribuable dans de telles billevesées est, pour ma part, un véritable scandale.

Vous me connaissez maintenant. De temps en temps j’aime bien faire un billet d’humeur, qui n’a rien de technique. C’est assez rare, mais celui-ci en fait donc partie…

Alors plutôt que de grommeler au bistro du coin ou de faire des grandes phrases au cours de repas d’amis, faites comme moi, écrivez à vos institutions pour leur faire savoir que vous n’êtes pas très content de leur travail. N’oublions jamais que ces institutions existent par le peuple, pour le peuple. C’est eux qui doivent exécuter notre volonté (démocratie) et non le contraire (fascisme).

Vous avez plus de 18 ans ? alors vous avez non pas le droit mais le devoir de voter. Ne laissez passer aucune élection, aussi petite soit-elle à vos yeux, pour exprimer vos choix et votre volonté. Même des élections locales ont une porté plus large que vous ne pouvez l’imaginez. Votez !

Ce billet n’a rien de technique … quoi que… le droit de l’informatique, celui de la concurrence entre les éditeurs de logiciels est un sujet entrant de plein droit dans le cadre de ce blog.

Et pour rouspéter, ce que je vous invite à faire sur tous les sujets qui vous concernent, le mail de la Commission Européenne de la Concurrence : infocomp@ec.europa.eu

Copie de mon mail à la Commission

Bonjour,

En tant que citoyen français, et donc bailleur de fonds permettant à la Commission Européenne de la Concurrence d’exister, je voulais vous faire savoir que je suis terriblement déçu par la décision ahurissante qui a été prise d’obliger Microsoft à offrir une mise à jour spéciale forçant tous les utilisateurs européens de Windows à procéder au choix d’un nouveau navigateur Internet.

Je m’aperçois à cette occasion que nos institutions Européennes qui nous coûtent très cher perdent leur temps, et donc notre argent, dans des dossiers n’ayant aucun rapport direct ou indirect avec une vraie défense des consommateurs alors même que d’autres dossiers urgents et autrement plus grave pour les citoyens de l’union se posent, dossiers qui devraient mobiliser l’ensemble de ses ressources (pollution, personnes sans abris, spéculation immobilière des fonds de pension américains qui rendent l’achat d’un appartement impossible sauf à être riche héritier ou trafiquant d’armes ou de drogues, gestion du déficit des états membres, protection de nos frontières contre l’immigration sauvage, protection des ressources naturelles en déclin, etc…). Et même en ce qui concerne plus spécifiquement le travail de la Commission Européenne de la Concurrence, beaucoup de dossiers bien plus urgents existent et pour lesquels rien n’est fait.

En effet, technologiquement, Internet Explorer, n’est qu’un « morceau » de l’environnement Windows. Un morceau essentiel puisque aujourd’hui se connecter à Internet est en passe d’être reconnu, même par l’Europe, comme un droit fondamental permettant d’exercer sa liberté d’information.

De tout temps les concepteurs de systèmes d’exploitation ont eu à cœur de simplifier cet accès à Internet et ont, pour la plupart, intégré de longue date un navigateur dans leur OS. Microsoft l’a fait avec Internet Exploreur, Apple l’a fait avec son propre navigateur Safari, les différentes versions de Linux le font aussi lorsqu’elles tentent d’offrir la simplicité d’utilisation qui a fait le succès des deux précédents…

Dès lors je me pose tout de même la question de savoir pourquoi Apple ou les divers fournisseurs de Linux ne sont pas tenus à la même obligation que Microsoft ?

Il s’agit là d’une discrimination caractérisée. Quels que soient les fondements de la décision de la Commission, en ne faisant appliquer celle-ci qu’à Microsoft elle créée un déséquilibre grave dans le jeu de concurrence. En effet, les utilisateurs de Windows, qui sont tous loin d’avoir le niveau technique pour comprendre ce qui se passe, se verront devant un choix qu’ils ne maîtrisent pas et qui les plongera dans le doute (les enfants, les grands-parents qui possèdent un petit PC, etc).
En rendant l’usage de Windows plus compliqué, plus contraignant, la Commission s’engage sur une voie brouillant le jeu de la concurrence plus que le clarifiant, ce qui dépasse de loin ses attributions. Attributions qui sont celles que nous, peuple d’Europe, lui fixons et non celles qu’elle décide unilatéralement. A moins que tout cela ne signifie déjà que nous ayons abandonné nos souverainetés nationales et démocratiques pour une dictature européenne ? Et c’est un citoyen « pro Europe » qui vous le dit ! Imaginez ce que pensent les extrémistes de tout bord !

Quoi qu’il en soit, en prenant cette décision, la Commission, en dehors d’avoir outrepassé ce que le citoyen attend d’elle, outre d’avoir brouillé le jeu de la concurrence d’une manière proche de l’illégalité vis-à-vis des règles du commerce international, a surtout fait montre d’une incompétence complète dans la gestion technique du dossier.

En effet, à partir de quand considère-t-on qu’un logiciel fait, de plein droit, partie intégrante ou non d’un système d’exploitation ?

Prenons l’exemple de la Calculatrice. Elle est, fonctionnellement, totalement inutile au système d’exploitation. Mais elle rend son utilisation plus pratique pour l’utilisateur qui ne sait pas qu’il existe des centaines de développeurs et d’entreprises qui, dans le monde, proposent, gratuitement ou à la vente, d’autres calculatrices, souvent plus perfectionnées que celle livrée de base.

Pourquoi ne pas forcer Microsoft, après le navigateur Internet, à proposer un écran de choix pour l’installation de la calculatrice ? En ne le faisant pas la Commission semble donc considérer que seules les sociétés éditrices de navigateurs Internet ont des droits ? Les autres éditeurs de logiciels n’en ont donc aucun ? Ce qui est injuste pour Firefox ou Chrome ne l’est pas pour les centaines de calculatrices concurrentes de celle intégrée dans Windows ? Totale aberration ! Surtout sur le plan juridique !

Sur quelles bases sérieuses, juridiques et techniques, le navigateur Internet se voit il traiter autrement que toutes les autres briques logiciels intégrées dans les systèmes d’exploitation ?

Après tout, on pourrait aussi imposer à Microsoft de donner le choix, après le navigateur, après la calculatrice, de celui du bloc-notes (des tas d’entreprises ou de développeurs indépendants en proposent d’autres souvent plus intéressants) ! Et pourquoi s’arrêter en si bon chemin ? Pourquoi, au nom de la concurrence, ne pas imposer lors de l’installation de Windows le choix même du noyau du système ? L’utilisateur qui vient d’acheter Windows pourrait ainsi opter pour un noyau Linux, Unix ou autre… Et l’affichage ? il existe des dizaines de façon d’afficher l’information sur un ordinateur, cela est géré par un bloc bien spécial et éventuellement interchangeable. Un autre choix pour permettre l’utilisation de Gnome, KDE, QT ou autre à la place du système d’affichage de Windows ?

On nage en plein délire. Technique et juridique.

La Commission, par souci de cohérence, est-elle prête à faire de même pour les voitures, les avions, les bateaux ? Est-il normal que lorsque j’achète une voiture neuve je me vois imposer un autoradio spécifique et que je ne puisse pas choisir la marque qui a ma préférence (sans rien débourser de plus) ? Est-il logique que si j’acquiers un bateau je puisse me voir imposer un certain type d’équipement (sécurité, communication) sans pouvoir choisir totalement la marque et le modèle de chaque élément, et bien entendu sans aucun surcoût puisque c’est ce que vous avez exigez de la part de Microsoft ! ?

En agissant comme elle l’a fait dans ce dossier, la Commission Européenne, noble institution en qui chaque citoyen d’Europe fonde de nombreux espoirs, s’est montrée injuste, incompétente à comprendre les dossiers qu’elle traite, et créant de fait une situation de déséquilibre dans le jeu de la concurrence. Plus grave, elle creuse le gouffre d’incompréhension qui la sépare de jour en jour des citoyens qui nombreux, et quel que soit le pays de l’Union, se demandent si nous ne sommes pas en train d’installer une dictature technocratique en place et lieu de nos démocraties ! On comprend mieux les difficultés à donner plus de pouvoir encore à l’Europe rencontrées lors de certaines ratifications par référendum !

Nous, citoyen d’Europe, attendons de nos institutions qu’elles nous protègent et nous défendent et non qu’elles se perdent dans des débats partisans et technique que ces membres ne comprennent pas.

Par exemple, pourquoi la Commission ne sanctionne-t-elle pas les constructeurs informatiques tels que Dell ou Acer qui obligent le consommateur à acheter une licence Windows pour tout ordinateur, alors même que ces ventes forcées sont interdites par les lois européennes ? Au lieu de s’acharner sur Microsoft jusqu’à cette lamentable affaire de navigateur Internet, il y a mille dossiers plus urgents dans lesquels le citoyen consommateur est floué ! Et que fait la Commission ? Rien !

L’incompétence de la Commission se retrouve donc jusque dans la priorisation des urgences des dossiers à traiter qui n’est pas même respectée.

Il ne faudra pas s’étonner qu’avec tout cela le citoyen se désintéresse des affaires européennes et que les extrémistes, les nationalistes de tous nos pays fassent de très beaux scores dans les élections des années à venir…

C’est une situation bien triste, c’est la salissure d’un rêve magnifique et humaniste, une grande Europe forgée démocratiquement et non par la force des canons, que par ses agissements ubuesques la Commission enterre un peu plus chaque jour.

Pour l’Européen convaincu que je suis, c’est un constat bien amer, qui se payera forcément dans les urnes.

<..formule de politesse..>

Faut-il avoir peur de passer en 64 bits ?

La question fait elle-même tellement trembler qu’elle semble être censurée avant même d’être formulée ! Une censure de type “freudien”, quasi inconsciente. On n’ “ose” même pas y penser…

Pourtant… Pourtant des raisons de passer au 64 bits, ce n’est pas ce qui manque. Prenez la mémoire, 3 Go maximum sous XP, et encore avec une machine bien réglée. Vous allez me dire, pour regarder des vidéos sur youtube et chatter sur msn 3 Go c’est déjà de trop. Et vous avez raison, c’est pourquoi les portables de mes deux filles n’ont qu’un seul Go et qu’elles ne voient pas la différence…

Mais bon, on parle entre pros ici, ce n’est pas le club des bloggeuses du lycée machin ou de la fac trucmuche ! Quand je monte une vidéo, quand je génère des séquences 3D, quand j’ai Blend, VS, Design et illustrator ouverts en même temps plus l’exe que je suis en train tester, avec 3Go ça swappe…

Mais il n’y a pas que la RAM qui rame, certains logiciels tirent réellement profit du 64 bits.

De toute façon la question qui se pose n’est pas de savoir si c’est mieux ou pas, on le sait que c’est mieux, techniquement. Le problème c’est “faut-il en avoir peur” !

Les raisons d’avoir peur sont-elles objectives ?

Je suis certain que pour vous comme pour moi, ce que je savais sur le 64 bits avant de m’y intéresser vraiment n’étaient au fond que des bruits de couloirs. La même fiabilité que les atrocités entendues dès qu’un OS un peu nouveau sort. J’ai entendu les mêmes bêtises pour Windows 1.0, puis toute la série jusqu’à Vista qui était, à en croire tous ces “spécialistes” (mais qui ne l’avaient jamais testé !) un produit bon à jeter à la poubelle.

Pour faire plaisir aux grincheux, Vista II s’est appelé Windows 7 et les gens l’ont testé. Du coup ils trouvent cet OS plutôt pas mal (à raison d’ailleurs).

En cherchant bien je me suis rendu compte que des vraies raisons d’avoir peur du 64 bits je n’en trouvais pas… Oh, bien sûr, il y a ces affreuses histoires de “drivers” qui n’existent pas. Une sorte de légende urbaine. Il y a aussi les terribles incompatibilités des applications existantes ! Il faut tout racheter, ça coûte une fortune !

Mouais… Racontars et bruits de couloirs, c’est bien ce que je crains….

Et comme je ne suis pas homme à me fonder une opinion sur ”l’avis des gens”, j’ai pour les tests un amour certain : ils sont comme des guides clairs et lisibles dans ce monde de désinformation. On coupe le bruit de fond, on se passe une musique sympa, et face à son PC on teste. Et on constate. Là on peut commencer à avoir une idée personnelle qui peut valoir la peine d’être exprimée. Sinon, hélas, le seul droit qu’il reste, en toute éthique, c’est de fermer sa g….

Testons !

Bien entendu je ne vais pas prendre un vieux portable Acer acheté 800 euros il y a 5 ans pour faire le test. Quoi que je pourrais tenter le coup. Mais bon, je suis lucide, si le x64 me plaît ça sera pour l’utiliser sur l’une de mes machines principales, c’est à dire du matériel qui a systématiquement moins de deux ans et acheté de telle façon à toujours avoir le top de ce qui fait, ou plutôt le précédent “top”, histoire de ne pas me faire tondre juste pour la frime.

Je suis donc parti d’une machine Dell Studio XPS neuve, équipée d’un excellent i870 4 coeurs hyperthreadés (donc 8 coeurs apparents, entre autres possibilités de la bête), de 6 Go de Ram et de 2 disque de 1 To classiques. Une video NVida de bon niveau, mais pas un truc de gamer fou. Pour une somme modique, j’ai une config de tueur (silencieuse en plus).

Le choix de la machine étant réglé, posons nous la question de l’OS.

Je ne vais pas tourner autour du pot, j’aime Windows 7, c’est donc un 7 x64 que je vais utiliser.

Installons

La machine étant livrée avec un 7 home premium, l’installation se résume à rien… Mais comme je voulais bénéficier de choses comme le XP mode et la virtualisation j’ai upgradé l’OS d’origine vers un 7 x64 Ultimate. Petit avantage d’être MVP cette opération ne me coute rien puisque je suis abonné à MSDN et que je dispose des licences officielles pour faire ce genre de test.

Donc j’ai upgradé le 7 x64 home premium, en 7 x64 Ultimate. Quelques téléchargements de mises à jour plus tard, tout était ok, sans un hoquet !

Les softs

C’est là qu’une légère panique vous serre la gorge : tout ça d’investi, machine et temps, pour en arriver là, à l’installation des softs, juste pour voir s’ils tournent… et si ça tournait à la cata ?

A tout seigneur… j’ai commencé par Sql Server 2008 et VS 2008. Impeccable. Ce qui est x64 est bien reconnu, le reste tourne comme un charme.

J’ai continué sur cette lancée avec le SP1 de VS2008, les tools Siverlight 3, le toolkit etc. On passe à la suite Expression : Blend 3, Design 3, Encoder 3. No problem.

Il est intéressant de noter que la racine de l’OS possède deux répertoires “programmes”, un pour les softs x64 et un autre “programme file (x86)” dans lequel il sait visiblement ranger tout ce qui n’est pas pur x64.

Première constatation : il n’y a pas de problème de compatibilité, il ne faut pas tout racheter, Windows 7 x64 sait faire tourner (et installer) aussi bien des soft x86 que x64.

Je passe à Zam3D et Swift3D de Electric Rain. Un éditeur déjà moins gros qui n’a pas forcément tout bien ficelé pour un éventuel fonctionnement en x64. Les deux softs s’installent sans souci. Ils tournent à merveille et Swift3D reconnait bien les 8 coeurs ! Une image 3D est prise en test : sur mon double coeur E6700 il faut 4 minutes 10 pour générer l’image (avec deux threads concurrents). Sur le Dell XPS et son i870, le même soft (32 bits) tourne de la même façon mais boucle la génération de la même image 3D en 1 minute 38 en exploitant bien les 8 coeurs apparents. Test concluant. Imaginez le gain pour une séquence vidéo de 300 images…

Seconde constatation : les softs 32 bits même d’un niveau technique honorable sans être des monstres bénéficient immédiatement de la nouvelle architecture (plus de RAM disponible, meilleurs processeurs, architecture hôte x64 transparente).

Je continue avec le pack office ultimate, je n’ai pas la version x64 (s’il y en a une, je n’ai pas vérifié) c’est donc la même que j’utilise sous XP ou W7 x86 que je vais installer. Ici encore pas de souci. Tous les logiciels fonctionnent.

J’ajoute des choses un peu plus vicieuse : webcam, logiciels de traitement video, de sons, etc… Bref, ça ne bronche pas.

Conclusion

Je n’irai pas jusqu’à dire que tout ce que vous avez entendu sur x64 sont d’énormes âneries, tout simplement parce que certains points peuvent avoir été vrais “dans le temps” ou même que dans certains cas très particuliers il peut subsister des zones d’incompatibilité (surtout avec du hardware un peu dépassé et dont le fournisseur ne propose pas de driver récent).

Mais l’exotisme n’est pas mon but. J’ai des machines pour produire. Des logiciels. De la musique. Des vidéos. Des images. Tout cela réclame des produits à jour et à la pointe. Ce que je voulais savoir par moi même et par le biais d’un test indiscutable était simple : fallait-il ou non avoir peur de x64 ?

Ma réponse est claire et nette : après l’expérience que j’ai menée et vous ai racontée ici en version courte, c’est même la question de départ que je trouve stupide maintenant…

Windows 7 x64 est un OS qui brise les limites qui nous chagrinent, comme la mémoire maxi vue par l’OS sous x86. La virtualisation est parfaitement intégrée à 7 x64 comme elle l’est à la version 32 bits. Le XP Mode permet donc de résoudre d’éventuels problèmes de compatibilité de façon simple et élégante.

Au bout du compte on a enfin un OS qui correspond aux capacités des processeurs qu’on payent cher généralement et aux barrettes de RAM qu’on installe parfois en pure perte (j’ai vu plein de PC avec 4 Go intallés et tournant sous XP ou W7 x86, il y a une barrette qui aurait pu servir à se payer une toile ou un resto…).

La réponse à la question de départ est donc : NON.

Le conseil que j’y adjoins est : passez à W7 x64 vous verrez ce que c’est que d’avoir un vrai OS à la mesure des processeurs modernes.

Maintenant ne venez pas rouspéter si vous faites la manip sur une vieille bécane dont les périphériques internes sont trop vieux pour avoir les bons drivers. Passez à x64 ne s’entend que sur des machines de génération récente équipées correctement (au moins niveau processeur, RAM et carte graphique).

Mais lors du renouvellement de votre machine, pensez-y. Oubliez le 32 bits dépassé et limité, et osez un OS à la mesure des défis à relever !

Everything, everywhere ! Accéder à tous vos fichiers de partout

Je ne sais pas pour vous, mais en ce qui me concerne j’ai l’impression que plus Microsoft fait des efforts pour améliorer la recherche des fichiers dans ses OS plus c’est compliqué et moins ça trouve…

Situation paradoxale s’il en est surtout que de quelques méga nos disques sont passés à des centaines de giga, donc à des centaines de milliers de fichiers. Sous XP c’était lent et pas toujours évident. Sous Vista ça ne trouvait déjà plus rien, même sur des supports indexés. Avec Seven on en reste là. Et pourtant Seven est un OS vraiment bien fait que j’utilise sur toutes mes machines aujourd’hui.

Mais vous me connaissez, j’aime bien rouspéter de temps en temps. Et malgré mes amitiés microsoftiennes c’est librement que parfois je m’exprime sur les produits de cet éditeur. J’en dit suffisamment de bien tous les jours pour pouvoir me le permettre ! :-) Et puis un ami qui ne dit pas la vérité, ce n’est pas un ami.

Syndrome Apple

Les améliorations ont été finalement trop “Applesques” c’est à dire “c’est nous qui nous occupons de tout, circulez y’a rien à voir ni à comprendre”. j’ai toujours détesté les Mac et leur OS pour ça. Il n’y a pas que des grand mères qui achètent des portables pour envoyer des mails à leurs petits enfants, il n’y a pas que des “utilisateurs de base” qui chattent sur MSN. Non, il y a aussi des professionnels, voire même des geeks, qui ont aussi besoin de chercher où se trouve un fichier “.wab” ce que Seven refuse de trouver (certainement parce qu’il se trouve dans un répertoire caché ou système).

Personnellement, étant de la génération qui a vu naître les premiers micros, et sachant comment ils sont fait je garde ce vieux réflexe dominateur : c’est moi l’homme, le PC n’est qu’une machine et c’est moi qui commande ! Pas de plan du genre l’horrible UAC de vista et ses incessantes demandes de confirmation. Si je fais un truc, je veux que le PC l’exécute sans me fatiguer avec des questions à la noix. J’ai besoin de me concentrer sur ce que je fais et pas sur le décryptage des messages de sécurité (qu’on finit par supprimer car trop de sécurité tue la sécurité. Ce que heureusement MS a compris dans Seven qui est bien plus discret, et donc utilisable).

Hélas, la recherche des fichiers si elle s’est améliorée pour le fameux utilisateur de base (chercher un document Word contenant le mot “anniversaire” ça c’est rapide) est devenue un enfer pour l’informaticien qui doit souvent localiser des fichiers qui se trouvent dans les endroits “interdits d’accès pour raison de sécurité”. Le vieil anar que je suis a tous les poils qui se hérissent rien qu’en écrivant cette phrase ! “interdit” “sécurité”, “raison d’état” pourquoi pas aussi !

Bref il fallait que je trouve un système de recherche efficace qui puisse me redonner le pouvoir que j’exige sur mes machines, surtout que ma machine principale, outre ses deux disques de 500 Go, est connecté à divers disques externes de 1 To. Autant dire que si je compte sur Windows pour m’aider à trouver quelque chose là dedans, je n’ai plus qu’à me tirer une balle…

Everything

A force de chercher on trouve ! (sauf le système de recherche de Windows).

Et j’ai fini par trouver un utilitaire puissant, simple, léger et gratuit qui fait exactement ce que je veux. Il s’appelle “Everything Search Engine”.

Son principe est simple : il utilise les structures NTFS qu’il balaye pour constituer sa base de recherche. C’est mille fois plus rapide que le balayage des répertoires via Windows et les temps de recherche sont de l’ordre de quelques millisecondes. La création de la base de données (quelques méga qui se met à jour toute seule ensuite) a pris une minute ou deux avec tous mes disques branchés. Ensuite tout est quasi instantané.

Bien entendu Everything ne cherche pas le contenu des fichiers. Windows autorise des noms longs depuis quelques lustres, tant pis pour ceux qui donnent encore des noms courts et ne voulant rien dire à leurs fichiers !

Everything sait utiliser les expressions régulières ou bien une notation très simple permettant de faire des AND et des exclusions (mode de recherche simplifié). La liste des fichiers est triée, ce qu’on peut changer à volonté, et les fichiers sont cliquables pour des actions de base (exécuter, supprimer, etc).

etmain

Mais il y a mieux ! Everything peut aussi fournir ce service “Everywhere” !

Everywhere

Ce petit utilitaire est en effet assez puissant pour incorporer un serveur Web (dont le port est paramétrable, ainsi que la sécurité d’accès par mot de passe) !

Il devient ainsi possible depuis n’importe quelle machine sur le réseau de faire une recherche sur les fichiers de la machine équipée de Everything depuis un browser internet :

ETWeb

L’image ci-dessus montre l’écran d’une machine accédant au serveur Everything de la machine Saturne (sur le port 100, réglage personnel, le port 80 étant occupé par IIS). Il suffit de saisir la phrase de recherche et de cliquer sur le bouton Search pour obtenir un listing détaillé depuis lequel il est possible de télécharger le fichier par exemple. Très pratique.

Conclusion

Pouvoir chercher en quelques millisecondes sur des Tera de stockage n’est une pas une fantaisie de geek bien entendu, c’est une fonction de base que tout OS devrait être capable de fournir. La tendance Apple où l’utilisateur ne doit rien savoir et rien pouvoir faire, ou bien l’excès de vouloir trop bien faire, ou tout simplement une mauvaise analyse du besoin, un peu de tout ça peut-être… En tout cas la recherche de fichiers sous XP, Vista et aujourd’hui Seven est une vraie plaie. Il a fallu attendre Internet Explorer 8 pour que le mode de recherche dans une page soit enfin pratique (du même genre que celui de FireFox), j’espère qu’il ne faudra pas attendre encore trois ou quatre versions de Windows avant qu’un mode de recherche simple et rapide soit enfin intégré à l’OS ! Surtout si Seven fait une carrière comme XP (ce que je lui souhaite), dans 4 versions ce seront mes petits enfants que je formerai au nouvel outil !

Comme entre temps il faut bien se débrouiller, je vous conseille de télécharger et d’utiliser Everything !

Bonne recherche… Et Stay Tuned !

Les "Borlanders" deviennent vraiment des cobolistes !

J'avais prédis dans une ancienne interview donnée au Journal du Net que les "Delphistes seraient les cobolistes des années 2010" et s'il est vrai que faire du Delphi Win32 aujourd'hui n'a plus guère de sens, il restait au moins Delphi.NET. Hélas celui-ci aussi a fini par passer à la trappe (voir mon billet "Delphi Prism, la seconde mort de Delphi").

Borland voulait se recentrer sur les outils ALM. Une belle erreur qui a conduit au bradage de leurs outils de développement, les seuls produits intéressants chez Borland. Il ne leur restait donc plus grand chose à vendre. En 2008 la firme a perdu 200 millions de dollars, c'était prévisible.

Mais ma prédiction s'est révélée presque exacte à 6 mois près ! En effet, doucement, sans bruit (car hélas sans aucun intérêt de personne) Borland a été racheté en mai dernier par Micro Focus, les rois ... du Cobol !!!

Reste CodeGear/Embarcadero et la mise à poubelle de la VCL.NET et Delphi.NET au profit de Prism (en fait Chrome sous licence, voir le billet cité plus haut pour plus de détail).

Entre le Cobol ou la mort pure et simple, Borland n'en finit pas de mourir et de s'enfoncer dans la non-existence. Mais s'en est définitivement terminé. Enfin, aurait-on presque envie de dire. 

Ça fait de la peine quand même, cette longue agonie. Pour un ex-borlander comme moi, j'aurais préféré une mort en beauté, soudaine, fauché en pleine gloire. Non, Nielsen, le PDG "génial" de l'annonce de la vente des EDI aura été le fossoyeur sadique du mythe Borland, sadique car en plus il n'a pas fait ça proprement.

Cela étant dit, Vive C#, Vive Silverlight (et toutes les technos .NET) et merci à Microsoft ne nous avoir offert un alternative crédible et séduisante au terrible dilemme de n'avoir comme autre choix la mort professionnelle avec Delphi ou de vraiment finir coboliste avec Borland  ! :-)

BING ! Enfin une alternative à Google

Ca aurait pu être BONG ! PAN! ZOING ! ou SVISHHHH ! façon comic strip de Gainsbourg. Non, ça sera BING !

Le bruit de la poelle à frire qui s'écrase sur la tête de Google, toujours façon BD ?

En tout cas, www.bing.com est la réponse de Microsoft à Google. Dès aujourd'hui accessible en France, en bêta, j'en ai déjà fait ma page d'accueil.

Ce qui ne gâche rien, la vue sur les îles grecques en fond est plutôt agréable et me rappelle les racines de www.e-naxos.com (naxos est une des îles des cyclades, à l'époque de la création de la société j'avais cherché une façon de faire écho aux consonnances grecques utilisée par Delphi... de plus les cyclades sont un endroit magnifique !). [EDIT] L'image change tous les jours vous avez peut-être loupé la grèce alors...[/EDIT]

Les nombreuses améliorations par rapport à Google ne sautent pas immédiatement aux yeux, on retrouve une présentation des résultats très proche. Mais on note déjà des petites choses qui changent les recherches : par exemple si vous cherchez des images vous pouvez choisir de filtrer celles qui sont en noir & blanc ou couleur, celles qui ont des visages humains ou non... La recherche devient plus intelligente. Mais Bing est en bêta chez nous et je ne n'ai pas encore vu toutes les avancées présentées par Microsoft, il va falloir attendre un peu je pense. [EDIT]Confirmé. La version bêta française va prendre de l'ampleur avec le temps. La sortie officielle aux USA se situant en juillet visiblement et aucune raison que nous soyons en avance sur les States... donc patience pour les grosses différences avec Google.[/EDIT]

Dans tous les cas Bing est parmi nous, il est plus agréable que Google, il cherche au moins aussi bien et aussi vite, voire mieux, propose des filtrages absents de Google et ce dernier quelles que soient ses qualités devient un véritable danger pour nos vies privées.

Il est temps de rééqilibrer le marché et de faire en sorte qu'une concurrence saine se mette en place. Beaucoup de mes lecteurs, je le sais, ont un jour où l'autre crié avec les loups contre l'hégémonie de Microsoft. Ne le le niez pas c'est arrivé à tout le monde, même si c'était "il y a longtemps". Et pendant ce temps là nous nous sommes tous fait dévorer par le monstre Google lui offrant nos clics et les sous des annonceurs, le laissant espionner nos recherches pour mieux nous cibler, fermant les yeux sur ses lectures de nos mails privés pour nous gaver de publicité. Nous avons été trop laxistes et nous nous sommes trompés de cible.  

Alors plutôt que de verser dans les regrets, il est temps de réagir, de redresser la barre, pendant qu'on diabolisait MS à une certaine époque (ce que certains font toujours, mais à qui profite le crime...), le monstre Google s'est insinué dans nos vies, l'acte rebelle aujourd'hui c'est pas d'écrire M$ pour MS, c'est de taper un grand coup sur la tête de Google pour qu'il reste à sa place, un bon moteur, un bon mail et des outils sympas, mais pas un Big Brother qui peut tomber un jour entre des mains mal intentionnées, frappons un grand coup qui va faire ... BING!

Bonnes recherches sur le Web !

Déménagement

Déménager est toujours une aventure ! Surtout quand ça ne se goupille pas comme prévu !

Il faut dire qu'il est très difficile d'être au champ et au code... Toujours en vadrouille de ci de là en clientèle, pas évident de sélectionner des annonces et de visiter.

Bref je me retrouve un peu short. En informatique on a l'habitude d'exploser les délais vous me direz, mais c'est quelque chose que j'arrive à éviter personnellement pour le grand bonheur de mes clients. De l'expérience dans les estimations, de la prudence dans les délais promis, et depuis que je gère ma propre société je n'ai plus à me plier au stress des trucs "à livrer pour hier" vendus par des commerciaux sans aucune autre connaissance des réalités que leur prime mensuelle et l'épaisseur de leur carnet de commande, peu importe si ce qui est vendu est réaliste ou pas.

Etant à l'abri de ces zigotos en costard-cravatte-BMW qu'on appelle les commerciaux, il est vrai que j'exerce plutôt dans la sérinité, pour mon bien et celui de mes clients. Pour être juste j'ajouterai que certains commerciaux sont de merveilleux auxiliaires dans une entreprise et qu'ils fournissent un travail essentiel et intelligent. Ceux là sont précieux, comme tout ce qui est rare... Mais sinon, le cliché du commercial "jean claude Convenant" de Caméra Café est assez bien vu...

Tout cela pour dire que sérénité et expérience, certes, mais pour mes clients avant tout. A l'instar des cordonniers qui seraient les plus mal chaussés, les informaticiens seraient-il "les plus mal organisés" ? J'en ai vu ! Dans mon cas il s'agit du temps. Ce temps cruel qui coule et qui limite les journées à 24h. N'ayant pas trouvé le moyen d'être à Paris en même temps qu'à Toulouse, en train de développer dans mon bureau en même temps que faire un audit chez un client, forcément il faut faire des impasses, comme un étudiant un peu charette avant un examen...

Il ressort de tout ça que la semaine prochaine je déménage, ou plus exactement, le déménageur vient vider la maison. Il y a une nuance. Dans le premier cas, on sait où on va, dans le second cas c'est plus flou :-)

Je vais ainsi monter en région en parisienne pour trouver une maison, plutôt secteur campagne, pas trop de près de paris mais pas trop loin non plus.

Durant quelques semaines à venir je serai donc dans le no-man's land entre ici et ailleurs, avec deux portables et clés 3G pour rester dans la boucle et continuer les business en cours. Maintenir le blog ne sera pas forcément facile durant cette période, mais il y aura quand même des news ! Le magasin reste ouvert durant les travaux !

Yoda surveille les cartons, il n'y aura pas de souris voyageuse clandestine :-)

Bon si vous avez vent d'une maison de type 4 pièces avec jardin dans un périmètre de 50/80 km autour de Paris, dans un bled avec ADSL, et à un prix intéressant (donc le plus bas possible ;-) ) n'hésitez pas à me laisser un message par le biais de la rubrique "me contacter" (en haut dans les menus du blog) !
A bientôt pour des news plus techniques !
Et Stay Tuned !