[Build 14] – Keynote day 2

Mail de Alexandru
Jeudi 3 avril 2014 16:42

Keynote day 2

Motto: Mobile first, cloud first.
// Intro

Three hundred new features in 2013, 44 new features presented now. New Azure regions in China (continental). Adoption of azure, growing:
– 57% Fortune 500, 250K websites, 1.000.000 SQL Databases, 200 trillion storage objects, 300 Mio AD users, 1Mio VS Online.
Titanfall (game) is presented, demo & interview with the team. The general lack of lag is highlighted = everyone has the same frame rate, the game does not depend on the local available power. Game cannot be played without the cloud. More 100.000 VM on launch day.
Another experience with Azure: 2014 Sochi Olympics with NBC. 100 Mio users, 2.1Mio concurrent HD viewers during US/Canada hockey match.
Rick Cordella (sr VP and General Mgr NBC Sports digital) does a testimony concerning the impact of the cloud on his news channel. 1Bio dollars invested, 70 days to recover the investment. “There is no going back”.
Azure : Internet as a Service (IaaS) Or PaaS (Platform as a service).
// IaaS

New features:
– Virtual Studio integration (create, manage, destroy or debug VM) without leaving it.
– Capture VM images with any number of storage drives=> create any instances as necessary.
– Puppet modules (sql, web, app). Chef server is presented. Puppet Master manages puppets (change VM role, etc.).

Integration with VS
Demo with VS @ creating a VM, based on OS, etc, all from the VS Server Explorer. A nice wizard (OS, ports, etc.). Debug is possible & demoed (right click on the vm => enable debug). The debugging client is injected in the VM. Attach the debugger => all works (frenetic applause in the room….)

Command List is demoed, launching powershell commands. A “snapshot” capability is possible with this command option. Disks are copied on the fly.

“Puppet Master” is demoed (partnership with Puppet Labs partner). “Puppet master server” linking is demoed. Puppet CEO showcases the technology.
“Puppet Class” => demo for deploying technology (sysinternals for ex, deployed on all the machines).
The object of their techno is to install & synchronize machines fast: automate configuration management.
“Getty Images” testimony is next. Hint: non-commercial service launched.
Scott takes over again: new features listed (see photo)
// PaaS

PaaS is the detailed (prebuilt services). Patching, load balancing, etc is handled.
Capabilities are presented in detail.

Azure Website service
Deploy web applications. Java is supported, etc.
– Autoscale is by default, maximum number of VM (& the minimum) is customizable.
– Staging (test facilities for example) is presented. Swap function allows an easy deployment.
– Webjobs is for background tasks that should relief the load from a webserver. A queue is the typical example. Same machine can be used as the azure web site
– Traffic Manager support. Single DNS entry, with instances all around the world. You can route your traffic based on geographical location. Not for VM only, but for websites also.
Mads Kristensen (Web in action) is next.
Creating a website & database from VS. Publishing scripts are created (can be modified). Browser Developer Tools demoed with live modification of the background (=> VS changes also). See the transcript from yesterday 3-602. JsHint is demoed. Staging feature is presented. *-staging.azurewebsites.net suffix. Swap feature demoed (with certificates, etc.). Background task are demoed via WebJobs. Same context is used. The “invocation log” can be seen in order to monitor the Webjob. Traffic Manager scenarios are presented (failover, performance, etc.).

Web announcements
are listed (see photo).
MVC 5.1, Web API 2.1, Identity 2.0, etc.

Mobile Services
– Develop backends with .net, node.js.
– Flexible data (No SQL, SQL, blob storage, etc.)
– Broadcast notifications. Notification hubs => broadcast afterwards
– Now supports Active Directory (new). Standard OAuth tokens => custom logic possible (for ex Office). Works with any device (Android, iOS, etc.)
Demo for Mobile Services is next. API Documentation & a Test Client. Local & Remote Debug demoed. Template for a Controller & Security is demoed. Portable Class Library is used. Native Authentication Library demoed (Active Directory). SharePoint or Office 365 integration is demoed, quite nice demo. Xamarin integration & demoed on iOS. Nice cross platform demo.

