Build 2018 – Bots, Intelligence Artificielle et Développement Windows

Les bots et l’intelligence artificielle sont une belle façon d’intégrer la technologie afin d’augmenter l’efficacité d’une entreprise pour son service à la clientèle. Évidemment, il faut recourir à des outils performants pour y arriver. Microsoft mise beaucoup sur la facilité de développement dans ce secteur. Il veut rendre accessible à tous les développeurs le développement de bots. Dans une autre présentation, on nous a présenté les mises à jour d’UWP qui, quant à elle, continue aussi de recevoir des investissements importants. Voyons un peu ce qui en retourne.

Conversational AI – What’s new?

Pour faire suite à la présentation de la veille principalement sur LUIS, cette présentation était davantage orientée sur les bots et sur l’intégration des différentes services cognitifs qui sont nécessaires pour offrir une expérience de chatbot.

Le Bot Framework a été mis à jour considérablement dans la dernière année. Il est constitué de trois piliers :

  1. BotBuilder SDK v4
  2. Azure Bot Service
  3. Bot Emulator

Le SDK permet essentiellement de créer un service Web API REST qui est appelé par un client bot. Il offre également tous les connecteurs facilitant l’intégration des services cognitifs de Microsoft pour rendre les bots intelligent et l’intégration avec les différents canaux comme Teams, Facebook, Slack et autres.

L’ajout important qui a été apporté est de pouvoir définir des middleware. C’est entre autres ce qui facilite la traduction machine en simultanée. Tous les messages peuvent passer dans un middleware de traduction à l’entrée et à la sortie.

Dispatch

IMG_3362

Dans les annonces dignes de mention, on retrouve l’ajout d’un module de répartition pour faciliter l’aiguillage d’une requête vers le bon service cognitif. Cet outil permet de faire un premier appel à une application LUIS pour qu’il aiguille la requête entre les différentes applications LUIS ou QnAMaker que nous aurions configurés. Voici un tutoriel qui permet de le faire.

Par ailleurs, un outil de ligne de commande est aussi fournit. Il permet de configurer l’application Dispatch et aussi de demander un rapport intéressant. Ce dernier indiquera quels énoncés sont susceptibles d’être ambiguës ou lesquels sont dupliqués dans plus d’un modèle de langage (LUIS vs QnAMaker par exemple). Il devient beaucoup plus facile de combiner les différents outils de langage dans un même bot.

Outillage

Un élément qui n’était pas nécessairement évident auparavant était de gérer les modèles de langage comme du code. Le DevOps étant omniprésent, même le développement d’intelligence artificielle suit la parade. Quatre outils ont été ajoutés pour développer les bots en ligne de commande :

  1. MSBot
    Permet de configurer un bot par ligne de commande
  2. LuDown
    Permet d’écrire nos énoncés en MarkDown. On utilise ensuite la ligne de commande pour mettre à jour LUIS côté serveur.
  3. LUIS CLI
    C’est ce qui permet de gérer les modèles LUIS comme du code. On peut exporter ou importer une application LUIS. Très utile dans un « Release pipeline ».
  4. Az Bot
    Pour contrôler les services bots d’Azure par ligne de commande. Bénéficie de la même intégration de gestion d’identité que les autres services Azure.

 IMG_3363

 

Project Conversation Learner (Research)

ProjectConvLearner

La fin de la présentation a été époustouflante. Un chercheur de Microsoft est venu présenté son projet. Il vise à entraîner les modèles de langage naturel de manière plus efficace. En effet, plutôt que de passer par de la saisie massive d’énoncé qui sont ensuite envoyé à LUIS, on utilise l’interface d’un chat bot pour envoyer nos énoncés. Le bot nous répond du mieux qu’il peut et on corrige les mauvaises réponses dans l’interface visuelle directement. Ce module permet aussi de revisiter les discussions passées et de corrigé les mauvais tirs du bot.

