MIX11 : Quelques retours

by Nicolas Calvi 21. avril 2011 18:22

Je reviens du MIX 2011 ou j'ai pu y voir de nombreuse choses très intéressantes, je vous propose des petits résumés des sessions que j'ai appréciés avec le lien vers la webcast.

A Whole NUI World : Microsoft Surface 2 and Windows Touch (Par Johanna Rowe) - DVC07

Une Interface Utilisateur Naturelle n’est pas une technologie. Le touch n’est pas une NUI mais c’est le fait d’appliquer une technologie aux besoins d’un utilisateur en prenant en compte cet utilisateur dans la globalité (âge, connaissance des nouvelles techno etc.) qui va rendre une interface « naturelle » ou pas. C’est ainsi que Luis Cabrera voit les NUI. Parlons maintenant de Surface V2, comme vous le savez peut-être déjà, elle peut être utilisée à l’horizontal, à la verticale, à 45° etc. A ce propos, Luis reviens sur l’importance de bien comprendre qu’une application réalisée pour une utilisation horizontale ne peut pas être transposée à la verticale sans être repensée. La raison en est que chaque différente orientation de la table implique des utilisations différentes dans des contextes bien distincts et donc, des expériences différentes. Un exemple énoncé par Luis : si on essaie de porter une application pensée à 360°, comment va réagir l’utilisateur une fois la table à la verticale ? Il devra mettre sa tête en bas pour pouvoir continuer à utiliser toutes les features de l’application… Côté technique, Luis a présente la nouvelle version du SDK. Elle apporte une boite à outils beaucoup plus complète et plus simple à utiliser que le simulateur de la V1. Elle permet, par exemple, de manipuler plusieurs contacts en même temps. Enfin, l’équipe Surface a préparé un outil de migration de la V1 à la V2. Lorsque cet outil n’est pas suffisant, il faudra se reporter aux guides de migrations Surface.

Get ready for fast application Switching in Windows Phone - DVC09

Dans cette session, on nous a présenté la nouvelle façon dont Mango va gérer le Tombstoning, à savoir le rechargement d’une application après l’avoir désactivée.
Actuellement, si on change d’application ou si on revient au menu, le Framework lance un « NavigateFrom » puis lève un événement « Desactivated » et on a quelques secondes pour persister l’état de notre application avant qu’elle ne soit tuée. Ensuite, au moment de la réactivation, l’événement « Activated » est levé, puis « NavigateTo » et c’est à nous de repositionner l’état de notre application.
Dans Mango cela va changer. En fait, Mango va faire un snapshot de tous les états de notre applications et va le restaurer ensuite en l’état. Nous n’avons donc rien à faire pour récupérer l’état de note application.
Il en va de même des connections que nous avons avec les Sensors : le Framework va automatiquement détacher le Sensor de notre application puis ensuite le ré-attacher, on conserve donc les accès à la caméra ou autres Sensors du WP7.
Par contre, de temps en temps, Mango fait du Tombstoning et là il faut faire comme avant. Pour savoir, au moment de la réactivation, si on est en Tombstone ou non, il faut tester la propriété « IsAppInstancePreserved », si elle est à TRUE :pas de Tombstone, FALSE sinon.
Pour résumer :

- Quand « Desactivated » : Sauvegarde de l’état (comme maintenant)
- Quand « Activated » : On restaure l’état si on est en Tombstone et on ré-attache les ressources si nécessaire

D’autres informations ont été données, comme le fait que, dans Mango, on pourra faire tourner du code en background même avec l’écran locké ou si le téléphone est en veille. Par contre, pas possible d’exécuter du code sur un Launcher / Chooser.

Building Browser Experiences with Silverlight 5 - MED10

Dans cette session, il a été question de lister les grandes nouveautés de Silverlight 5, voici les plus importantes :

