Techdays 2015 - Jour 1 - Nos impressions

Du 10 au 12 Février ont eu lieu les TechDays, l'événement annuel incontournable de Microsoft. Le thème de cette année étant "Ambient intelligence", nous retrouvons au programme les principaux thèmes : Mobilité, Cloud, Big Data et Internet Of Things. La première journée est dédiée aux développeurs, nous avons pu assister à des sessions plutôt techniques et pratiques. Voici donc un rapide compte-rendu des sessions que les Octos ont pu suivre ce jour.

Keynote d'ouverture : new Keynote() { cloudFirst=true, mobileFirst=true }.Connect();

Le format et le déroulement de la keynote étaient plutôt sympathiques et originaux. Le point de départ est une idée de projet qui nous est expliquée. Durant le reste de la keynote, différents intervenants vont alors se relayer pour expliquer la mise en place du projet sous ses différents aspects (Back / Front / ALM / Design / etc.)

Le projet "Heraclès", qui va servir de fil conducteur à cette keynote, vise à améliorer l'expérience client, en facilitant l'enregistrement des conférences et meetings dans les locaux de Microsoft France. L'application sera développée sous la forme d'une application Web "responsive".

Voici un résumé des technologies mises en place pour ce projet :

  • Le BackOffice est développé en WebApi, hébergé sur Azure Websites
  • Le FrontOffice est développé en ASP.NET vNext, aussi hébergé sur Azure pour profiter de sa fonction d'autoscaling
  • Les utilisateurs peuvent faire des suggestions d'améliorations sur UserVoice, améliorations qui sont automatiquement remontées dans le Visual Studio Online de l'équipe grâce aux connecteurs VSO
  • Azure Website offre nativement la possibilité de faire de l'AB Testing entre différentes instances du site
  • Les commerciaux Microsoft disposent d'une application mobile utilisant Cortana (reconnaissance vocale des Windows Phone) pour accéder aux fiches cliIMG_2272[1]ents
  • Les locaux de Microsoft sont modélisés en 3D dans une scène BabylonJS (l'occasion de présenter le nouveau navigateur "Spartan")
  • Différents objets connectés (basés sur du Raspberry Pi et Gadgeteers) permettent de récupérer des informations physiques (nombre de passages, températures, etc.)
  • Ces données sont remontées sur un Bus Azure (Azure Events Hub). On nous annonce un million de messages par seconde
  • La scalabilité de l'architecture est mise à l'épreuve à l'aide des Azure Web Jobs, qui permettent d’exécuter des applications sur le cloud en parallèle
  • Ces données sont traitées à l'aide du service "Stream Analytics" encore sur Azure, et des notifications sont envoyées à l'aide de l'Azure Notification Hub
  • La scène BabylonJS est finalement intégrée dans Excel, agrémentée des données extraites,  à l'aide des nouvelles "Applications Office"

Ce que j'en retiendrai : A défaut de présenter des choses vraiment révolutionnaires, Microsoft nous prouve qu'il met à disposition un véritable écosystème, complet et cohérent, et avec un effort de mise en oeuvre visiblement faible.

Créer une expérience utilisateur pour tous les écrans avec les universal apps !

Par Benjamin Launay et Nathalie Belval

Cette session nous invite à prendre soin du design de nos applications. Après une rapide introduction sur la convergence des différentes plateformes et la multiplication des devices sur laquelle tournent nos applications, ils nous donnent des pistes concrètes sur leur manière de faire. Pour l'exercice, ils ont mis au point une application de démo (disponible sur Codeplex). La philosophie d'UX qu'ils préconisent est la stratégie "Mobile First" : penser mobile en priorité, puis repartir de cette base pour des devices plus grands. Ainsi, le téléphone devient un "first class citizen", sachant qu'il reste un des devices les plus utilisés actuellement.

Pour ce faire, la session continue sur des techniques et méthodes concrètes appliquées sur leur démo d'une application universelle (donc Windows Phone + Windows Store). En quelques points :

  • Penser "User Controls" pour augmenter la réutilisablité des composants
  • Utiliser les contrôles spécifiques permettant de gérer des flux (WrapGrid, ViewBox)
  • Utiliser le "System Layout" : permet de gérer par le code de différents VisualStates, qui s'adaptent en fonction du device
  • Pour les ressources graphiques, toujours garder en tête qu'ils pourront être utilisés sur des devices très grands, et choisir en conséquence le format (SVG / Font Icons / Bitmaps en plusieurs résolutions...)

Ce que j'en retiendrai :

  • "Mobile First" : j'ai été convaincu par la démonstration
  • D'ici peu, il sera normal pour une application de tourner sur des devices de 3 pouces.. à 40 pouces et plus !

Moteur de rendu Spartan

Par David Catuhe et David Rousset

Cette session est dédiée au nouveau navigateur de Microsoft « Spartan » qui sortira prochainement.

Cela ne signifie pas pour autant la mort d'Internet Explorer, rassurez-vous ! Les deux speakers nous ont beaucoup amusés avec leur légendaire humour et leurs anecdotes sur le nommage de ce nouveau navigateur. Ils nous ont expliqué comment le navigateur fonctionne et en quoi sa performance est bien meilleure que celle des précédents navigateurs.

Aligné sur les autres navigateurs du marché, Spartan nous promet une grande compatibilité et veut faire oublier aux développeurs les difficultés d’intégration rencontrées dans le passé sur IE.

Spartan nous propose entre autre l’API GamePad (gestion des manettes de jeu) ainsi que le WebAudio (OpenAL: Open Audio Lib) pour un son spatialisé qui ouvre encore un peu plus le web au Gaming.

Les David mettent l’accent sur le TypeScript, un meta langage fortement typé permettant de générer du JavaScript propre et maintenable (comme le fait CoffeeScript). De nombreux exemples (class, extend etc.) nous montrent ce que va nous apporter le développement en mode objet coté navigateur.

Cette session nous réconcilie avec les navigateurs Microsoft et nous donne envie de tester Spartan. Il est déjà disponible sur Windows 10.

Ce que j’en retiendrai :

Un nouveau navigateur Microsoft plus compatible et plus performant. Une nouvelle gestion du son dans le navigateur avec l’OpenAL. Le développement en TypeScript.

Les nouveautés de C# 6

Mitsu Furuta nous présente dans cette session les nouveautés qui vont arriver dans la prochaine mouture de C#. Il annonce d'emblée qu' il n'y aura pas cette année de grosse nouveauté comme on a pu en voir précédemment. Il n'en reste pas moins quelques améliorations sympathiques, principalement rendues possibles grâce à l'arrivée du compilateur Roslyn. Plutôt que de le re-lister ici, je vous invite à lire cet article MSDN qui liste les différentes nouveautés présentées lors de la session.

Ce que j'en retiendrai :

  • Quelques fonctionnalités me donnent envie de les utiliser, en particulier
    • les String Interpolations, permettant d'injecter directement des variables dans les chaînes
      • var s = @@ARTICLE_CONTENT@@quot;\{p.Name} is \{p.Age} year(s) old";
    • le Null-Conditional Operator, permet d'arrêter l'évaluation des membres nullables
      • int? length = customers**?.**Length; // null if customers is null
  • C# 6 fait un nouveau pas vers un code plus concis (et plus fonctionnel)

La Magie des Pixels pour les nuls :

Par David Rousset, David Catuhe et Michel Rousseau

Si vous ne vous lancez pas dans le monde du développement 3D parce que vous trouvez cela bien trop compliqué et que vous n’êtes pas une tête en math, cette session était faite pour vous !

L’objectif de cette démo était de vulgariser un maximum le vocabulaire du développement 3D.  La salle a pu apprendre et se remémorer ce qu’est un Vertex, des vertices, vecteurs, frustum, et l’utilisation des matrices par exemple.

Nous avons eu des démos de code et de modélisation 3D sur l’utilisation de la camera et la gestion de la lumière dans les scènes 3D.

Ce que j’en retiendrai :

J’en retiendrai que créer une scène en 3D n’est pas réservé à une élite de personnes qui ne se comprennent qu’entre elles, mais que même quelqu'un qui n’a pas bac + 7 en math peut faire de la 3D. Je retiens aussi que pour faire de la modélisation 3D, il faut en plus du talent, aimer cliquer !

Visual Studio Online

Session présentée par Jérémy LANDON, Etienne Margraff et Arnaud Auroux, qui nous présentent sous la forme d'une histoire les périples rencontrés par John, qui souhaite mettre en place un réseau social pour chats ! On retrouvera dans cette session toute la partie ALM survolée rapidement lors de la keynote de manière plus détaillée :

  • Gestion du backlog
  • Gestion des builds
  • Déploiement sur Azure de la version de prod et de test (staging build)
  • Exemple de Work Items de type Cas de test / Bugs
  • Utilisation des Services Hooks : Visual Studio Online se synchrone automatiquement sur un Trello
  • Intégration de métriques Application Insight

Ce que j'en retiendrai :

Visual Studio Online n'est pas "juste" un Team Foundation Server sur le cloud. Les interactions possibles avec les systèmes extérieurs (Trello / Uservoice / Déploiement Azure / etc) apportent un plus non négligeable.

Entity Framework 7 : nouvelle version majeure d'Entity Framework

Par Philippe Sentenac et Sébastien Pertus

Session de présentation de la nouvelle version d'Entity Framework, un véritable "reboot" du framework. A l'instar de vNext, Entity Framework est devenu très léger et minimaliste :

  • Le runtime "nu" est disponible via un nuget, et peut être complémenté par d'autres nugets pour les providers
  • La gestion des modèles EDMX (Database First) est complètement supprimée
  • Chaque provider de datasource devra être importé à part

En parlant de providers, le catalogue est désormais bien étoffé, et permet des connexions à SqlServer, SQLite, Redis, Azure et InMemory De ce fait, le framework est extrêmement léger, et pourra être embarqué sur du mobile, et fonctionnera aussi sur d'autres OS (Linux et MacOs). Les requêtes SQL générées sont désormais plus "propres", et tirent avantage des requêtes SQL paramétrées. La session se termine sur une démo d'une application console, incluant un schéma Entity Framework qui récupère ses données d'Azure Storage, et qui tourne sur un Ubuntu. Plutôt impressionnant !

Ce que j'en retiendrai :

Attention aux migrations de projets actuellement en EF 6.x. La disparition des schémas EDMX risque de poser soucis. Le provider InMemory (pseudo-base de donnée en mémoire) devrait apporter une vraie facilité pour les tests unitaires. Le framework a su se remettre en question, et nous revient sous une forme beaucoup plus souple !

BabylonJS, le moteur 3D webGL open source simple et performant

par David Catuhe, David Rousset et Michel Rousseau

Dans cette session les speakers nous montrent comment réaliser une scène 3D en BabylonJS : de la modélisation au développement. Ils nous ont montré comment optimiser et améliorer les performances. Ils nous ont aussi fait découvrir les nouveautés sur BabylonJS, la gestion du son 3D, de nouvelles informations sur les performances de la scène et les nouveaux filtres et fonctionnalités. Pas mal de démos dans cette session que je vous invite grandement à aller découvrir sur www.babylonjs.com.

Ce que j’en retiendrai :

Faire une scène 3D fluide se fait en collaboration avec le modéliste qui a un rôle primordial. Le moteur 3D BabylonJS  devient de plus en plus complet et permet de faire un maximum de choses.

Le futur technologique des interfaces

Par Greg Madison

Cette session animée par un ancien magicien devenu designer d'interaction, nous fait prendre du recul sur l'évolution des interfaces homme-machine. Des objets connectés à l'intelligence ambiante, de la réalité virtuelle à la création d'une réalité alternative miroir de notre monde et des données que l'on produit. C'est un véritable voyage dans le futur des interfaces.

Ce que j’en retiendrai :

L'omniprésence des objets connectés et l'affluence de données sont une véritable problématique et certains industriels profitent encore du buzz pour créer des objets à la limite de l'inutile. La maturité va arriver et permettra de tirer partie des nouveaux capteurs pour créer un monde interactif et intelligent où "la technologie [sera] suffisamment avancée et invisible pour être indissociable de la magie" (Arthur C Clarke).

Coding 4 Fun

Par David Catuhe, David Rousset, Etienne Margraff, Mitsu Furuta et Pierre Lagarde

Notre journée s'achève sur une des sessions mythiques des Techdays. Cette année, elle était retransmise en direct dans un second amphithéâtre. Pour ceux qui ne connaissent pas, l’objectif est un peu spécial : permettre de réunir les gens autour de leurs passions du code grâce à des démos complètements folles.

Nous avons découvert un équaliseur 3D avec un son variable selon le nombre tweets de l’assistance, un navigateur spécial poney pour les petites filles, un algorithme de morphing d'image : le "Boule-based Morphing" et pleins d’autres démos très fun.

L’imagination des speakers est sans limite quand il s’agit de nous faire partager leur folie avec du code !