Episode Bonus: Microsoft m’a entendu? ou pas.

J’interromps mes épisodes car la news est quand même de taille: Microsoft lance WebMatrix

J’avais dit qu’il manquait un équivalent à EasyPhp pour .Net, et on m’a fait remarqué d’un « IIS Express » pointait le bout de son nez…
WebMatrix est donc un gros Setup qui t’installe sur ta machine un IIS Express, un base de donnée Express, et un IDE Express (et d’autres trucs Express).

Je n’ai pas encore eu le temps de tester tout ça, mais on voit déjà la grosse machine commerciale!
Le site Web est très bien fait, avec plein de mots à la mode: D.R.Y, MVC, TDD, une petite screenshot de NerdDinner, tout pour plaire :)

Il y a un gros effort sur l’aspect « Communauté », on peut facilement installer une application Web, .Net/PHP/autres, en quelques clicks.
A noter aussi le gros effort sur la documentation, tutoriel et compagnie,  pour que tout le monde puisse « faire du Microsoft rapidement ».

J’ai l’air de ne pas aimé? Ça se voit?

Bon, premièrement, je suis sous Ubuntu à cet instant précis ou je vous écris.
Ensuite, les vidéos Silverlight ne fonctionnent pas: Moonlight crash sous Google Chrome, et sous Firefox la vidéo ne se lance pas.
Enfin, si vous faite joue joue avec WebMatrix, vous allez vouloir déployer ça quelque part…
Ça tombe bien, Microsoft recommande pleins de « Hosting partner » avec du Windows Server 2008 R2… et du SQLServer bien sûr.

Revenons à EasyPHP.
Avec EasyPHP, vous avez un vrai Apache (pas une version Express) avec un vrai MySQL (pas une version Express).
Il existe aussi bien sûr des « EasyPHP like » avec du PostgreSQL, tout est possible.
Vous pouvez ensuite héberger cela sur du Windows si vous voulez… ou du Linux.

Bon, c’est vrai, EasyPHP n’installe pas un IDE, il va falloir en trouver un gratuit.
Ca doit être plutôt rareun IDE gratuit, d’après ce que l’on voit sur le site de WebMatrix:
Je cite: « Cerise sur le gâteau, c’est entièrement gratuit. »

Allez, parce-que je suis gentil, voici 3 IDE PHP gratuit:

Le gros + de WebMatrix, c’est quand même de pouvoir télécharger n’importe quel application Web (ASP.Net et PHP) en quelques clicks. La, j’avoue, rien à dire.

Je vous laisse maintenant apprécier  la grandeur commerciale de Microsoft, je pense qu’ils vont réussir leur coup avec WebMatrix.

Le logiciel libre et gratuit pour tous

Cela fait un moment que je suis amoureux du logiciel libre… même si je fais trop souvent des infidélités à ma petite Ubuntu…

Sushi aussi aime Tux

Dans le monde actuel, il est devenu important, pour trouver du travail, de posséder une adresse Email, d’avoir le PDF de son CV et de pouvoir accéder aux offres d’emploies sur Internet.
A une époque, j’allais tous les jours à l’ANPE pour utiliser leur PC et ainsi pouvoir avoir une chance dans ce contexte.

Pour d’autres, ça peut être très difficile d’accéder à ce genre de choses, car très coûteux.
Sans compter l’éducation et le divertissement des enfants: l’ordinateur est devenu indispensable.

Le 20 Juin, je me suis promené au grand salon Emmaüs à Porte de Versailles.
Il y avait bien sûr plein de meubles, livres, vêtements, etc. Mais il y avait aussi des ordinateurs, certes vieux, mais encore très utiles.

Certaines distributions Linux ont d’ailleurs fait le choix d’optimiser les performances et d’adopter des outils léger afin de convenir à du vieux matériel: tout le monde n’a pas la dernière machine dernier cris, et tous les geek ont déjà essayé de recycler leurs vielles machines en serveur Linux :)

Pour des distributions Desktop légères, on peut citer http://www.fluxbuntu.org/ et http://www.xubuntu.org/ , mais il en existe bien d’autres…

Même si ces versions sont dites « légères », cela ne veut pas dire qu’elles sont dénuées de jeux! Linux n’est pas connu pour être la plateforme des gamers, mais on peut toutefois s’amuser avec.
Il y avait d’ailleurs une LAN avec rediffusion sur vidéo-projecteur au milieu du salon Emmaüs :)