Enterprise Auth & Office 365 API
Demo & testimony by DocuSign, Grant Peterson (CTO). Active Directory integration gets demoed, on an iPhone. SharePoint integration is also demoed (still on the iPhone). Signing on the run possible, nice demo! 20 lines of code in Objective C on the iPhone & that’s it.
Mobile announcements (see photo)
Azure AD SDK for android & iOs, Office 365, Azure AD premium, SSO AD, Notifications on Kindle, etc.

Data is the next chapter
SQL Improvements in Azure \
– Size 150Gb-> 500Gb, 99.95% SLA.
– Self service restore. Automatic backups possible. Restore a snapshot.
– Active geo replication (primary instance-> data replication-> readonly secondary region). Multiple centers in the same region (Europe for ex).
– Other announcements listed (see photo).


// Next is programming languages & tools for Azure

New .NET compiler platform (Roslyn) is highlighted. Anders Hejlsberg is talking over the show.
New generation preview: VSIX available. Features
– Importing static (Math.PI for example), Math.PI gets Pi directly (using System.Math needs to be added).
– Rename help
– OPEN SOURCE Roslyn project. It is on Codeplex! Publish LIVE. .NET compiler goes Open Source…
– Modification on the compiler shown (changing quotes for example)
Migel de ICAZA (Xamarin) does the next demo. He changes the IDE from Mono-> Roslyn, compiles, works.
Scott takes over:
Announcing the .NET Foundation, founding project shown on photo (see photo).
// New Azure Management Portal

The new Azure Management Portal is demoed: Bill Staples. Looks like a W8 app., Blade is the term used for the dropdown that allows a drilldown (see photo). A new navigation method (journey) on the website.
The billing can be drilled down more effectively. Resource costs are easily available.
The portal is open, third party devs can integrate with it.
Continous deployment is presented directly from the Azure Portal. Seamless switching between Visual Studio & Azure is demoed. Commit can be seen on the portal directly (code view level…).
AppInsights integrated with the Azure Portal. You can edit the code directly on the Portal!
Personal comment: the blade feature is a little bit confusing…
Analytics is integrated on the new Azure Portal. Avg response time, availability, etc.
Scale up a website is now possible, without redeployment (Lionel sera content)
Demo on a desktop (an enormous touchscreen TV is shown)
Entire lifecycle: starting the service, coding, command line, analytics, management, etc.
Personal comment: the investment in this portal was huge I believe => Microsoft is placing its bets

– Azure Portal preview
– Azure Resource Manager preview
– VS online General Audience


[Build 14] – Building a Single Page Application with ASP.NET and AngularJS

Mail de Mehdi
Jeudi 3 avril 2014 16:42

Building a Single Page Application with ASP .NET and AngularJS

// Speakers:
David Catuhe, Jon Galloway

Session un peu décevante, niveau 300 mais plutôt destinée aux personnes n’ayant jamais fait d’AngularJS.

Les démos sont là pour attirer ces gens sur ce framework.

On débute avec la façon avec laquelle on intègre Angular dans une page HTML => nous avons besoin que d’un seul fichier

Trois solutions sont possibles pour ajouter AngularJS à un projet => soit on télécharge les fichiers, soit on utilise NuGet ou un CDN (le plus conseillé par David).
// Début de la démo :

Initialisation du controller de la vue, David ajoute comme injection $scope pour accéder au scope de la vue. Il initialise une variable avec un tableau de deux éléments qui seront bindés dans la vue avec un repeater, il lance la page, et voilà ! ça marche très simplement.

Ensuite on nous introduit les différentes façon d’accéder à de la data, avec $http qui est basé sur une version light de jQuery, et $resource qui est un objet spécifique fait pour du restful api (qui sera utilisé un peu plus tard dans la démo pour interroger le serveur au lieu d’avoir la data en local)

Pour les utiliser depuis le controller, il faut les ajouter dans les injection de dépendance de celui-ci.

On nous présente comment créer un service pour rendre transparent l’accès aux données.

Démo de comment on peut créer un filtre dans un repeater.