Évidemment, on ne sait pas si ce projet verra le jour et encore moins quand, mais on ne peut qu’espérer vu les possibilités impressionnantes qu’il apporterait.

ProjectConvLearnerCorrection

 

Rapidly Construct LOB Applications with UWP and VS 2017

Depuis plusieurs années, Microsoft fait la promotion de sa plateforme UWP (Universal Windows Applications). L’attrait le plus important de cette technologie est de pouvoir faire des applications qui s’exécutent sur de multiples appareils comme des téléphones, des PCs et aussi sur Xbox. Les efforts ont d’abord été mis sur les outils permettant de faciliter le développement pour les marchés de consommation personnelle au détriment des applications d’entreprise. Microsoft veut maintenant s’assurer que sa plateforme UWP devienne le premier choix de développement d’application Windows.  Si on combine cela avec le support de .NET Core dans WPF et WinForms et l’ajout des XAML Islands, on comprend que la voie est toute tracée pour converger vers le UWP.

Pour faire de UWP la meilleure plateforme de développement Windows, il fallait lui faire quelques modifications.

 

Densité

Par défaut, les layouts UWP sont très espacés. Il est donc difficile d’afficher beaucoup d’éléments dans un même écran. Les nouvelles versions de Windows vont densifier les contrôles visuels d’environ 33% par défaut. Pour ceux pour qui ça ne sera pas assez, un dictionnaire de ressources sera aussi mis à disposition pour densifier davantage. On parle ici du mode compacte.

IMG_3352

 

Gestion des thèmes de couleurs

La gestion des ensembles de couleurs est relativement difficile avec XAML. Il faut connaître les noms des différentes ressources à redéfinir et ne pas en oublier. Par ailleurs, il faut faire beaucoup de tâtonnement pour réussir à uniformiser le tout.

Afin de faciliter cette tâche fastidieuse, Microsoft développera un nouvel outil nommé ColorDemo (nom temporaire, ils sont ouverts aux suggestions :)). Cet outil permettra de changer les couleurs facilement dans une application qui affichera la plupart des contrôles visuels en simultané afin de voir le rendu. Une fois que l’on aura le bon résultat, on pourra exporter les configurations en XAML. Suffira alors d’importer le dictionnaire de ressource généré et le tour sera joué.

ColorDemo

 

Contrôles et validations

Pour faire de vraies applications de ligne d’affaires, il manquait quelques contrôles importants qui seront ajoutés:

  1. DataGrid
    Essentiellement celle qui existait en Silverlight. Elle sera en premier disponible via le Windows Community Toolkit et sera intégrée à la plateforme lorsqu’elle atteindra les standards de qualité.
  2. ComboBox éditable
  3. MenuBar et TreeView
    Ceux-ci seront disponibles via la librairie WinUI annoncée plus tôt durant la conférence.

UWP intégrera le support de l’interface INotifyDataErrorInfo qui était apparue en .NET 4.5 pour WPF. C’est réellement l’interface qui donne le plus de flexibilité pour la gestion des validations en XAML. C’est donc un ajout très important pour faire des formulaires de saisie. Par ailleurs, des gabarits (templates) par défaut seront fournis pour les différents contrôles afin d’afficher les messages d’erreur.

 

Ce qui manque…

J’ai été un peu déçu de voir le peu d’évolution autour de XAML Standard. Xamarin n’a publié qu’une librairie « façade » qui sera intégrée éventuellement. Pour le moment, il n’y a pas beaucoup d’avancé dans ce domaine et mon rêve d’avoir un XAML unifié pour le développement mobile et poste de travail m’apparaît peu réaliste à court ou moyen terme.

 

Varia UWP

SI vous ne connaissez pas Windows Template Studio, vous devez absolument regarder cet outil. Il facilite la création de projets en générant beaucoup de code qu’il faudrait autrement faire manuellement. Il supporte le MVVM avec la plupart des frameworks populaires.

L’application Van Arsdel fournit de bons exemples d’utilisation des contrôles UWP et peut servir d’inspiration pour définir votre propre application.

