Microsoft Build op 19, 20 en 21 mei 2020 - DEEL 2

Ingediend door Dirk Hornstra op 08-jun-2020 23:15

In de vorige post (link) heb ik al de korte samenvatting gegeven en de eerste dag besproken (dinsdag 19 mei 2020).

WOENSDAG 20 MEI 2020

07:45    The new Windows command-line: Windows Terminal and WSL 2

De demo wordt gegeven door Kayla Cinnamon, die gisteren al een sessie met Scott Hanselman gedaan heeft. Documentatie is natuurlijk handig: https://aka.ms/terminal-docs. Kayla laat zien hoe je in het JSON-bestand zaken kunt tunen, acrylicOpacity op 0.8 om de terminal licht doorschijnend te maken, backgroundImage om een eigen achtergrondafbeelding toe te voegen (of in dit geval door backgroundImageStretchMode: "none" en backgroundImageAlignment: "bottomRight" een rechts-onder wapperende Windows-vlag). Je hebt 2 kanalen, https://aka.ms/terminal (stabiel) en https://aka.ms/terminal-preview (preview). Afsluitend nog 2 linkjes: https://github.com/microsoft/terminal, https://aka.ms/cliblog. Hierna komt Craig Loewen nog even langs. We zien de Windows Explorer waar nu ook een tux zichtbaar is, als het goed is zit dit in Windows 10 versie 2004.  Een Microsoft kernel die door Microsoft gebouwd is. Met wsl --install kun je het Windows Subsystem voor Linux installeren. Ook hier een paar afsluitende linkjes: https://github.com/micrsoft/wsl en  https://aka.ms/wsldocs.

08:30    Build, integrate & scale with event-driven apps

Jeff Hollan die ik gisteren gezien heb presenteert deze sessie. We komen daarbij het Azure serverless ecosystem. De serverless-functions, daar had ik al van gehoord (je betaalt voor gebruik), je hebt ook nog Logic Apps, Event Grid en API Management. We zien hoe Jeff een scenario opzet met Event Grid, als er een marketing-lead binnen komt, dat er een mail gestuurd wordt. Aanbevolen on-demand sessies zijn https://aka.ms/Build2020AppDev-AzureFunctions en https://aka.ms/Build2020AppDev-EventBaseAutomation.

11:00    Distributed Application Runtime (DAPR)

Deze sessie wordt gedaan door Mark Fussell, met dapr hoef je, als het goed is, je alleen te richten op het bouwen van apps en niet op de infrastructuur. We zien een slide over "wat micro-services tegen houdt" (eerlijk gezegd ben ik daar zelf ook nog niet mee begonnen, terwijl het een hele goede bouwmethode is), de antwoorden in de lijst zijn: we hebben beperkte "tools" en "programmeer modellen" om gedistribueerde applicaties te bouwen, het programma-model heeft beperkte programmeertaal-ondersteuning en heeft een strakke feature-set, de runtime richt zich op specifieke platformen met beperkte code portabiliteit tussen cloud en edge (?). Wat zijn de doelen van Dapr? Best practices building blocks, consistente, portable open API's, uitbreidbare en "plugbare" componenten, elke taal en/of framework, standaarden in acht nemen, agnostische cloud en edge (?). We zien het voorbeeld (dat we al eerder gezien hebben?) van de tweets die gelezen worden en na verwerking in een redis database opgeslagen worden. Aan het eind krijgen we een aantal linkjes, de link https://aka.ms/dapr-build2020 is een Github-repo waarbij we dit hopelijk zelf kunnen uitvoeren. Overige links: https://github.com/dapr, https://aka.ms/dapr-community/, @daprdev

13:15    Microsoft Graph Live

Darrel Miller geeft deze demo. Dé URL is https://graph.microsoft.com. Als je de graph van Facebook wel eens gebruikt hebt, dan weet je wat je daarmee kunt. Een eigen app maken, die dan posts kan lezen e.d. In dit geval zijn de populaire data sets: mail, conversations, tasks, users, files en events. Maar er zijn zoveel meer: activities, attachments, audits, calendar, categories, charts, classes, contacts, conversations, cross-device exerperiences, customer booking, device configuration, device management, domains, education, events, files, financials, groups, identity, lists, mail, messages, notes, notifications, pages, places, plans, reports, schools, search, secure score, security alerts, sites, social, subscriptions, tasks, teams, threat intelligence, users, workbooks (en ook deze lijst is nog maar een onderdeel). Advies van Darrel, begin met https://aka.ms/ge, ga door de API refence en documentatie, probeer een quick-start en training, verdiep je in de SDK en toolkit en registreer uiteindelijk jouw app. In deze sessie komen ook adaptivecards.io en mgt.dev voorbij. En we sluiten af met een flinke lijst om door te lezen, de M365sk108 t/m M365sk114 zijn al in de sessie van gisteren genoemd (link), dit zijn de aanvullende items:

https://aka.ms/M365sk115 - bouw aps die met Todo en Microsoft Graph werken
https://aka.ms/M365sk116 - bouw coole ervaringen met profile API en Microsoft Graph
https://aka.ms/M365sk117 - smart meetings, room, places en event sync in Microsoft Graph
https://aka.ms/M365sk118 - cloud-based printing met je applicaties via Universal Print
https://aka.ms/M365sk102 - wat is er nieuw in Microsoft Teams als een platform

14:00    C# Today & Tomorrow - Live

Deze sessie wordt gepresenteerd door Mads Torgersen. C#9 komt eraan, maakt onderdeel uit van .NET 5. Hoofdpunten zijn simplicity, data en immutability. We zien eerst een console-applicatie waarbij je altijd een frame Class Program { static void Main() hebt. Die kun je nu weg laten. Het scheelt typen, maar ik weet niet of ik het er nu duidelijk uit vind zien.

Het volgende punt, daar word ik wel enthousiast van. Je hebt altijd properties met get; set;. En daardoor kun je niet echt een read-only object maken (iets wat we ook tegenkomen tijdens onze studie in het boek Secure by Design. Met de nieuwe property init krijg je een get; init; waarmee je in de constructor de waarde 1x kunt instellen en daarna niet meer.

Het klonen van objecten wordt ook makkelijker. Heb je een Person person = new Person { FirstName = "Dirk", LastName = "Hornstra" } dan kun je met een Person kloon = person with { LastName="Turbo" }; zo een nieuw object maken met dezelfde eigenschappen (en in dit geval een andere achternaam).

Het "pattern matching" is flink verbeterd:


return vehicle switch
{
    Bus => 5.00m, /* Bus is een type pattern */
    DeliveryTrck t => t.GrossWeightClass switch
    {
        < 3000 => 10.00m - 2.00m, /* < 3000 is een relational pattern */
        >= 3000 and <= 5000 => 10.00m,
        > 5000 => 10.00m + 5.00m
    },
    not null => throw new ArgumentException(..){}, /* not en eerder hierboven and zijn logical patterns */
    null => throw new ArgumentNullException(..){}
}

Met deze notatie is voor een leek ook te zien welke keuzes er gemaakt worden en waarom.

In de huidige situatie bepaal je aan de rechterkant het type van een variabele, maar dat kan nu ook andersom:


Huidig:
var p = new Person(...)

Nieuw:
Person p = new ("Dirk", "Hornstra");


Validatie dat meegegeven parameters niet null zijn:


public Person(string firstName!, string lastName!){...}

Co-variant resultaten:


public virtual Person GetMember(){...}
public override Student GetMember(){...}

Volgens mij zou hij in de huidige situatie de foutmelding geven dat het type niet overeenkomt (in de override zou een Person terug gegeven moeten worden). Maar omdat Student van Person erft kan/mag dit in C#9 wel.

Ik werd blij van deze korte demo! Afsluitend natuurlijk de bijbehorende linkjes: https://github.com/dotnet/csharplang en https://aka.ms/LangStatus

16:15    The 8 Principles of Sustainable Software Engineering

We zien Chris Adams in beeld. Deze sessie had ik kunnen overslaan. Gaat over het besparen van stroom en dergelijke, daar zit ik niet op te wachten :)

18:45    The future of tech, with Kevin Scott and guests

We richten ons eerst op Artificial Intelligence. We zien dat er 1.500 health care sites zijn, over 23 landen verdeeld en 30+ miljoen "self-assessments". Door covid-19 zijn er 13.000 tele-visits per dag. Waarbij een selfcare-bot de afhandeling doet. Als je die interactie hebt, dan is het wel de bedoeling dat die "snapt" wat je typt. We zien een curve hoe dit zich ontwikkeld heeft. Turing NLG van Microsoft springt hier ruim bovenuit, als je op de link klikt zie je dezelfde afbeelding. Wordt volgens mij ook al jaren aan ontwikkeld. Daarna krijgen we een mechanische "hond" te zien die in de rugzak pizza's kan bezorgen. Het lijkt wel wat op de "hond" die je ziet springen en deuren open ziet maken in filmpjes die online staan. Die bevat dus ook een flink stuk software om zinnen te kunnen interpreteren.

19:30    Ask Scott Guthrie, with Scott Guthrie