Une petite démo du Two-Way Data Binding avec enregistrement en local des données.

Une démo sur les animations (avec le repeater , angular ajoute des classes spécifiques quand un element est ajouter/supprimer/modifier dans la liste et on peut donc facilement faire des animations en css).

Présentation de comment créer des routes dans Angular avec le template de la « page » qui va avec.


[Build 14] – Multitasking and Background Processing on Windows Phone

Mail de John
Jeudi 3 avril 2014 10:56

Multitasking and Background Processing on Windows Phone

On commence par un petit rappel du model de multitasking dans Windows Phone 8.
S’ensuit un rappel du modèle d’exécution des tâches de fond dans WinRT (Processus séparés, réponds à des Triggers et à des conditions).

Présentation des triggers disponibles dans Windows Phone.
Comment créer une tâche de fond ?
– Implémenter IBackgroundTask.
– Modifier le Manifest pour activer l’accès aux tâches de fond.

Démonstration en C# de création d’une backgroundtask et comment on l’enregistre dans le système (BackgroundExecutionManager.RequestAccessAsync), l’ajout de triggers (BackgroundTaskBuilder, SystemTrigger, SystemCondition). Ensuite démonstration de comment lancer une backgroundtask en Javascript (Ajout de la définition de la propriété TaskEntryPoint du BUilder qui correspond au fichier js contenant la tâche).

Les tâches de fond natives (aka WinRT) sont disponibles dans les applications Silverlight 8.1. Les BackgroundAgents sont maintenant hébergés par l’infrastructure WinRT.

Accès aux Sensors, Bluetooth LE, RFCoom même si l’application n’est pas en premier plan.
Basé sur les nouvelles API Bluetooth WinRT.

Nouveau triggers :
– GattCharacteristicNotificationTrigger
– DeviceChangeTriggfer
– DeviceUpdateTrigger
– RfcommConnectionTrigger

Les notifications de Geofencing peuvent être reçues en background dans une tâche de fond.
Ajout des Push Triggers dans Windows Phone.
Associer une Background Task avec un WNS channel.
Activation d’une tâche de fond grâce à une notification push raw.

Démonstration des Push Notifications.

Le rendu XAML dans les BackgroundTasks est maintenant possible ! (Démonstration de ceci en C++ c’est mieux pour la mémoire).

– Windows.Networking.BackgroundTransfer
– Pas de restriction de taille de fichiers
– Support du multi part mime (pour les gros fichiers)
– Verbes HTTP supplémentaires (PUT, RETR, STORE) et aussi FTP
– In-progress stream access
– Data-Sense and Battery Save aware

Non disponible pour les applications Windows XAML :
– Continuous Background Location
– Runs-Under-Lock
– VoIP Agents
– Wallet Agents

Economiseur de batterie :
Permet de trier et de gérer les applications qui tournent en tâche de fond et de voir leurs utilisations de ressources

Contraintes de ressources :
– Toutes les tâches de fond ont des quotas CPU, mémoire et réseaux
– Les quotas sont basés sur l’utilisation actuelle du CPU au lieu d’une limite d’horloge
– Le quota d’horloge sera renforcé (au moins une fois toutes les 30 secondes)
– Le quota de mémoire s’adapte aux capacités de chaque device.
– Le TimeTrigger aura un temps d’exécution assuré d’un maximum de 30 minutes maximum.
Appelez RequestAccessAsync() pour avoir votre quota maximum.


[Build 14] – From 4 to 40 inches Developing Windows Applications across Multiple Form-Factors

Mail de John
Jeudi 3 avril 2014 10:41

From 4 to 40 inches Developing Windows Applications across Multiple Form-Factors

Rappel de la différence entre la layout et les assets.
Layout: Physical Size and Shape, Viewing Distance, Effective Resolution
Assets: Detail Level, Scale Factor, Mastering

Il ne faut plus se demander quelle est la taille de mon application. Il faut se demander quelle forme a mon application (tall, thin, wide).

Démonstration de l’adaptabilité du layout et de la taille du contenu d’un jeu de morpion.
La résolution effective de l’application est importante, pas la taille de l’application.