Concernant l’éducation, la solution Skolelinux.fr était proposée comme alternative peu coûteuse, du serveur jusqu’au desktop. Là aussi, Linux veut pouvoir s’offrir à n’importe qui avec tous les outils nécessaires à la vie d’aujourd’hui.

Je ne peux que dire: Vive le logiciel libre!

DBus avec .Net

Pour ceux qui ne le savent pas, je travail sur un serveur d’application .Net indépendant de la plateforme Windows: DotNetServer.

Après une version bonne pour une démo, j’ai voulu refactoriser le tout pour avoir quelque chose de viable.
Dans mon dernier billet, j’explique mon périple à la recherche d’un protocole de communication Inter-Processus, et j’ai choisi NDesk.DBus: l’implémentation full .Net de D-Bus.

La solution était sexy:

  • Déclaration des services par interface, ne pouvant exposer QUE des types simples ou Struct. Cela force à réaliser qu’en matière de communication, une instance d’objet ne veut rien dire et qu’on communique que par DTO.
  • Support des méthodes, propriétés et événements
  • Channel par Socket/TCP ou par Pipe
  • Communication optimisé binaire (pas d’XML ou de SOAP….)
  • Exposition des services sur le Bus avec un contrat au format XML (comme un WSDL en quelque sorte)
  • Cross-platform: provient du monde Linux mais existe sous Windows
  • Un standard de communication Inter-Processus, de plus en plus utilisé sous Linux, remplaçant CORBA (avec Bonobo)

Mais voila, tout n’est pas rose, et DBus me donne du fil à retorde.
L’implémentation .Net n’est pas très propre:

  • API pas très utilisable car quasiment tout est Internal
  • Pas de doc?
  • Ça manque de convention, le source n’est pas très lisible, j’ai envie de passer un coup de Resharper dessus :)
  • Beaucoup, beaucoup de commentaire du genre « //temporary hack » ou « //TODO« … beaucoup de code commenté qui prouve que la personne a voulu faire bien mais n’a pas eu le temps
  • Quand j’exécute DBusExplorer pour scanner mes services, cela plante 1 fois sur 2 mon client
  • Je n’arrive pas à faire marcher un service ou un client dans un Thread!!! Cela me bloque totalement

Je me demande si je ne vais pas revenir à une solution .Net Remoting:

  • implémentation .Net et Mono
  • channel IPC (par Pipe)
  • supporte les événements
  • DBus est vraiment orienté « Desktop » comme le D l’indique. J’en fait donc une utilisation détournée.

Mais une autre solution peut aussi faire l’affaire: ProtoBuf, un protocole performant inventé par Google.

Je vais tacher de vous tenir plus au courant, histoire aussi de recueillir des opinions concernant mes choix.

Java for iPhone

Pour les fans de .Net et de l’iPhone, vous savez sans doute que vous pouvez vous éclater avec MonoTouch.
J’en profite pour dire que JB Evain en parlera aux TechDays.

La particularité et le défi de MonoTouch, c’est que le processeur de l’iPhone ne supporte pas une opération nécessaire à la compilation à chaud (JIT), qui est la base des langages sur une VirtualMachine (.Net et Java). L’application Mono est alors compilée nativement, avec une suppression des bibliothèques du framework inutilisées.

Et Java alors, est-ce que la communauté compte faire quelque chose?
Et bien une startup, Flexycore, l’a déjà fait: iSpectrum! Et le produit est gratuit pour les projets Open-Source!!! Ce qui n’est pas le cas pour MonoTouch.

Voici un aperçu de ce qui est possible:

Certes, la démo n’est pas « bandante », mais derrière, il y a le support de J2ME, du JavaScript, les API de l’iPhone (comme le GPS) et bientôt l’API OpenGL ES.
Est-ce le retour de Java pour les jeux mobiles?

Vous êtes plutôt Microsoft ou Google?

Cela fait longtemps que vous vous posez la question, et à l’aide de notre questionnaire réalisé par de grands psychologues, vous allez enfin connaitre la réponse!

Ce matin, aux alentours de 5h30, vous vous levez pour allumer votre portable qui démarre sous…