L’expérience de déploiement sera aussi améliorée avec l’arrivée de MSIX.

 

Conclusion

Encore une journée au Build 2018 qui a été bien replie. D’autres présentations de cette journée sont susceptibles de vous intéresser comme celle sur les Dev Spaces pour le développement microservices et Kubernetes. Je vous encourage à vous promener sur le site Channel9 pour y découvrir ce qui pourrait vous intéresser. Amusez-vous!

Le présent et le futur de la plateforme .NET

net_robot

Hier j’ai assisté à la présentation de Scott Hanselman et Scott Hunter à propos du roadmap de .NET et des outils de développement. Voici les faits saillants

Commençons d’abord par un constat: je ne me souviens pas avoir vu une seule diapositive à propos du Framework .NET. Une version 4.8 est en préparation mais clairement ce n’est plus là que se passe le show. Aujourd’hui j’ai pu m’entretenir de ce point avec Immo Landwerth qui est le Program Manager de .NET. Il m’a confirmé que pour l’instant il n’y avait pas de plan pour une version subséquente mais que cela ne voulait pas dire pour autant qu’il n’y en aurait plus dans le futur. Clairement le focus est sur .NET Core.

Pas de panique, les bonnes nouvelles s’en viennent 🙂

Tout d’abord .NET se porte très bien. Sur la dernière année, Microsoft a mesuré un gain de 1 millions de développeurs .NET actifs supplémentaires. Ce gain impressionnant peut être attribué à plusieurs facteurs:

  • Le succès grandissant de .NET Core et ASP .NET Core
  • La politique d’ouverture menée par Microsoft incluant le virage open source amorcé par la compagnie
  • Le fait que .NET Core et C# est un duo gagnant en termes de polyvalence. Aujourd’hui .NET Core et C# permettent de développer des applications et services web, des applications consoles et de l’IoT. Très bientôt d’autres types de développement seront supportés. Plus à ce sujet dans la suite de ce billet.

.NET Core 2.1

Fraîchement sorti, .NET Core 2.1 apporte son lot d’améliorations dans le framework proprement dit mais aussi à la périphérie avec Entity Framework Core et ASP .NET Core.

Digne de mention:

  • L’introduction de la classe Span<T> permet d’optimiser les scénarios de transformation de sous-ensemble de données stockées dans des zones de mémoires contigües et ce sans compromis sur la performance.
  • Optimisation des communications réseaux. Des améliorations notables ont été réalisées dans l’implémentation des Socket, des classes HttpClient et SslStream qui permettent de gains de 200% sur certains benchmark, principalement sous Linux.
  • Introduction du Windows Compatibilty Pack qui donne accès à quelques 20 000 fonctions API de Windows complémentaires au lot que .NET Standard 2.0 apportait déjà. Ce pack devrait faciliter la migration d’applications à .NET Core.

.NET Core 2.1 s’immisce aussi dans le développement IoT. Tout d’abord il est compatible avec les processeurs ARM32 ce qui lui permet de s’exécuter sur des cartes électronique ou appareils IoT comme le Raspberry Pi. Il peut aussi s’exécuter sur Ubuntu (>= v18.04), sur la distribution Alpine (>= v3.7) et Windows 10 IoT et dans des containers Linux.

Les téléviseurs Samsung qui embarquent l’OS Tizen 4.0 sont maintenant capables d’exécuter des applications .NET Core. Scott Hanselman nous demande de ne pas coller des stickers .NET Core sur les téléviseurs Samsung présents dans les Showrooms de nos magasins favoris 🙂

Le futur

core30.jpg

La prochaine version majeure de .NET Core sera la v3.0. L’intérêt principal de cette version réside dans le fait qu’elle va élargir notre terrain de jeu puisqu’il sera dès lors possible de développer des applications de bureau (UWP, WinForms et WPF) et des applications d’intelligence artificielle grâce au support du framework ML .NET

Les applications de bureaux