Démonstration de l’utilisation des VisualState dans Blend pour s’adapter à la taille de l’application. (Utilisation d’un petit helper une classe de base d’une page qui change le VisualState en fonction de la taille).

Choisir de bons assets en fonction de la résolution. Si une image a beaucoup de détails en grande résolution et qu’on la redimensionne en une image à faible résolution elle sera très pixélisée. Il faut choisir une image avec moins de détails à faible résolution quitte à ce que l’image ne soit pas tout à fait la même que celle à haute résolution.

La densité relative des pixels d’une image est importante pas la densité réelle de pixels (DPI).
Il est important d’appliquer les conventions de nommage pour les assets (exemple image.scale-240.png) qui permettra de choisir automatiquement la bonne image en fonction de la résolution. Il faut quand même préciser la taille d’affichage de l’image car sinon le moteur de layout (HTML ou XAML) multipliera la taille de l’image au lieu de s’adapter au DPI.

Génération des assets :
– Déterminer la taille désirée de l’image en pixels effectifs
– Déposer ces assets dans le dossier partagé
– Multiplier la taille du layout par 2.4
– Déposer ces assets dans le projet Phone
– Vérifier que le résultat est le bon sur les appareils cibles (les émulateurs et simulateurs sont insuffisants pour une vérification d’assets)
– Si le resultat est bon vous avez fini
– Sinon essayez un scale factor supplémentaire de 1.4 ou 1.8

Création des masters assets :
– Dans l’idéal utilisez des assets vectoriels
– Sinon des bitmaps ayant un scale factor supérieur ou égal à 400%
– Exportez cet asset dans les scale factor cible nécessaires
– Ne pas oublier le niveau de détail
– Ne pas s’inquiéter si on a un asset à basse résolution

Mais où est le code ?
La plupart du temps il est inutile d’écrire du code pour gérer ce sujet.
Cependant voice quelques informations utiles pour la suite.
DisplayInformation.GetForCurrentView() :
– ResolutionScale (Windows (enum))
– RawPixelsPerViewPixel (WP (double))
– RawDpiX, RawDpiY (Ignore unless measuring real-world objects (ruler, hardware,etc..))
– LogicalDpi (avoid unless working with Direct2D or legacy code that assumes 96 DPI)

Silverlight : Information importante pour la migration d’application Silverlight vers WinRT. La résolution effective minimale pour les téléphones a changée. Il faut multiplier les constantes de taille par 0.8.

Utilisez les bons mots !
– Bien : Effective resolution / shape / scale factor
– Mal : physical resolution / orientation / DPI
Architecturez pour un layout flexible. Préférez l’utilisation de composants à celle de pages monolithiques :
– Laissez le moteur de layout faire son travail
– Focalisez-vous sur le bon set d’assets
– Commencez avec des master assets de haute résolution
– Ne générez que les scales factor nécessaires
– Assurez-vous que le niveau de détail est approprié


[Build 14] – Windows Desktop Development Advancements

Mail de John
Jeudi 3 avril 2014 10:13

Windows Desktop Development Advancements

On commence par un petit tour d’horizons des différents types de facteurs de formes disponibles sur le marché.

Comment écrire du code s’adaptant à toutes les résolutions ?

A propos des types d’affichages : Il faut faire attention aux DPI car plus le DPI est faible moins il y a de pixels et moins l’affichage est net. Plus l’affichage est net, plus la productivité des utilisateurs est importante. Ceci est lié à la facilité de lecture du texte.

Le « Display Scaling » augmente rapidement depuis Windows 8 (on est passé de 150% à 250% maintenant). Cette augmentation va continuer et Microsoft s’attend à ce que les affichages à 150% soient la norme d’ici à 2015. La mise à jour de Windows 8.1 permet le support des scaling à 250%.

Comment tester les différents DPI quand on n’a pas le matériel pour ?

Remote Desktop ! Remote Desktop permet de définir les résolutions et supporte un DPI différent par écran dans Windows 8.1. Quand on teste le support d’un haut DPI l’idéal est de la tester en 500%.
Il faut avoir de bons assets adaptés à chaque Scale Factor mais le mieux est des assets vectoriels car ils s’adapteront aux futurs scale factors.
Si votre application se scale correctement c’est un avantage compétitif.

