01 décembre 2011

Vue semaine gratuite pour Windows Phone 7.5

SmallIcon99J’ai le plaisir d’annoncer la disponibilité sur le marketplace de mon application Free Week Calendar. C’est la première application gratuite à vous fournir une vue semaine de vos rendez-vous.

L’utilisation est aussi simple que fluide. Par défaut vos rendez-vous de la semaine courante sont affichés (les copies d’écran sont en anglais mais l’application est intégralement localisée en français):

screen1screen3

En glissant le doigt à gauche ou à droite vous obtenez la semaine suivante ou précédente.

En écartant les doigts vous zoomez sur vos rendez-vous, et en les rapprochant vous revenez à la vue globale.

screen2

Contrairement à d’autres applications, celle-ci est entièrement localisée pour fonctionner en français et respecter le lundi comme premier jour de la semaine.

P.S: merci à l’Accélérateur Windows Phone et Dalhia pour leur aide. Sans eux cette application aurait mis plus de temps à sortir.

28 septembre 2011

Un projet Silverlight de plus arrive à terme

rumeur1Aujourd’hui j’ai eu le plaisir de voir Bruitparif mettre à disposition du grand public son application Rumeur. Plaisir redoublé par le fait que j’ai eu l’honneur d’être le (seul) développeur de toute la partie Silverlight et ASP.NET.

L’application permet de consulter en temps réel les mesures de bruit effectuées par des stations à la pointe de la technologie. Elle a été lancée ce matin lors d’une conférence de presse à laquelle participait notamment Jean-Paul Huchon, le Président de la Région Ile-de-France. L’interface est unique et novatrice à plusieurs titres.

rumeur2Le bruit est un sujet majeur de préoccupation pour chacun des Franciliens. L’interface permet d’obtenir des informations en temps réel, notamment en consultant les évènements acoustiques qui sont identifiés par les stations et validées par Bruitparif.

Pour le côté technique, cette application a été l’occasion de mettre en œuvre une méthodologie agile, Silverlight 4, RIA Services, ASP.NET 4.0, SQL Server et Matlab. Je suis très favorable au développement agile, et Rumeur est une preuve de plus que l’on peut conjuguer satisfaction de l’utilisateur et qualité grâce à l’agilité.

Mais plutôt que de vous en parler, je vous laisse la découvrir. Cliquez ici.

Revue de presse:

18 juillet 2011

StackPanel inverse pour Silverlight

J’ai besoin d’un StackPanel qui agence les éléments du bas vers le haut, mais je n’en ai trouvé aucun qui le fasse. Il ne suffit pas de mettre VerticalAlignment="Bottom" sur les éléments d’un StackPanel comme on le voit souvent recommandé, car le Z-order n’est pas correct (ça se remarque si vos éléments “grignottent” les uns sur les autres, par exemple si vous les empilez en 3D).

Voici le code que j’ai écrit, que vous êtes libres d’utiliser dans vos applications (license MS-PL):

public class ReverseStackPanel : Panel
{
    protected override Size MeasureOverride(Size availableSize)
    {
        foreach (FrameworkElement child in Children)
        {
            child.Measure(availableSize);

        }

        return availableSize;
    }

    protected override Size ArrangeOverride(Size finalSize)
    {
        double bottom = finalSize.Height;
        foreach (var child in Children)
        {
            child.Arrange(new Rect(0, bottom-child.DesiredSize.Height, finalSize.Width, child.DesiredSize.Height));
            bottom -= child.DesiredSize.Height;
        }
        return finalSize;
    }

}

14 juillet 2011

Connecter un Windows Phone 7 au Sharepoint Office 365

Connecter son Windows Phone à Office 365, ça se fait les doigts dans le nez, sauf pour la partie Sharepoint. Voici comment faire.

En quelques minutes j’ai synchronisé mes contacts, mon agenda et mon courrier. Que du bonheur. Ou presque, car pour me connecter au site Sharepoint fourni dans l’offre Office 365, ça ne coulait pas de source. A priori, ça sera plus facile avec la version Mango de WP7, mais pour l’instant elle n’est pas sortie en version finale et disponible pour le grand public. Voici donc comment j’ai fait pour que ça fonctionne. N’hésitez pas à commenter et enrichir, tout ceci est empirique, et si l’on en croit les forums ce n’est même pas censé fonctionner.

  1. Aller dans le hub Office
  2. Défiler vers la droite vers le 3ème panneau, “Sharepoint”
  3. Cliquer sur le bouton “ouvrir l’URL”
  4. Saisir l’URL, style https://votrenom.sharepoint.com
  5. Ignorer le message d’échec et accepter l’option d’ouvrir le site via Internet Explorer
  6. Dans Internet Explorer, saisir les informations d’identification que vous utilisez pour Office 365 et valider
  7. Recommencez les étapes 1, 2, 3 et 4. Et voilà!

31 mai 2011

Templates de controles gratuits pour Silverlight 4 (mis à jour)