Revenons au support des applications de bureau. C’est une annonce majeure. Non seulement nous pourrons porter nos applications Winforms et WPF vers .NET Core mais aussi nous pourrons les améliorer en exploitant les nouveaux contrôles UWP Fluent Design au travers des XAML Islands. Cela permettra de rendre les applications patrimoniales plus attractives, plus conviviales et mieux intégrées à Windows 10.

Mais ce n’est pas tout: .NET Core offre des gains de performances qui rendent les applications de bureau jusqu’à 2.5x plus rapides. Durant la démo, une application Winforms a été exécuté à la fois en .NET 4.x et en .NET Core 2.1. La différence de performance était clairement perceptible. Cette vélocité accrue pourrait être un autre incitatif à convertir une application de bureau vers .NET Core.

Cerise sur le gâteau, Microsoft planche aussi sur un moyen d’empaqueter une application .NET Core dans une sorte de conteneur applicatif (rien à voir avec les conteneurs Docker je précise) Le conteneur prendra la forme d’un exécutable qui contiendra l’application elle-même, les parties de .NET Core nécessaires à son exécution ainsi que les librairies externes utilisées. L’objectif est de permettre l’exécution côte-à-côte de plusieurs applications utilisant des versions différentes de .NET Core. Dans sa version finale, l’outil de packaging sera capable d’identifier les espaces de noms et références externes qui ne sont pas exploités afin de réduire au maximum la taille du conteneur.

Machine Learning .NET (ML .NET)

ML .NET est un framework de machine learning utilisé en interne depuis plusieurs années chez Microsoft qui se trouve maintenant être out-sourcé. .NET Core permettra d’en tirer parti. Voici l’URL officielle du site collaboratif qui vous permettra d’en savoir plus.

Les outils

Microsoft veut clairement offrir les meilleurs outils de développement quelques soient les langages et plateformes utilisés. 3 IDE sont offerts: Visual Studio, Visual Studio Mac et VS Code.

Voici quelques améliorations de Visual Studio à venir:

  • Amélioration du fonctionnement du test runner de Visual Studio avec des mises à jour asynchrones des résultats de l’exécution des tests alors que ceux-ci sont en cours d’exécution.
  • Possibilité de faire du pas à pas dans le code de librairies Nuget en allant directement télécharger le source correspondant dans le répo Git d’où est issus le composant. Cela est rendu possible par l’introduction de l’URL du répo et de l’identifiant du commit ayant servi à la création du paquet Nuget directement dans le fichier .nuspec
    nuspec_git
  • Prise en charge des fichiers .editorconfig dans lesquels il est possible de définir ses conventions d’écriture de code. Le compilateur Roslyn interprète les paramètres présents dans ces fichiers et vérifie que les conventions sont respectées. Pour chaque règle il est possible d’indiquer le niveau de sévérité associé: ne rien faire, générer un avertissement ou générer une erreur.
  • Les développeurs Web vont finalement pouvoir profiter de fonctions de ré-usinage de code à l’intérieur de pages aspx et razor.
  • VS permettra de construire des images Docker en se passant du projet Docker-compose
  • Une extension de Visual Studio va permettre le support de Kubernetes et le déploiement d’images dans AKS.

La vidéo de cette présentation est maintenant disponible sur Channel 9

 

Microsoft Build 2018 – Jour 2

build-2018.jpgLa deuxième journée a comporté un bon nombre de sujets, mais a débuté par un Keynote de Joe Belfiore au sujet de Microsoft 365. Pour ma part, j’ai ensuite assisté à 4 autres présentations sur des sujets variés. Voici plus en détails ce qui a retenu mon attention.

Keynote 2 – Microsoft 365

IMG_3312

Joe Belfiore était sur la scène pour présenter Microsoft 365 qui se veut être un ensemble de solutions regroupant Office 365, Windows 10 avec mobilité et sécurité d’entreprise. La force de cet ensemble réside dans l’intégration des différentes technologies afin de créer une expérience des plus productives pour les utilisateurs.