Daar was ie weer, the man in the red shirt: Scott Guthrie! Gesprek met een dame, maar niet echt interessant, dus geen notities gemaakt. We delen een hobby, ik verzamel ook postzegels. Maar hij heeft echt muren vol met albums staan, allemachtig!

20:30    Power Platform for developers, with James Phillips and guests

James Phillips staat in beeld, president van de Business Applicaties. Volgens de cijfers gaan er in de komende 5 jaar 500 miljoen nieuwe apps gebouwd worden. En dat zijn meer dan alle apps die in de afgelopen 40 jaar gebouwd zijn. Maar voor de echte hardcore-codekloppers heb je te weinig developers. Hier komt het Power Platform om de hoek kijken. De onderste laag bevat Azure services en de Azure/Office Data Services (het type diensten waar wij mee programmeren) waar een abstracte laag boven zit, Power Platform met Power BI, Power Apps, Power Automate, Power Virtual Agents en welke bedoeld is voor "every developer - low code". Je kunt dus een groot deel slepen-en-klikken, maar nog wel zaken op maat erbij programmeren. Op het Power Platform zijn maandelijks meer dan 3.500.000 developers actief bezig. Meer dan 500.000 bedrijven gebruiken elke maand Power Platform en daar is ie weer, van de Fortune 500 bedrijven gebruikt 97% het Power Platform. Julie Strauss laat zien hoe je een programma kunt configureren. We zien hoe een app voor een ziekenhuis wordt gemaakt, waarmee je bedcapaciteit kunt beheren. Inclusief gebruik van de Hololens ook de positie van het bed koppelen. Charles Lamanna laat ook nog wat code zien. De Common Data Service had alleen een bepaalde interface, maar je kunt er nu ook met TSQL op query-en (nieuw!). Ziet er interessant uit! En natuurlijk de bijbehorende afsluitende link: https://aka.ms/PowerPlatformReleasePlan

21:15    Complete more of your code with IntelliCode via deep learning models!

We zien Mark Wilson-Thomas in Visual Studio aan het werk. We kennen al Intellisense, maar dat wordt nu uitgebreid met AI (kunstmatige intelligentie). Dit wordt genoemd: Visual Studio IntelliCode Team Model Training (marketplace-link). Er wordt bijgehouden wat je doet, en als je tig keer dezelfde NULL-check plaatst komt het programma zelf met voorstellen: op die plek heb je deze check niet, moet deze hier ook toegevoegd worden?  Ik weet niet of ik van die acties wel blij wordt. Van een andere mogelijk wel. Zo krijg je bij de ToString() van een datum/tijd zelf al de mogelijke formaten voorgeschoteld en kun je die uit de lijst kiezen. Het meest spectaculair vind ik dat je een paar mogelijke opties kunt geven en dat het programma jou dan de bijbehorende Reguliere Expressie geeft. Via deze link is meer informatie te vinden: https://devblogs.microsoft.com/visualstudio/refactoring-made-easy-with-intellicode/

21:30    Creating Microsoft 365 apps with Microsoft Graph Toolkit

We zien Nikola Metulev in zijn giraffe-hoodie. Met een include van een stuk javascript en een tag heb je al een inlogscherm:


<!DOCTYPE html>
<html lang="en">
<head>
    <title>test</title>
    <script src="https://unpkg.com/@microsoft/mgt/dist/bundle/mgt-loader.js"></script>
</head>
<body>
</body>
    <mgt-login></mgt-login>
</html>

23:00    Tips and Tricks on Customizing your Graph Toolkit Components

We zien Beth Pan die in de https://mgt.dev/ omgeving ook deze tag gebruiken. En nog wat andere eigenschappen (uit de lange lijst die je beschikbaar hebt) laat zien. De bijbehorende links: https://graph.microsoft.com, https://aka.ms/mgt, https://aka.ms/mgt-docs, https://aka.ms/mgt-questions, https://aka.ms/mgtLap

23:15    How PLEX is taking advantage of React Native

Deze uitzending begon een kwartier te laat. We zien onder andere Paul A Gusmorino voorbij komen. Dit gaat over een ERP product, het was een mobiele app die nog draaide op ... classic ASP. In samenwerking met Facebook is Microsoft bezig geweest met React Native. Dit kan draaien op tablets (waardoor de vorkheftruckchauffeur meteen de voorraad kan bijwerken), ook de Hololens kan er gebruik van maken. In 2016 is met dit project gestart, maar door een rewrite in C# is de performance een stuk beter geworden. Nog maar eens een kijkje nemen op de gegeven link: https://aka.ms/reactnative

En tussen de bedrijven door kwam nog een linkje langs voor als je de beta-versie van Edge wilt proberen: https://aka.ms/edgeinsider