Petit récapitulatif sur l’évolution des inputs.
Abstraire les différentes méthodes d’entrées.
Il vaut mieux avoir une application qui traite les pointers plutôt que de traiter les événements souris ou touch directement.
Les équipes de Microsoft ont passé pas mal de temps pour savoir comment traiter les pointers en C++ et sont actuellement en train de voir comment intégrer Kinect dans cette stack là.


[Build 14] – Developing apps using the common XAML UI Framework

Mail de John
Jeudi 03/04/2014 10:08

// Developing apps using the common XAML UI Framework

Pour développer une Universal App, il faut la dernière update de VS2013 (update gratuite). Cela est valable aussi pour Visual Studio Express.

On dispose d’un « projet partagé » dans lequel on peut mettre tous les fichiers à partager et pas seulement le code source. On peut y mettre des images, des fichiers ressources etc… Ce projet partagé ne génère aucune sortie (pas de dll, xap, appx…)
On peut convertir un projet Windows 8.1 en projet disposant d’un projet partagé. Cela n’entraine aucune modification du projet original. C’est à nous de déplacer les fichiers intéressants pour nous dans le projet partagé. Les fichiers XAML partagés sont rigoureusement les mêmes entre un projet partagé et un projet Windows 8.1 et un projet Windows Phone 8.1 Universel.

Tout WinRT n’est pas commun entre Windows Phone et Windows 8.1 mais la plupart des fonctionnalités le sont.

Qu’est-ce qui est commun alors (en se focalisant sur l’espace de nom XAML) ?
#Voir la session DeepDive controls 2-516 (Shawn Oster)
Les primitives sont partagées (Panels, Buttons, Slider, RadioButton, ProgressBar, TextBox, TextBlock, Shapes/Path etc….)
Certaines primitives ont la même API mais sont adaptés par devices (Hub, AppBar/CommandBar, Date/Time Picker, ListView, Flyouts, Media, Ads SDK*). L’AppBar ne peut en fait pas être utilisé sur Windows Phone. Les Flyouts sur Windows Phone peuvent être en plein écran mais pas en Windows 8.1.

S’ensuit une démo intéressante du HubControl, de l’AppBar et d’autres contrôles vus en mode Windows 8.1 et Windows Phone 8.1.

En ce qui concerne les publicités, on ne peut pas les utiliser directement en XAML. Il faut les instancier par code car les deux SDK de pubs sont dans des namespaces différents même si l’API est identique. De plus les AdUnit diffèrent en fonction des plateformes. Pour cela on utilise une directive de compilation : WINDOWS_APP ou WINDOWS_PHONE_APP.

Certains contrôles restent spécifiques à la plateforme :
Windows :
– SearchBox
– SettingsFlyout

Windows Phone :
– Pivot
– AutoSuggestBox
– ContentDialog
– Maps
– System Chrome (Progress Area) (Nouvelle API permettant de choisir la façon dont le SystemTray obtient sa couleur de fond).

Il y a une petite différence dans le modèle de navigation entre Windows Phone et Windows au niveau de la gestion du bouton back (maintenant l’appui sur Back ne ferme plus l’application).

#Voir la session Navigation Model for XAML Apps (Roberth Karman)

Il y a des points communs au niveau des animations :
ThemeAnimations et ThemeTransitions fonctionnent aussi maintenant sous Windows Phone.

La gestion du texte est uniformisée entre Windows Phone et Windows.
Il reste cependant quelques spécificités à Windows Phone.
Les PasswordBox sont aussi légèrement différentes (sur le téléphone on a un délai avant le masquage des caractères écrits).
Les tuiles sont aussi différentes entre Windows et Windows Phone.
Ajout dans Windows du XamlRenderingBackgroundTask pour générer des tasks en XAML dans Windows.
Ajout de l’API du RequestedTheme dans Windows Phone permettant de surdéfinir le thème par nœud XAML.