Windows

Timeline-iOS-Android

Au cœur de Microsoft 365 se trouve Windows 10. Avec la livraison de Timeline, les utilisateurs sont capables de mettre en pause et de reprendre les activités là où ils étaient sur n’importe quel de leur appareil (PC Windows et téléphone intelligent). Il a été annoncé que Timeline ferait son apparition sur iOS et Android dans le futur. Malheureusement, aucune date n’a été précisée. Il est aussi possible pour les développeurs d’application d’ajouter des tâches dans Timeline afin d’augmenter la productivité. Le géant de Redmond a aussi annoncé qu’il comptait aller plus loin en facilitant davantage l’utilisation du téléphone à partir du PC. Il sera possible dans une prochaine version de Windows d’accéder facilement aux photos, vidéos, notifications et messages textes de son téléphone. On pourra aussi envoyer un message à partir de son PC si le téléphone est à portée de main.

Microsoft travaille également sur une application qui s’appelle Sets. Cette dernière permettra aux utilisateurs de regrouper les applications ouvertes reliées à une même tâche.

Windows pour les développeurs

Dans cette partie du Keynote, deux aspects ont retenu mon attention : UWP XAML Islands et .NET Core 3. Ces annonces ouvrent la porte à des stratégies de modernisation d’applications Windows existantes (WPF, WinForms) en permettant d’inclure des contrôles UWP facilement.

dotnet-core3

Quant à lui, .NET Core 3 permettra de compiler des applications WPF et WinForms. Deux avantages sont à noter :

  1. Performance accrue :
    Comme l’exécution se fait avec .NET Core, on bénéficie de tous les travaux d’optimisation effectués récemment.
  2. Déploiement flexible :
    Comme il n’est plus requis d’avoir le Framework .NET complet, les applications seront plus facile à installer. On pourra même inclure .NET Core dans l’exécutable directement.

Enfin, Windows UI Library a aussi été annoncé. Les contrôles natifs utilisés par Windows seront disponibles dans un paquet NuGet. Il faudra au minimum avoir a version Anniversary Update pour en bénéficier.

Développement Office et Microsoft Graph

Microsoft a rappelé que le développement Office est une belle façon d’augmenter la productivité des utilisateurs, surtout ceux qui sont dans Office 365. Les Adaptive Cards permettent d’intégrer des fonctionnalités des applications de lignes d’affaires à plusieurs endroits : Outlook, Teams, Skype, Messenger, etc..

Pour ce qui est du Graph, pas beaucoup de nouveau à part la disponibilité de certains contrôles UWP pour intégrer le contenu de certains éléments provenant du Graph dans les applications.

 

Bot intelligence, Speech Capabilities, and NLU best practices

IMG_3341

Comme j’ai vraiment apprécié découvrir cette plateforme l’an dernier et que c’est sans doute l’élément d’intelligence artificielle le plus propice à être utilisé dans tout type d’entreprise, j’avais hâte de découvrir les nouveautés.

IMG_3346

LUIS (Language Understanding Intelligent Services) est le service de Microsoft qui permet d’interpréter le langage naturel d’un humain. Très utile dans le développement de bot, il s’est vu amélioré de manière fascinante au cours de la dernière année.

L’intégration avec les services cognitifs très proches a été facilitée. L’utilisation des API de reconnaissance vocale et de reconnaissance des sentiments se résume à une case à cochée dans le portail web. D’ailleurs, la détection des sentiments est gratuite lorsque le service LUIS est utilisé.

LUIS est aussi capable d’apprendre par lui-même. Basé sur le Machine Learning, on doit lui apprendre quelques bases en lui donnant quelques exemples de phrases que l’on aimerait qu’il reconnaisse. Par la suite, au fur et à mesure que les utilisateurs l’utiliseront, il raffinera sa compréhension en conservant les exemples qui lui ont été soumis lors des vrais appels. C’est ce qu’on appel du Active Learning. Pour certains énoncés pour lesquels il sera moins certain, il proposera aux configurateurs de classifier ces derniers de manière à apprendre.