– Windows bien sûre
– Google chrome OS, c’est très tendance et vous avez  juste besoin de surfer

Tiens, on dirait que vous n’êtes pas le seul debout à cette heure! Vous commencez à chatter sur…

– GTalk
– MSN
– une client multi-protocole… ah si vos amis pouvez switcher de MSN vers GTalk…

On vous a parlé de « keyboard cat » sur le net, vous ouvrez alors pour surfer…

– Internet Explorer, c’est le meilleur
– Google Chrome, c’est plus rapide

Vous recherchez l’info grâce à…

– Google évidement
– Yahoo forever
– Bing ça déchire

On vous parle d’un coin de paradis sur terre. Vous allez chercher l’adresse sur…

– Google Map
– Bing Maps

A votre tour, vous voulez publier vos photos de vos dernières vacances. Vous les publiez sur…

– Flickr
– Windows Live
– Picasa Web Album

C’est le moment de vérifier vos Emails, vous allez donc sur…

– Windows Live (Hotmail)
– GMail
– Tout ça c’est « Has been », vous êtes déjà sur Google Waves

Un mail vous parle de votre prochaine réunion ALT.Net. Vous vérifiez votre disponibilité sur…

– Toujours Windows Live
– Google Calendar

Ouf, quelle mâtiné ! Il est temps d’aller bosser. D’ailleurs, vous aimeriez bien changer de boulot, et vous rêvez secrètement d’être employé chez…

– Microsoft rules the World!
– Google c’est trop Hype!

A force de surfer le matin, vous allez être en retard au boulot. Votre boss vous le rappelle sur votre téléphone qui est un…

– HTC Hero/Dream ou Nexus… n’importe du moment qu’il y a Android dessus
– HTC Touch/Diamond ou autre avec Windows Phone, c’est une valeur sûre

Vous voila à la fin de la journée, vous pouvez enfin rentrer chez vous et bosser sur votre projet perso OpenSource qui est hébergé sur…

– Codeplex
– Google Code

Vous êtes tendance, et vous faites du Cloud Computing. Pour vous, la meilleure plateforme c’est…

– ASP.Net sur Windows Azure, le C# est le meilleur langage du monde
– GWT sur GoogleApp Engine, Java reste une valeur sûre, mais vous attendez avec impatience la sortie de Noop

Vous en profitez pour mettre à jour votre CV. Vous utilisez pour cela…

– Un bon vieux Microsoft Office, Word il n’y a que ça de vrai
– L’avenir est sur le net, vous préférez Google Doc
–  Word c’est bien, mais Office Live c’est mieux!

Il est déjà 1h du mat’, il faut vous coucher. Vous commencez à faire des rêves…

– Noir et Blanc, en costume/cravate
– Tout en couleur, avec votre T-shirt de Hippie « Geek inside »

Comptabilisez vos réponses, et grâce à nos algorithmes mathématiques très complexes, la science et la psychologie vont déterminer de quel côté vous vous situez!

Lire la suite

Google serait-il le future papa de Java?

C’est la première question que je me suis posée en lisant l’article: http://blog.developpez.com/adiguba/p8101/java/google-noop/

Ce qui est sûr, c’est que Google investi pas mal dans Java: GWT, la JVM d’Android, et maintenant Noop: http://code.google.com/p/noop/