Je viens de rajouter de nouveaux contrôles dans le projet Silverlight Control Templates. Ce sont des contrôles que je réalise à titre de démo durant mes formations Silverlight.Ils sont disponibles avec le code source sur CodePlex.

Et en action, ça donne:

Get Microsoft Silverlight

18 mai 2011

Faire du MVVM ou pas: critère de choix

Depuis le temps que je l’explique à mes clients et que je l’écris sur Twitter, me voilà bien content de découvrir ce soir que je ne suis plus le seul à dire que le design pattern MVVM est à utiliser avec modération sur les projets Silverlight et WPF. Permettez-moi de vous livrer ici mon critère pour savoir si vous devez ou non faire du MVVM sur votre projet.

“On m’aurait menti? MVVM n’est pas la panacée?”

Si vous n’avez pas lu ce billet très complet d’Olivier Dahan qui explique en quoi MVVM n’est pas la panacée que d’aucuns prétendent, allez y faire un tour. Si je peux ajouter ma pierre à ce billet, c’est surtout la suivante: en faisant du Silverlight ou WPF correctement, on fait déjà du MVC (grâce notamment au XAML, INotifyPropertyChanged et INotifyCollectionChanged, NavigationService, au Binding et son DataContext, aux ressources, et événements routés). Et MVC c’est déjà un beau modèle, surtout quand on arrive à le mettre en oeuvre aussi simplement et élégamment qu’en Silverlight/WPF.

“Alors dans quels cas choisir MVVM?”

Mon travail d’expertise m’ayant amené à intervenir sur plusieurs dizaines de projets Silverlight/WPF, j’ai pu en tirer une conclusion simple sur l’usage ou non de MVVM. Voici comment décider simplement si MVVM fera du bien ou non à votre projet.

Répondez au questions suivantes:

  • Y-a-t-il plus de 4 développeurs sur le projet?
  • Est-ce que les développeurs vont réaliser une bonne dose de tests unitaires automatisés?
  • Est-ce que la maquette est faite et validée, donc que les entrées/sorties sur les écrans changeront peu?

Vous avez répondu “oui” à deux questions au moins? MVVM est fait pour votre projet (une formation MVVM pour votre équipe?). Sinon, mon conseil: évitez MVVM sur ce projet.

“C’est simple, mais il faut un nom à cette règle, pour faire pro”

C’est vrai que “théorème d’Archimède” ça fait plus classe que “le truc qui fait que ça flotte”. Alors si vous voulez un nom je vous propose d’appeler là règle ci-dessus “critère d’épo”. Pourquoi? Parce qu’epo c’est mon pseudo Twitter et qu’il vous fallait un nom, n’est-ce pas? Sinon appelez ça “théorème du consultant Silverlight”, ça ira aussi bien.

Un témoignage sur MVVM? Pas d’accord avec moi? Vos commentaires sont les bienvenus.

12 avril 2011

HTML5 vs Silverlight vs Flash

HTML5, Silverlight 5 ou Flash? Dur dur de choisir, car on entend de tout en ce moment. Rassurez-vous, ce que vous entendez s'agit simplement d'une belle intox, une opération de com' venant de services marketing douteux. Je vais ici tâcher de vous fournir une réponse technique à cette légitime question: "faut-il choisir HTML5 ou Silverlight ou Flash? Ou attendre?".

Pourquoi des RIA? Et qu’est-ce que c’est?

Pour commencer, il faut bien comprendre que les RIA sont une technologie d’avenir. Le problème est qu’aujourd’hui le décideur veut le beurre et l’argent du beurre (comme souvent), à savoir en termes techniques un déploiement facile et une interface qui tue et des fonctionnalités avancées. Or dans la vraie vie il doit choisir entre l’un et l’autre:

image

(diapositive issue de mes formations Silverlight)

Or notre décideur n’aime pas choisir. Que fait-il? Il prend le beurre et l’argent du beurre ainsi que la crémière. Ce qui dans le monde du développement revient à vouloir un déploiement facile et des fonctionnalités avancées/sexy. C’est pourquoi on a inventé les RIA, ou Rich Internet Applications:

image

Les RIA, ce sont des applications qui se déploient un peu moins bien que des applications Web, mais qui offre une richesse d’interface et d’accès à la machine au-delà du Web. Des animations, la Webcam, le mode déconnecté, une gestion fine de l’impression par exemple. Et des colonnes de grille redimensionnables, bien sûr. Les utilisateurs veulent toujours ça et c’est galère à faire en HTML4.

Bref, les RIA ont le vent en poupe vu qu’elles répondent à un besoin omniprésent. Toute grande entreprise de l’informatique veut donc avoir son RIA. Voilà pourquoi il y a énormément d’intox sur le sujet. Alors qui peut concourir? Voyons:

  • Adobe: extrêmement bien placés, ils ont Flash qui est déjà présent dans 95% des navigateurs (source).
  • Microsoft: ils n’avaient aucun lecteur de RIA, mais tous les outils côté serveur avec ASP.NET, WCF et compagnie. Ils ont donc sorti en vitesse Silverlight, basé sur le prometteur WPF. L’adoption de Silverlight a été rapide, il est aujourd’hui présent dans 72% des navigateurs (source).
  • Sun: ils ont sorti JavaFX. Adoption: zéro. Mort né.
  • Apple: ils sont arrivés un peu tard. Alors ils ont pris la tactique du “de toutes façons tout ça c’est nul et ça ne sert à rien”. On critique Flash pour n’importe quelle raison, genre la performance, et dit que HTML5 ça marche déjà. Puéril, mais des gens ont gobé le discours.