Finalement, les présentateurs ont énoncés quelques bonnes pratiques autour de la conception de bot :

IMG_3351

 

Mise à jour ASP.NET Core 2.1

La présentation de Daniel Roth s’est déroulé à un rythme d’enfer. La version 2.1 RC a été lancée et elle vient avec un GoLive qui permet de l’utiliser directement en production. Vous relater les nombreuses nouveautés récentes ne donnerait pas une expérience de lecture très intéressante. Je me contenterai de revenir sur quelques éléments.

Razor Class Libraries

Permettant de rendre plus modulaire une application web, il est possible de créer des asssemblies qui contiennent seulement des contrôleurs, des vues et modèles. C’était auparavant impossible. Cela ouvre la porte à quelques scénarios d’utilisation comme la gestion de l’identité fournit par l’équipe ASP.NET Core qui utilise justement cette façon de faire pour faciliter l’inclusion de l’authentification. Les éléments de menus, les pages de logins et de création de compte sont contenus dans un assembly distribué en paquet NuGet.

MVC Functionnal Testing

La version 2.1 d’ASP.NET Core facilite les tests de bout en bout en permettant d’exécuter toute la chaîne ASP.NET Core en mémoire sans avoir besoin de configurer un serveur web.

IHttpClientFactory

Avec l’ajout de cet interface, il est possible de gérer de manière centralisée les instances de classe HttpClient. On crée alors des classes wrapper qui sont composées d’une instance HttpClient et d’opérations spécifiques au service à appeler. On nomme ces wrappers des Typed Clients.

Cette fonctionnalité facilite l’intégration de Polly qui est une librairie open-source qui permet de facilement gérer les scénarios de gestion de résilience. Dans un monde microservice, ces facilités sont très importantes.

 

Conclusion

J’ai passé par-dessus certaines présentations comme les différentes options de conteneurs dans Azure et une mise à jour sur les développements Fluent sous Windows. Si vous voulez des détails, n’hésitez pas à communiquer avec moi ou à consulter les présentations sur le site Channel9. Encore une belle journée de trouvailles à venir!

MS Build 2018 Day 1

msbuild2018

Le keynote de cette édition 2018 du Build m’est apparu moins riche que l’année dernière en termes de nouveautés et de percées technologiques sans pour autant me décevoir. J’ai eu une impression de continuité dans le message et la perception que Microsoft confirmait et affinait sa vision du futur. Voici les points qui ont retenu mon attention.

Aujourd’hui l’informatique est omniprésente. Le monde est sur le point de devenir un ordinateur géant, hyper connecté, générant des masses de données. L’informatique fait partie de notre quotidien que ce soit au travail ou dans la vie privée. Ce monde présente beaucoup d’opportunités et nous mettra devant nos responsabilités en tant qu’humains. La mission que Microsoft se donne est de fournir les plateformes et les outils aux individus et entreprises pour concevoir les solutions de demain.

La stratégie de Microsoft repose sur 3 grands piliers:

  1. Le respect de la vie privée. Il s’agit d’un droit fondamental qui doit être respecté. Microsoft s’engage à fournir des plateformes et des outils qui facilitent la traçabilité et la mise en place de la conformité qui assure ce respect de la vie privée.
  2. La cybersécurité. Évidemment dans un monde connecté d’aujourd’hui, il est nécessaire d’investir dans la sécurité et la cryptographie. Il faut fournir des outils et des librairies qui facilitent le développement d’applications sécurisées.
  3. L’étique de l’intelligence artificielle. Qu’est ce que la machine fait et qu’est-ce qu’elle devrait faire. S’assurer que les innovations sont accessibles au plus grand nombre et qu’elles préservent les droits de l’homme.