Noop est une proposition d’un nouveau langage pour la JVM.
Certains prétendent que le langage Java va mourir, qu’il est coincé et n’évoluera plus, et que son successeur peut être Scala.
Moi qui suit fan de Groovy, je suis heureux de voir que SpringSource prennent en charge son évolution ( http://www.springsource.com/products/grails )
Bref, la JVM n’est pas prête de mourir! Les alternatives à Java se font sérieuses, et Google est maintenant de la partie!!

Noop se veut aussi un langage offrant le meilleur de Java, dont évidement l’API GoogleCollections: http://code.google.com/p/noop/wiki/Features#Good_stdlib

Comme je l’avais dit dans nos discutions Alt .Net, les langages ne se contentent plus d’offrir des mot-clés pour raccourcir le code, ils offrent maintenant des mot-clés pour faciliter l’utilisation de Framework:
– les mot-clés de Linq facilite l’utilisation du framework du même nom
– des mot-clés permettent d’utiliser aisément le framework de parallélisation PFX: http://prismwiki.codegear.com/en/Asynchronous_Statements
– d’autres mot-clés permettent de faire du « TDD »: http://en.wikipedia.org/wiki/Spec_Sharp

Google propose avec Noop des facilités de langages pour exploiter les frameworks de tests unitaires, le mocking, l’IOC, etc..

Alors je dis et je re-dis: Vive la JVM, vive les polyglottes et vive Google!

(J’en profite pour faire découvrir aussi le langage http://fandev.org/ qui est très orienté multilangages et Web)

Quel langage pour l’avenir : C#4 ou Oxygene (Delphi)

Suite au post de Romain sur l’avenir du langage C#, je voulais non seulement répondre, mais en profiter pour parler brièvement d’un autre langage .Net : Oxygene.

C#4 ?

Romain a trouvé une citation un peu abusive mais qui m’est pourtant tout de suite venu à l’esprit concernant C#4 :

The dynamic keyword is going be abused so much… C# is on its way to becoming PHP.

Pour la petite histoire, je viens de passer 2 jours à coder du Javascript… coder?? Débuguer surtout!
Je ne sais pas si suis allergique aux langages dynamiques, mais ça me frustre au plus au point de ne pas savoir quel sont les membres que possède un objet, et de devoir le vérifier au Runtime
J’ai passé 2h car j’ai fait une faute de frappe sur le nom d’un membre, ce qui ne plante pas, mais comme cela créer dynamiquement un nouveau membre avec ce nouveau nom, j’ai passé beaucoup de temps à comprendre pourquoi sa valeur était « null ».

C’est pour ça que les aspects « dynamiques » me font peur pour la maintenance des futures programmes C#4.
Ceci dit, le mot clé « var » existe déjà en C#3, et je n’ai pas vu quelqu’un en abuser (d’ailleurs, est-ce que la nouvelle version de Resharper suggère toujours de remplacer les types par des var ??!!).
Toujours pour diluer mes propos, il est vrai que dans la réalité on a besoin d’utiliser différents langages pour différents besoin, alors pourquoi ne pas tout réunir en un seul…
Mais j’aimerai éviter ça :

Pétage de cable

Parfois je me dit aussi que « C# is on its way to becoming C++« . Je n’ai pas beaucoup d’expérience en C++, et de ce fait j’ai parfois du mal à comprendre certains codes.
Mais j’ai surtout l’impression que les possibilités du langage sont tellement nombreuses, qu’on a pas 2 codes source C++ « dans la même prose », ce qui devient vite difficile à lire. Pouvoir faire 1 chose de 10 manières différentes, n’est en mon sens pas un bon truc.

Mais en pratique, les nouvelles fonctionnalités de C# ne sont utilisées que par une « élite » qui a un besoin très précis. Dans mon travail actuel, les gens ne savent pas encore faire du Linq, et j’ai l’impression que je suis le seul a avoir VRAIMENT migrer sur C#3. Donc, avant que quelqu’un découvre les nouveautés de C#4 et en abuse….

Ah, si, il y en a 1… et c’est le genre de personne à faire une chose d’une certaine façon « juste parce que c’est possible », si vous voyez ce que  je veux dire… et là, ça devient vraiment dangereux, et on fini par avoir du code incompréhensible car il a détourné une fonctionnalité de son but initial.

Je dois être vieux jeux, mais je préfère parfois la méthode « classique et lisible » même si elle est plus verbeuse. Pourtant, je me laisse séduire, et je deviens vite fan des méthodes d’extension et des expressions lambda. C’est comme si mes 2 personnalités entraient en conflit quand je me dit :

return toto??tata;
// ou
return toto!=null?toto:tata;
// ou
if(toto != null)
return toto;
else
return tata;

Il est clair que je préfère la première solution, mais on m'a défait fait la remarque :

euh, tu peux l'écrire avec le "if", je trouve ça plus lisible.

Et oui, il faut aussi s'adapter au niveau de lecture de l'équipe.

Mais là, je ne parle que du langage C#, pas des possibilité de la VM ou du Framework. S'il est possible d'interagir entre .Net et Javascript, alors je suis aux anges, mais il existe sans doute d'autres moyens "peut être plus contraignant" que d'ajouter de la dynamicité dans le langage C#. (On génère bien des "stub" pour communiquer en COM !)

Mais au finale, je me laisse prendre au jeux, et finalement je suis fan des expressions lamdba, Linq, les méthodes d'extensions, juste parce que ça s'écrit plus rapidement et que je suis fainéant.

Oxygene ?

Parce que je suis bavard, je voulais en profiter pour parler non pas de C#, mais de Oxygene.

delphiprismscreenshot

Un peu d'histoire : le créateur de Delphi a aussi été le créateur de C# : Anders Hejlsberg
Petit lien car ça ne fait pas de mal : Anders qui parle du future de C# (je sais, tout le monde l'a déjà vu).

J'ai commencer à coder en Delphi au Lycée (je ne compte pas les années Basic sous AsmstradCPC6128 ;)).
Delphi était magique à l'époque : langage Pascal Objet, IDE avec un puissant Designer pour application Windows, framework riche...

Puis le monde a évolué : Anders Hejlsberg a quitté Borland pour aller chez Microsoft.
A l'époque, Microsoft a voulu faire leur propre "Java" : J++.
Anders a commencer par travailler la dessus, mais Microsoft est entré en conflit avec Sun concernant ce J++, et c'est comme ça que .Net naquis.
Anders inventa alors C# pour l'occasion, et J++ fut porté sous .Net sous le nom de J#.

Les années noirs pour Borland ont commencé, les entreprises se tournant vers Microsoft et .Net.
Mais je suis resté à coder en Delphi 7 dans mon ancienne société, alors que .Net en était déjà à sa V2. Période de ma vie (en tant que codeur) très frustrante: pas de "foreach", pas de "generics", programmation par interface difficile, etc.

Pour Borland, ce fut de pire en pire : ils ont fini par migrer Delphi en .Net, et ont alors inclue le SDK de Microsoft .Net dans leur IDE... comme si Delphi en tant que langage était mort, et que "Delphi 2008" ne servait surtout qu'à développer en C#. Sans compter les frameworks tel que VCL.Net en conflit avec ceux de .Net comme Winforms.

Je n'ai pas travaillé avec Delphi 2008, mais je l'ai un peu testé. Malgré de gros problème de performance, cet IDE était déjà 1000 fois mieux que VisualStudio : refactoring poussé, historique "à la svn" à chaque sauvegarde/innactivité d'un source, Designer plus sympa, etc.

Mais finalement, Borland a laissé son IDE à Codegear et la mort de Delphi semblait proche. C'est pour cela que mon ancienne société a choisi de passer de Delphi7 à VisualStudio/C#.

Puis, récemment en surfant, j'ai découvert Oxygene.

Et je me suis dit : "haha, la résurrection de Delphi?"
Ce langage est dérivé de Delphi (comme une nouvelle version en quelque sorte), possède toutes (?) les fonctionnalités du langage C#3 comme Linq, etc.
Mais il ajoute aussi son lot de nouveauté que j'adore :

  • éviter les tests de nullité inutile :
if(truc.parent != null && truc.parent.parent != null)
toto = truc.parent.parent;
// devient
toto = truc:parent:parent;
  • ne pas choisir entre un "for" et un "foreach" car on a besoin d'un compteur

Combien de fois ais-je du ajouter un compteur dans un foreach (et risqué d'oublier le ++) et au final me résigner à utiliser le bon vieux "for". En Oxygene, le foreach peut gérer l'index :

for each u in Users index i do begin
// et on se sert de i

Maintenant, Oxygene fait du buzz sur le net... enfin surtout "Delphi Prism".

Finalement, l'IDE de Codegear est abandonné, et Delphi Prism s'intègre à VisualStudio (utilisé comme une application Eclipse RCP).
On retrouve le langage Oxygene, mais aussi un certains nombre de framework pour pouvoir faire des applications multi-plateform à l'aide de Mono.
Et pour faire plaisir aux ex-Delphi-istes, le package inclue une API d'interoperabilité entre .Net et les applications pure Delphi Win32.
Pour plus d'infos : http://www.delphi.org/2008/10/delphi-prism/

Il ne me reste plus qu'à tester tout ça :) Est-ce que ça veut dire que je vais abandonné C# pour revenir flirter avec Delphi?

Suivre

Recevez les nouvelles publications par mail.