HTML5

Alors, Apple aurait-il raison? Faut-il faire du HTML5? Soyons clairs: si vous choisissez HTML5 pour votre appli RIA aujourd’hui vous faites deux erreurs:

  • HTML5 n’est pris en charge que par une fraction infime des navigateurs aujourd'hui: pour le déploiement facile c’est raté.
  • HTML5 n’est pas un standard; quand un navigateur dit comprendre HTML5, il n’en comprend en fait qu’une version spéciale, faite pour lui
  • Le jour où HTML5 deviendra un standard, ce standard sera différent de la purée actuellement prise en charge par les IE9, Firefox 4 et autres. Il faudra donc recoder les sites faits en HTML5 non-standard pour les rendre conformes au standard (même problème qu’avec IE6 qui est aujourd’hui tant décrié car il avait fait l’erreur d’anticiper sur la norme HTML4).
  • La norme HTML5 n’est prévue que pour … on ne sait pas. Dans 2 ans ou 20 ans, selon les sources, plutôt pour 2014 aux dernières nouvelles (voir Wikipedia).
  • Quand HTML5 sortira en tant que norme, il est fort possible qu’il sera distancé par Flash et Silverlight sur la richesse d’interface. Pas d’accès à la webcam pour HTML5, par exemple. Mais il est difficile de prédire l’avenir.

Ne me méprenez pas. HTML5 sera super. Avoir un standard pour le Web, il n’y a rien de mieux, et rien ne me fait plus crier que de voir ma banque dire qu’ils ont une appli iPhone alors qu’ils n’ont même pas un site Web capable d’être affiché sur un smartphone qui respecte HTML4. Je suis pour les standards. Mais la question est: comment offrir aujourd’hui aux utilisateurs l’interface de demain?

Flash

Flash? Son gros avantage est son taux de pénétration. Présent dans presque tous les navigateurs, c’est presque le déploiement Web dont on rêve. Seul inconvénient: il ne prévoit rien pour l’exposition des services. Autrement dit, vous codez côté client en ActionScript alors que côté serveur vous utilisez au choix PHP, Java ou .NET. Le jour où vous voulez faire un tri côté serveur plutôt que côté client pour optimiser les choses, bon courage.

Si vous avez de l’existant en .NET, le passage à Flash pour la couche de présentation sera un nouvel investissement: apprentissage et Flash et ActionScript, et vous tomberez dans un monde un peu moins standard vu que pour les services Web consommés chacun utilise sa techno. Sinon, tant qu’à apprendre quelque chose, pourquoi pas Flash.

Silverlight

Un taux d’installation moins élevé que Flash mais astronomiquement plus élevé que les différentes saveurs d’HTML5. Il est surtout intéressant si vous avez déjà du .NET chez vous: C# ou VB.NET, ASP.NET ou WinForms. La formation sera rapide et vous pourrez réutiliser votre code (logique métier, par exemple) côté client. Et la faire passer du serveur au client facilement (et réciproquement).

Silverlight a en outre un énorme avantage sur la concurrence: comme WPF, il permet à un chef de projet ou un graphiste, moyennant 2 jours de formation, de pouvoir créer lui-même une maquette fonctionnelle qui sera directement réutilisable par le développeur. Dans cette configuration, le développeur n’a plus qu’à ajouter la logique métier et les Web services. Ce qui avec des fonctionnalités comme Entity Framework et WCF RIA Services se fait très vite.

Avec ce type de développement, on passe très vite de la maquette à l’application et il n’y a pas de surprise sur l’interface. Pour en voir un exemple, voyez ici comme nous passons de l’ergonome au graphiste au développeur sans perdre un octet de ce qui a été développé. J’ai plusieurs clients chez qui le chef de projet a réalisé et diffusé en quelques jours la maquette lui-même avec Expression Blend, avec pour résultat une appli endossée par les utilisateurs et sortie du produit fini extrêmement rapide.

Alors, je choisis quoi?

Bref, ma recommandation est la suivante:

  • vous voulez déployer sur 100% des terminaux et acceptez une expérience utilisateur simple: prenez HTML4 avec éventuellement AJAX (ASP.NET le fait très bien)
  • vous voulez faire une interface riche dans 2 ou 5 ans: attendez HTML5 (ASP.NET MVC3 le fait déjà)
  • vous voulez faire une interface riche aujourd’hui et avez déjà du code en C# ou VB.NET: prenez Silverlight
  • vous voulez faire une interface riche aujourd’hui et n’avez aucun existant .NET: prenez Flash

Besoin d’une analyse plus fine? Je suis à votre service.