Ces trois grands piliers devraient être des préoccupations collectives. La contribution de Microsoft à ce niveau est de rendre les outils et les technologies disponibles au plus grand nombre et pas seulement dans les mains de deux ou trois grandes entreprises. La stratégie d’ouverture et d’open sourcing de ses technologies se poursuit.

Azure se porte bien.

L’offre infonuagique de Microsoft est au top:

  • 90% des compagnies qui composent le fortune 500 utilisent Microsoft Azure pour gérer leurs affaires.
  • Les développeurs aiment l’homogénéité de la plateforme et ses services que ce soit pour la conception, l’exploitation et la configuration
  • En 2017 pas moins de 130 services et fonctionnalités majeures ont été mises en place. 70 seront mises en place et/ou annoncés pendant la conférence Build

Intelligent cloud – intelligent edge

D’ici 2020, 20 milliards d’appareils intelligents connectés devraient être en fonction. C’est 3x plus que le nombre d’humains vivant sur terre aujourd’hui. Tous ces appareils connectés vont générer des volumes de données astronomiques que même le cloud ne pourra pas digérer tels quels. L’idée est donc de déporter certains traitements du cloud (intelligent cloud) vers ces appareils (intelligent edge). Par exemple un appareil ne transmettra pas intégralement un flux vidéo vers le cloud pour y être analysé. Plutôt le flux sera analysé en local sur l’appareil et seules les informations pertinentes identifiées seront transmises vers le cloud. Cela permettra de diminuer drastiquement les volumes échangés.

Dans ce domaine Microsoft a effectué quelques annonces qui montrent clairement qu’il ne s’agit pas que d’un concept mais qu’il y a du concret à venir prochainement:

  • Le runtime IoT Edge va être rendu open source pour favoriser son portage partout où cela sera nécessaire. A terme cela viendra augmenter l’offre d’appareils capables d’exécuter localement des modèles jusque-là destinés à être exécutés dans le cloud.
  • Un partenariat avec Qualcomm pour produire une caméra intelligente capable d’analyser en temps réel le flux audio et vidéo avec des modèles personnalisés entrainés dans le cloud et déployés directement dans la caméra. Le tout viendra avec un SDK permettant à tous d’exploiter la technologie.
  • Le projet Kinect pour Azure consiste à livrer un matériel compact inspiré de la Kinect et influencé par HoloLens qui permettra l’analyse du champ de vision, l’évaluation du relief, la reconnaissance d’objets ainsi que des mouvements du corps. Prometteur.
  • Un partenariat avec Dji pour intégrer la technologie IoT Edge dans un drone high tech. DJI fournira un API pour Windows 10 permettant de contrôler le plan de vol ainsi que de récupérer les données émises par le drone.
  • Un kit de développement pour la gestion de la parole qui sera supporté par plusieurs fabricants dont Roobo par exemple qui fournit un haut-parleur intelligent capable de supprimer le bruit ambiant dans un flux audio pour améliorer l’efficacité de la reconnaissance vocale dans les environnements bruyants.
  • Project Brainwave est une offre azure qui permet de tourner des modèles AI sur des FPGA. Le temps de latence HW est diminué de 5x. La vitesse d’exécution constatée est 10 à 12x supérieure à un CPU classique!

Les agents conversationnels (aka Chatbots)

Les agents conversationnels représentent une nouvelle catégorie d’applications dont tout le monde veut. Toutes les compagnies veulent en développer des personnalisés qui répondent très précisément à leurs besoins.

C’est un domaine dans lequel il y a encore beaucoup d’innovations à venir pour améliorer la richesse d’interaction avec l’humain mais aussi pour permettre à ces agents de converser entre eux! Pas moins de 100 nouvelles fonctionnalités ont été introduites pour améliorer leurs personnalisations.

Microsoft supporte aujourd’hui 16 canaux différents pour déployer les applications créées avec son Bot Framework. Cela permet d’augmenter la portée de nos applications conversationnelles.

Cortana + Alexa

cortana_alexa