- Implicit Data Template : Il est maintenant possible comme dans WPF, de définir un template par défaut pour un type de données particulier (un ViewModel par exemple) et de le placer en ressource statique, sans Key, ce style sera appliqué à tous les rendus du type donné qui lui seront associés. Par exemple dans une ListBox ou une ComboBox
- FindAncestror : Il est maintenant possible comme dans WPF, d’écrire une expression de binding qui va chercher sa source dans l’arbre Visuel parent
- Debugging XAML : Il est maintenant possible de placer des points d’arrêts sur des expressions de Binding dans le XAML. Une fois le point d’arrêt atteint, il est possible de voir le contexte courant, ainsi que beaucoup d’informations utiles
- Markup Extension : On peut désormais créer nos propres expressions pour XAML. Dans la session, une démo montrait comment on peut créer une extension « Method » qui permet, sur un événement, de binder une méthode du contexte. C’est très intéressant, car dans cet exemple cela permet de binder une méthode du ViewModel sur un event, et ainsi se passer d’une commande.
- DataContextChanged : Il y a maintenant un événement qui couvre le changement du DataContext en proposant au moment du callback, l’ancienne et la nouvelle valeur du DataContext, pratique s’il y a des traitements à faire avec l’ancienne source
- UpdateSourceTrigger : Un nouveau mot clé XAML qui permet sur un Binding de définir de quelle façon la source informe de son changement de valeur, cela permet de filtrer des notifications parasites
- Vector printing : Une nouvelle façon de rendre les textes et de les transmettre à l’imprimante, cela réduit de plus de 60% le volume de donnée à transférer à l’imprimante et accélère l’impression
- Trick Play : Maintenant quand un lecteur fait de l’avance ou du retour rapide sur une vidéo par exemple, c’est plus fluide et le son ne se coupe pas, ça fait comme si on accélérait une vidéo sur VHS :D
- RitchTextBoxFlow : Plusieurs contrôles en nom avec « Flow » permettent de rendre du texte qui s’adapte à une zone de rendu. On définit une zone rectangle (la taille du contrôle) et le texte grossi, réduit et se repositionne si ce rectangle change
- WCF RIA Services SP2 : Annonce de sa disponibilité avec la Beta de Silverlight 5, ils ont amélioré le passage de types complexes (enfin !) et c’est à peu près tout, ils ne se sont pas éternisés sur le sujet
- Binding in Style Setter : Tous est dans le titre on peut maintenant faire des expressions de Binding dans une Setter (Value) d’un Style

Voilà ce qui a été dit pendant cette session. Il y a d’autres éléments comme les API 3D notamment, donc je vous invite à télécharger Silverlight 5 Beta et à la tester.

Multitasking in the next version of Windows Phone - DVC18

Session très intéressante sur l’implémentation du Multitâche dans Mango. J’ai trouvé que cette implémentation était très intelligente, avec derrière tout ça, une philosophie.
On nous parle de « Windows Phone Harmony », à savoir le fait de créer des applications qui respectent à la fois l’expérience utilisateur mais aussi le téléphone à travers sa durée de vie avec la batterie.
Forcément quand on parle de multitâches on n’est pas à l’abri d’abus ou d’applications mal conçues qui vident la batterie. Avant de revenir sur ce point, voyons ce qu’apporte Mango en terme de Multitâches :

- Possibilité de switcher d’une application à l’autre (grâce entre autre au système de snapshot introduit dans Mango), à l’instar de l’iPhone on peut aller d’une application à l’autre en un clic
- Introduction du « Background Notification Service » qui permet de créer des événements de rappel dans le téléphone
- Introduction du « Backgound Transer Service » qui permet de télécharger des données en background et d’être notifié de son avancement et de sa fin
- Introduction du « Background Audio » qui permet de faire jouer du son même avec l’application fermée
- Introduction des « Background Agent », des services qui s’exécutent en tâche de fond et qui sont créés par les développeurs

En ce qui concerne les « Background Agent », quand on lance son application et que l’on active un agent, celui-ci sera vivant pendant 14 jours si l’utilisateur ne relance pas l’application. Si l’application n’est pas lancée d’ici 14 jours, WP7 désactive automatiquement l’agent. De plus, il existe une interface dans les paramètres qui liste tous les agents installés dans le téléphone et il est possible à l’utilisateur de les désactiver manuellement.
Avec cette politique, les agents sont contrôlés intelligemment, soit par WP7 qui désactive ceux qui ne servent plus, ou par l’utilisateur s’il estime que cet agent n’a pas lieu de persister. Je trouve que c’est une façon très intelligente d’intégrer le multitâche et qui responsabilise le programmeur sur ce qu’il fait.

Enhanced Push Notification and live Tiles for WP7 - DVC08