Un grand moment de ce keynote a été l’annonce du partenariat signé entre Microsoft et Amazon pour permettre à leurs Ai respectives, Cortana et Alexa, d’interagir entres elles. La démonstration sur scène a été sans faille et très probante. C’est un passage que vous pourriez avoir envie de regarder. Tous ces scénarios de productivité qui impliquent la reconnaissance vocale pour effectuer des tâches comme ajouter un article à la liste d’épicerie ou céduler un rendez-vous sont encore perçus comme de la science-fiction et pourtant sont déjà bien réels.

Lors d’une conversation avec Alexa, on peut lui demander de passer le contrôle à Cortana et vice et versa. Cortana est implantée dans Windows 10, au coeur des applications Office et bientôt dans Microsoft Teams. Cela ouvre des horizons plus larges.

Visual Studio Live Share

vsliveshare

Dans le domaine de la productivité des développeurs, Microsoft a annoncé l’arrivée de Visual Studio Live Share. Visual Studio Live Share est une extension qui permet de partager son environnement de développement avec une autre personne pour obtenir de l’assistance. Au départ je m’attendais à quelque chose du genre logiciel de prise de contrôle à distance optimisé pour développeur. La démo a finalement dépassé de loin mes attentes. Voici une liste des fonctionnalités et caractéristiques les plus intéressantes:

  1. L’extension fonctionne aussi bien pour Visual Studio 2017, Visual Studio for Mac ainsi que pour VS Code. Lors du partage, chaque personne utilise l’outil qui lui convient le mieux.
  2. Le développeur qui a besoin d’aide, invoque l’extension pour générer une URL qu’il transfère ensuite si à la personne qui va aider pour lui permettre de rejoindre la session.
  3. La personne qui aide peut suivre l’activité du développeur pour voir et comprendre. Elle garde cependant une autonomie pour effectuer des recherches et analyses dans le code sans impacter le développeur. Elle peut par exemple ouvrir d’autres fichiers de la solution du développeur. À tout moment, elle peut se resynchroniser avec l’activité du développeur.
  4. Les sessions de débogage sont partagées. La personne qui aide peut mettre des points d’arrêts à distance dans le code, inspecter le contenu de variables et utiliser la plupart des fenêtres du débogueur.
  5. Cerise sur le gâteau, dans le cas de débogage de services ou sites web, il est possible de les rendre accessibles à la personne qui aide et ce même s’ils sont hébergés localement sur le poste du développeur! Absolument bluffant.

VSTS et DevOps

VSTS_DevOps

Quelques démos très intéressantes qui démontrent l’efficacité et le degré d’intégration de tous les outils fournis dans la plateforme azure:

  1. Démonstration de l’intégration de AppCenter avec GitHub ou comment construire un pipeline DevOps fonctionnel en 3 minutes. Sur base de l’URL du repo GitHub qui contient l’application mobile, l’outil de Microsoft clone le repo, analyse le code, identifie le langage de développement utilisé, les plateformes mobiles ciblées et génère un pipeline CI-CD sans intervention humaine ou presque. La compilation démarre, l’application est déployée sur tous les appareils du marché.
  2. Démonstration du projet DevOps par Donovan Brown. Cette démo mérite d’être vue rien que pour la prestation de Donovan. Un vrai showman. La démo consiste à créer un pipeline CI-CD pour une nouvelle application. On commence par choisir le langage de développement, ensuite les framework principaux et finalement la plateforme d’exécution (AKS ou App Service). Click Finish et quelques secondes plus tard tout est configuré, il ne reste plus qu’à coder.
  3. Release Gates permet de gérer le déploiement incrémental d’une application en utilisant plusieurs groupes de consommateurs cibles. Un lien est fait avec les mécanismes de surveillance pour éventuellement arrêter la propagation de l’application à d’autres groupes quand les métriques mettent en lumière des problématiques.
  4. Il est maintenant possible de créer une branche dans un repo Git directement à partir d’un work item de carnet de sprint. L’intérêt réside dans le fait que la branche est associée au work item pour une traçabilité accrue.