Dans cette session on est revenu sur les possibilités que Mango nous offre pour modifier les Tiles. Actuellement, on peut seulement modifier l’image, le titre et changer le compteur et ce uniquement par un message Push.
Aujourd’hui, Mango nous permet de le faire sans Push avec une nouvelle API locale, mais ajoute aussi une face verso au Tile. Si les deux faces du Tile sont définies, il va se retourner à intervalle régulier. Ça permet d’avoir plus d’informations sur un seul Tile.
Autre nouveauté, c’est le Deep Dive (ou Deep Toast) qui permet lorsque l’on clique sur un Toast Message ou un Tile, de naviguer vers une page particulière de son application. Cette fonctionnalité sera utile avec l’ajout de la possibilité de mettre plusieurs Tiles pour une même application. Par exemple, sur une application d’informations type BBC, on peut avoir le Tile pour lancer l’application et un autre pour la lancer et se positionner directement sur la page « information locale ». Ce mécanisme marche aussi pour les Toast Messages.
Le problème du Deep Dive c’est que la page de navigation devient la page d’accueil de l’application, or si cette page nécessite un Back par le bouton physique pour retourner à la vraie page d’accueil de l’application, elle la fera quitter. Cela demande donc une adaptation de notre code pour justement couvrir ce besoin.
Globalement, une plus grande liberté est donnée sur les Tiles et c’est une très bonne chose.

What's new for WP7 with XNA - DVC16

Il nous a été présenté dans cette session la nouvelle fonctionnalité de Mango qui permet de mettre du XNA dans une application Silverlight. J’avoue avoir été vraiment impressionné par cette fonctionnalité. L’intégration est extrêmement bien faite et ouvre des possibilités énormes.
Dans les faits, il suffit de créer une application Silverlight et sur une page mettre « SetSharedMode(true) » pour que la page passe en contexte XNA. A ce moment, on a bien un contexte XNA avec toutes les possibilités que ça offre.
Pour gérer les boucles « Update » et « Draw », il suffit d’instancier la classe « GameTimer » et de se brancher sur les deux événements en question. A ce moment, dans la callback on a accès au GraphicDevice du contexte XNA et on l’utilise normalement (SpriteBatch, etc.).
Ce qui est encore plus fort, c’est qu’il est possible de rendre une interface XAML dans ce contexte XNA. Pour cela, instancier la classe « UIElementRenderer » en lui passant le contrôle de l’arbre Visuel à partir duquel vous voulez rendre l’interface. A ce moment il vous donnera une « Texture2D » que l’on pourra utiliser dans notre contexte XNA.
Ce qui est encore plus énorme, c’est que les événements sont quand même récupérés pour l’interface Silverlight, à savoir que le bouton continue à lever le clic, les textbox à afficher le clavier virtuel, etc. Donc notre interface est rendue en XNA mais continue à fonctionner, on peut même utiliser des Storyboards sur des éléments XNA comme une caméra, des couleurs de texture. C’est réellement impressionnant.

MIX 2011 - De retour !

by Nicolas Calvi 18. avril 2011 19:08

Je reviens du MIX 2011 ou j'ai eu l'honneur de participer à une session sur les interfaces naturelles avec mes homologues MVP Surface. Pour voir cette session cliquez en dessous :

http://channel9.msdn.com/events/MIX/MIX11/OPN09

Je vous conseil aussi de regarder la session sur Surface V2 par Luis Cabrera :

http://channel9.msdn.com/Events/MIX/MIX11/dvc07

Bon visionnage :)

MIX 2011 : Posez vos questions !

by Nicolas Calvi 1. mars 2011 02:38

Je vais participer lors du MIX 2011 à Las Vegas, à une session de question réponse avec mes homologues MVP Surface. Nous avons créé pour cette session une page Facebook qui vous permet de nous soumettre les questions (en anglais) que vous voudriez voir posées dans cette session, pour soumettre une question allez sur ce lien, faite "J'aime" et postez sur le mur.

http://www.facebook.com/pages/Surface-MVP-MIX-2011-Session-Questions-/100586296689169

Le sujet est le suivant :

The Microsoft Surface MVPs Present: Natural User Interfaces, Today and Tomorrow; An Interactive Discussion and Demonstration

Joshua Blake; Neil Roodyn; Rick Barraza; Bart Roozendaal; Josh Santangelo; Nicolas Calvi; Dennis Vroegop

The Natural User Interface (NUI) is a hot topic that generates a lot of excitement, but there are only a handful of companies doing real innovation with NUIs and most of the practical experience in the NUI style of design and development is limited to a small number of experts. The Microsoft Surface MVPs are a subset of these experts that have extensive real-world experience with Microsoft Surface and other NUI devices.

This session is a panel featuring the Microsoft Surface MVPs and an unfiltered discussion with each other and the audience about the state of the art in NUI design and development. We will share our experiences and ideas, discuss what we think NUI will look like in the near future, and back up our statements with cutting-edge demonstrations prepared by the panelists involving combinations of Microsoft Surface 2.0, Kinect, and Windows Phone 7.