Gezien op Techdays 2014 Dag 2 Liveblog

Na een kort nachtje zijn we weer aanwezig bij de tweede dag van de Techdays. Het programma van deze dag is veel gevarieerder. Dus het belooft een leuke dag te worden.

Ook dit keer even een disclaimer: ik type live mee met een Surface RT inclusief toetsenbord op schoot. Ik zit meestal op een te krap stoeltje of zelfs op een kartonnen krukje buiten de zaal als deze al vol is. Excuses dus voor de typos.

HTML5: A Canvas Deep Dive

Christian Peeters

Het Canvas is een element in HTML5. Je kunt er weinig op instellen, alles gebeurt in JavaScript. Denk aan tekenen van lijnen, blokken, cirkels, plaatsjes, etc…

En Het is Fire&Forget. Iets wat getekend is, kan niet meer aangepast worden (zoals verplaatsen, vergroten). Hierdoor is het wel bloedje snel want het canvas hoeft niks te onthouden. De rest moeten we zelf doen.

Het canvas kan goed met 2D omgaan. En sinds de introductie van WebGL kan ook beperkt 3D ondersteunen.

Christian gaf een aantal korte demo’s die standaard gereedschap van het canvas toonde. Leuk was de combinatie van drag/drop/gravity/friction. Maar dit was maar één balletje. Maar het bleef performen tot aan 5000 elementen. Bij 1000 balletjes bleek het scherm nog op 50FPS te zitten. En de tijd ging vooral in het uitvoeren van JavaScript te zitten.

Tip: Teken niet vaker dan de refreshrate van het scherm. Zet de window interval op een deelbare factor van de refreshrate.

Tip: teken niet als het scherm niet getoond is. Pauseer dan. Gebruik hiervoor de RequestAnimationFrame() (let op backwards compatibility).

Daarna vertelde Christian over het gebruik van Sprites. Dus uit een grote bitmap wordt een stuk uitgesneden en getoond. Denk aan een rennend mannetje. Je toont dan enkele deelgebieden van een plaatje met daarin meerdere riddertjes er in. Verbazend hoe makkelijk een springend riddertje tegen een bewegende achtergrond getoond werd.

Tip: voorkom subpixel tekenen. Dit is echt traag, zeker 10 procent. Rond dus posities af of pak slimme getallen.

Tip: voorkom teveel downloads. CSS Sprites zijn slimmer.

Tip: gebruik webworkers. Dit is threading in javascript.

Een webworker is een bestand met een onmessage functie die werk uitvoert en de uitkomst in een postmessage teruig stuurt.

Tip: Tekst/drop shadows tekenen is erg traag! Teken tekst op een subcanvas (soort van prerenderen). En teken dat canvas op het hoofdcanvas.

Tip: Teken een inerte background in een aparte canvas.

Tip: uitvragen van collision kan door transparantie uit te vragen. Zit er geen plaatje dan is er geen collision.

Tip: touch ondersteuning. Zet touch ondersteuning van canvas op None, let bij oudere browsers op nevengedrag. En de OnMouseMove kan vervangen worden door de ONPointerMove. Dit geeft veel meer informatie.

Als je het hele canvas wilt draaien/kantelen/transformeren/scewing gebruik daar css voor.

Dan video, wat kan het canvas daarbij betekenen?

Christian demonstreerde een GreenScreen effect. Erg gaaf.

Ook een webcam was erg eenvoudig te integreren op het canvas. Christian demonstreerde een vorm van motioncaption op het canvas. Heel grappig en eigenlijk heel simpel. Hij trok uit de videostream twee beeldjes van elkaar af.

3D is leuk maar WebGL is niet prettig. Gelukkig ondersteunt Microsoft Babylon. Er was ook een Three bibliotheek demo.

Christian, dankjewel voor de leuke presentatie en de koffie!

 

Xamarin: mobiele store-ready en native apps voor ios/android in c#

Roland Guijt

Xamarin maakt het mogelijk om met C# native apps te bouwen. Het is gebaseerd op Mono. En het heeft een runtime. Apple wilt geen runtime toestaan. Voor IOS hebben ze dus de app en de runtime voorgecompileerd.

De snelheid is dus net zo goed als een native app. De footprint is wel wat groter, denk aan 2,5 mb.

Capabilities/sensors zijn gevat in c# classes. En ze lijken heel veel op de oplossing van het onderliggende platform. Helaas is dit dus UI specifiek want platform specifiek. MVVM Cross heeft hier een oplossing voor.

Xamarin bouw je in de IDE van Xamarin zelf of met een VS201X plugin. Helaas betekent dit wel een duurdere licentie. Gebruik Git om code te delen tussen de omgevingen.

MSDN gebruikers krijgen een redelijke korting van de (jaarlijkse, persoonlijke) licentie.

Gebruik voor Android de projecten rond de versie Icecream sandwitch. Dan bereik je 80 procent van de markt en je heb de meeste features voor je code. Je kunt ook direct ook veel nuget packages toepassen (denk aan Azure mobile services).

Debuggen? Gebruik bij voorkeur een fysiek device en debug daarop. Emulators zijn er wel maar die zijn traag en niet stabiel. Wellicht heb jij geluk met de X86 emulator. Test anders eens de ARM emulator. Let er bij de emulator op dat je, als je google specifieke zaken gebruikt (zoals Google maps) je de juiste emulator kiest (dus geen kale android versie).

De view binnen Android is gebaseerd op HTML (tegenover xaml dus). Dit is redelijk leesbaar, los van de leercurve. Android kent activities (dit zijn zegmaar de code behind bestanden). Let op de aparte koppeling van schermcomponenten van de code-behind. Schermelementen moet in eigen code gezocht worden op ID en in members geplaatst worden. Gelukkig zijn ID’s als resources beschikbaar.

En intents zijn acties uit te voeren door het os. en die moet ik opstellen en als activiteit activeren. Android kan dan fatsoenlijk binnen de context van de aanvraag de intent uitvoeren (android beslist bv. welke app de kaart mag tonen, etc.)

Sensors moet je aanvragen: …GetBestProvider. Ook hier beslist Android wel provider beschikbaar en het beste is. Lokaties kunnen op GPS gebaseerd zijn, maar ook op zendstation of IP adres.

Voor Apple moet je een Mac tot je beschikking hebben. Roland gaf een demonstratie met een Apple ‘in the cloud’.

MvvmCross kan viewmodel binden tegen verschillende views, op verschillende os’en. Must have dus.

 

Internet of Things

Anko Duizer

IoT is een hype. Kijk ook naar Internet of People en Internet of Everything. MSFT probeert hier op in te spelen om dit vooral makkelijker te maken.

IoT komt op alle vlakken voor. Zichtbaar zijn de wearables maar het zit ook in auto’s (smart cars), ziekenhuizen. Maar interessant is de latente data. Dus sensors leveren data, heel veel data. Maak daar eens informatie van.

En je kunt sturen op die data en de devices kunnen dus acteren op stuurcommando’s.

In de meeste architecturen komt een gateway voor: sensoren dragen data af aan een tussenpartij of gebruiken de gateway omdat ze zelf geen internet ondersteunen (denk aan bluetooth of nfc).

Maar de backend kan heel goed Azure zijn. Met daarop oa. Azure websites of mobile services.

Het product reijkjavik kan een standaard oplossing worden, los van zelf gebouwde oplossingen.

Dat raakt dit dan: Rx, HD Insight, azure storage, media services. Storm (complex event processing) is ook een interessant onderdeel in de hele keten.

Orleans is een framework bovenop Azure om echt te schalen. Iedere gebruiker wordt in een Actor omgezet. Dit is bij Halo4 al in gebruik.

Waarom in de cloud? Omdat je ontzettend veel connectie moet onderhouden en ontzettend veel data krijgt, inclusief piekmomenten. De cloud is ideaal hiervoor.

Er zijn ontzettend veel devices. Anko toont Windows Phone, Raspberry Pi en Arduino.

Maar ook interessant zijn de devices kleiner dan de gum van je potlood. Als die twee jaar meegaan op een batterij, en aan het internet kunnen hangen, dan heb je een leuke oplossing. Maar denk ook aan prijs, protocol en geheugengrootte. Headless spul met één of een enkele sensor is de grootste markt. Intel Galileo is een goed voorbeeld.

Het .Net Micro framework is een zeer interessante oplossing. Kijk eens naar Netduino want daar staat .Net vooraf al op.

Maar MSFT is onderscheidend met Azure, de backend. En wat zijn de uitdagingen? Denk aan connectivity, security en scale.

Reykjavik onsteunt met communicatie verschillende industrieprotocollen. En onder dat protocol communiceert over een bepaald medium/transportmiddel. De gateway draait in Azure bovenop Servicebus. En ieder device krijgt zijn eigen inbox/outbox (queues). Via topics kun je berichtenstromen samenvoegen en daarna wil je data scheiden van alerts.

Terug kun je ook berichten filteren om specifieke berichten op de outbox queues te zetten.

En je kunt adapters aansluiten op de telemetry. En je kunt een Command host voor commands en notificaties opzetten.

De gehele gateway is op schaalbaarheid gericht. De huidige grens zit op 1 miljoen berichten per seconde.

Nitrogen is open source. Draait op Node.js. Draait op de servicebus. http://nitrogen.io

Later ben ik nog naar de sessie van Maarten Struys geweest, ook over IoT. Deze sessie was ook van prima kwaliteit en de twee sessies sluiten prima op elkaar aan.

Strekking is dat de marktpotentie erg groot is van deze technologie. IoT betekent veel data. Veel data betekent veel informatie. Veel informatie betekent kansen om geld te verdienen.

Maar iedereen heeft een andere definitie voor “Internet of Things”. En hoe zit het met de gevoeligheid van de gegevens?

 

Prism for the windows runtime

Mike Taulty

Deze sessie gaat specifiek over deze versie van prism, er zijn namelijk meerdere versies, er is ook een WPF versie.

Prism is een MVVM implementatie. Het is een project van het Microsoft patterns/practices team. Het geeft sturing en ondersteuning om kwaliteit applicaties te bouwen. Het is gelaagd opgebouwd. Denk aan navigatie, opslag, schermrotatie, etc.

Prism geeft documentatie, class libraries en source code, quick start tutorials en een referentie implementatie. En er zijn ook project/item templates. De documentatie is gewoon een (pdf) boek, 250 pagina’s en lees deze in delen. Maar lees het! En het is al voor Windows 8.1 klaar.

Package Prism.StoreApps haal je op via Nuget.

Daarna begon Mike met de demo’s… Het is lastig deze in tekst te vangen. Maar dit was erg onderhoudend en ik ga hier zeker op verder voor mijn eigen applicaties.

Ook de referentie app werd getoond. Dit lijkt erg goed bruikbaar voor de gemiddelde applicatie. Oppakken dus.

Samengevat, deze sessie was erg leerzaam en bruikbaar.

http://prismwindowsruntime.codeplex.com

Update:

Het is nog even wachten op de video’s maar ik heb de volgende presentatiesheets al kunnen achterhalen!

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4630 Game and Simulator Physics for Developers, Gamers and Petrol Heads

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4748

 

Build Redux
http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4661

 

Introduction to Orleans

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4662

 

Using Orleans for building scalable cloud applications

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4558

 

Building a HTML5/Javascript App from start to finish

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4556

 

Use your HTML 5 skills to build Apps for Office (and SharePoint)

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4494

 

Leuk die nieuwe dingen, maar hoe krijg je goedkeuring van het management?

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4510

 

Het ontstaan van ‘Sovjet-IT’, de controle verliezen door niets te doen

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4613

 

Angular JS: A fresh Breeze in the SPA

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4614

 

Building Cross platform mobile applications using Xamarin

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4688

 

Nservicebus on azure

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4541

 

Designing XAML Apps using Blend for Visual Studio 2013

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4533

 

What’s new in XAML and Tooling for Windows 8.1?

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4589

 

The Fundamentals Guide to HDP & HDInsight

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4590

 

The Rocky Cloud Road
http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4591

 

Real-time Event Processing using LINQ for Traces (tx)

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4737

 

Office 365 Identity & Mail Migration

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4628

 

Building Windows Store and Windows Phone XAML apps

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4627

 

Diagnosing performance issues in XAML based Windows Phone and Window Store Apps with VS 2013

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4666

 

The Identity Challenge for Developers

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4669

 

Troubleshooting Production Issues With IntelliTrace

 

http://www.microsoft.com/netherlands/techdays/SpeakerDetail.aspx?speakerId=1450

 

                Sites and Apps, hoe maak ik ze accessible
http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4615

 

Van idee tot werkende web applicatie

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4522

 

Windows Azure to the rescue!

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4638

 

ReactiveUI: een MVVM framework gebouwd met Rx

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4689

 

Windows Azure Web Jobs – the new way to run your workloads in the Cloud
http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4690

 

Continuous Delivery Zen on Windows Azure

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4609

 

Automated cross browser testing of web applications using Visual Studio CodeUI

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4718

 

De digitale wedstrijd

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4719

 

One tool to rule them all (cross os)

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4524

 

Build your own IAAS with the Windows Azure Pack

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4560

 

Defensive Programming 101 v5 – Common security mistakes in web applications

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4561

 

Introduction to SignalR

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4562

 

Windows Azure Mobile Services from the ground up

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4732

 

Niet onderhoudbare software in 10 makkelijke stappen

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4603

 

Building Windows 8 Line of Business Apps

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4602

 

Using MVVM So You Can Write Better Code and Less Code

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4740 Modernizing Existing .NET Client Line of Business Applications
http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4617

 

Xamarin: Mobiele, store-ready en native apps voor iOS/Android in C#

 

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4618

 

Lego MindStorms Programmeren met Visual Studio
http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4525

 

Moving virtual machines from Hyper-V to Azure – and Back Again

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4504

 

An insider’s guide to Microsoft Only VDI with Windows 8.1 and Server 2012 R2

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4518 CTO’s Perspective on Tomorrow’s Workspace

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4645

 

Hergebruik van JavaScript kennis bij het bouwen van Windows Store apps
http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4646

 

TypeScript en Windows Store apps

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4703

 

Van één app honderd apps maken?

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4736

 

Overzicht van de Office 365 mogelijkheden

 

http://www.microsoft.com/netherlands/techdays/SessionDetail.aspx?sessionId=4612

 

Creating sustainable solutions with SharePoint 2013

 

 

Advertentie

Gezien op Techdays 2014 Dag 1 Live blog

De komende dagen
ben ik aanwezig bij de Techdays 2014 in Den Haag. Dit is een prima evenement om
te kijken waar ik me het komende jaar op moet gaan richten. Kortom, dit is de
mogelijkheid om je kennis bij te spijkeren.

Ik zal pogen van een aantal sessies een live blog af te geven. Excuses voor eventuele spelfouten J

Volg ook  #techdaysnl op twitter en Facebook.

Robert green

Building windows 8 line of business app

Robert demonstreert een aantal technieken om een app te bouwen met oa. Schermnavigatie en lokale database ondersteuning.

Als lokale database wordt SQLite for windows RT extension gedemonstreerd. Dit is open source en functioneert prima in Windows 8. De opslag vindt in een bestand plaats met een willekeurige naam. De extensie s3db is handig als je ook gebruik wilt maken van een opensource database manager.

De SqlLiteconnection levert standaard alle CRUD acties, en async natuurlijk.

Als tegenhanger
werd ook opslag in XML getoond. Het is bruikbaar voor enkele records. Het is
wel veel meer code
L Dus overstappen naar SqlLite loont. Ophalen die
Nuget packages dus. En vergeet de linq toegang ook niet.

Het aanroepen van een WCF service werd ook gedemonstreerd. Niets nieuws hier.

Daarna demonsteerde hij het toepassen van de modern UI language. Anders dan voorheen bouwen we tegenwoordig geen schermen meer waar echt alle data in één scherm gepropt wordt. Dat was leuk in WinForms maar tegenwoordig gebruiken we op een slimme manier gebruik van navigatie. Dit gebeurt op Android, op IOS en dus ook
op Win8. Semantic zoom kwam ook voorbij en ook het tonen van dezelfde pagina op het scherm gedeeld met andere applicaties. Kortom, “Content over Chrome”.

Ook pinnen werd getoond. Dit is een waanzinnig gave functionaliteit die in iedere app ingebouwd moet worden. Hier heb ik zelf ook al eens een artikel over geschreven in de SDN Magazine. Robert gaf een aantal links weg als naslagwerk.

Authenticatie was het volgende onderwerp. Er is in wezen niks veranderd tov. vorige Windows versies. Er is nu ook ondersteuning voor fingerprint readers, smartcard readers, virtual smartcards, etc. Kijk eens naar de UserConsentVerifier class.
Active Directory authenticatie kan ook in een offline scenario gebruikt worden.

Robert demonstreerde windows authenticatie via een instelling op de binding van een WCF service. De windows credentials, ingetypt bij het starten van de pc, worden dan meegestuurd. Er is een CredentialPicker Class die het standaard inlogscherm/dialoog toont. Helemaal gratis en het ondersteunt ook de smartcards. Roep de PickAsync methode aan.

Ook werk kort het gebruik van claims (tokens) gedemonstreerd die de aanroep naar een WCF service omboog naar een alternatieve inlogpagina (via een IServiceAuthorizer) als een Azure ActiveDirectory. Met WebApi is dit allemaal iets makkelijker maar kijk zijn blog na voor meer details.

Er werd ook nog over Azure Mobile Services gesproken. De data van de demo app werd nu daar in opgeslagen. Authenticatie kon ook via twitter/google/facebook.

Data in een LOB applicatie moet ook beveiligd worden. Het OS zelf is al redelijk veilig. Denk aan bitlocker en data kan op afstand gewist worden. En data kan alleen bekeken worden als je aan het werk domein gekoppeld bent.

Remote debugging is een pré om de kwaliteit van je app te borgen. Test vaak en op de devices die je moet ondersteunen. Draai je apps ook echt op die apps. Robert gaf wat links weg voor het downloaden van de remote debuggers.

Interproces communicatie is beschikbaar. Helaas is dit alleen in side-loaded apps toegestaan. Dit geldt ook voor de loop-back adapter. Er bestaat ook zoiets als Brokered RT Apps. Dit geeft toegang tot het gehele os. Bekijk de sheets van Robert voor meer details.

Deployment kan dus op twee manieren: via de store en Sideloaden. De store is handig want MSFT zorgt voor al het loodgieteren rond updates en beschikbaarheid.

Sideloaden is de manier om te voorkomen dat je app niet overal uitgerold mag worden. Je hebt er een certificaat voor nodig en de machines moeten sideloaden ondersteunen. En open license kost maar 100 dollar voor een onbeperkt aantal devices. Enterprise agreements etc. krijgen het zelfs gratis voor elkaar.

Kortom, de sessie was interessant als je een LOB apps moet bouwen. Helaas waren de demo’s wat slordig afgewerkt.

Eric Gamma

How to survive Massive.js

Na een korte samenvatting over de Build kregen we de Developers Keynote van Eric Gamma. Eric vertelde eerst over zijn overstap naar MSFT. Hij kreeg de kans om een nieuwe uitdaging aan te gaan. Erg grappig hoe zo’n overgang vanaf IBM naar MSFT plaats vindt.

Hij is nu bezig met JavaScript. JavaScript vergeeft een heleboel en geeft daardoor veel frustratie. TypeScript neemt hier veel van weg. Maar JavaScript is nu echt een eerste klas programmeertaal. Gebruik het.

Er zijn ontzettend veel rijke bibliotheken voor Javascript: angularjs, winjs, backbone.js, knockout, underscore d3js, etc. JavaScript draait niet alleen in de browser maar ook op de server. Denk hierbij aan node.js.

Eric werkt aan web-based development tools. Denk aan de IE F12 sourcecode viewer. Deze is in TypeScript geschreven. Ook de WinJS playground is een goed voorbeeld. De OneDrive portaal en de Azure portaal zijn ook projecten waar Eric aan werkt.

Visual Studio Online Monaco is een echte IDE in de browser. Maar grote delen (90%) draait in de browser lokaal, geschreven in javascript. 10% draait in node.js op de server. De koppeling gaat met http rest calls. Het bestaat nu uit 200 duizend regels code. Het maakt gebruik van patterns: injection, dependency, API, components. En het is geschreven in 100% typescript (je vind javacript alleen nog in enkele unittests).

Kijk eens naar het boek JavaScript: the good parts. Wellicht moet je het meerdere keren lezen. Eric demonstreerde de typische vreemde gedragingen van javascript: een object opgeteld bij een array geeft iets anders dan andersom. Vreemd. Er zijn dus wat
‘concerns’.

Javascript blijkt ook lastig te herstructureren, te refactoren. Eric gebruikt dus unittests om de kwaliteit tijdens wijzigingen aan de
code te borgen. Er zijn p dit moment bij 43 duizend unittests in Monaco. Cool.

TypeScript blijkt hierbij erg waardevol en daarom is het team van Eric
uiteindelijk geheel op TypeScript overgestapt. Vooral het beschikbaar komen van Interfaces blijkt erg waardevol.

Eric gaf een mooie demo in de typescript playgrond. Hier werd een interface geïntroduceerd in bestaande code. Doordat dit eruit zag als C# en omdat we de gegenereerde javascript goed konden vergelijken kwam de meerwaarde direct naar voren.

Callbacks worden nu ook opeens als interface beschikbaar gesteld. En je bent al voor de komst van Ecmascript 6 ingedekt. Eric demonstreerde daarna nog een aantal zaken die wel in TypeScript zitten maar ontzettend lastig in JavsScript zijn te bouwen.

Eric geeft aan dat ze heel agile met sprints van vier weken werkt waarbij de eerste week aan ‘Dept reduction’ gedaan wordt.

CSS is ook een pijnlijk punt. Less en Sass als pre-processor lost al veel op.

De winst door TypeScript toe te passen was ook het verminderen/verwijderen van de vele globals. JavaScript maakt het zo simpel om overal maar een globale variabele aan te maken dat dezelfde waarden op meerdere plaatsen gaat leven.

Rajen Kishna

Tiles, notifications en het actiecentrum

Livetiles en notificaties geven voor voordelen voor hgebruikers van je apps en zijn onderscheidend voor Windows Phone. Het schept ook een band met jouw gebruikers en hopelijk komen ze vaker terug in je app.

Voor tiles zijn er heel veel templates beschikbaar. DE win8 tiles zijn nu ook beschikbaar op wp8 gekomen. De tiles zien er dan wellicht nog niet hetzelfde uit maar het bericht wordt wel ondersteund, geslikt. Sommige velden zullen dus genegeerd worden omdat het niet past.

Wil je dit gaan gebruiken ipv. de klassieke drie soorten tiles dan moet je in je project aangeven dat je de nieuwe AWS notificaties wilt gebruiken.

Mocht je de tiles willen naar je eigen hand willen zetten dan kun je bv. Zelf bitmaps in de notificatieservice ondersteunen.

Met 8.1 zijn een aantal nieuwe functies beschikbaar gekomen. Er is nu ook een notificatie simulator beschikbaar, zonder dat je echte service nodig hebt. Ook kan periodic polling geregeld worden. En notificaties kunnen in een queue geplaatst worden zodat je meerdere formaten kunt ondersteunen. En tiles kunnen ook verlopen.

Tile update je: vanuit code via de Update, via een scheduler of via een service.

Alle tileupdates lijken op elkaar. Het is gewoon een XML bericht, nog steeds.

Rajen demonstreert het gebruik van tiles via een universal app. Deze lijkt verdacht veel op zijn eigen template met uitzondering van die shared projecten.

De background task met tilesupdates zoals je ook in WP8 gewent was, werkt nu ook in Win8.1.
Maar de backgroundtask kan ook getriggerd worden door bluetooth, geofencing, etc.

Windows Notification Services is nu een aanvulling op Microsoft Push Notification voor WP8. De Api is gelijk op Win8 en WP8. En secure authenticaties hebben geen certificaat meer nodig, dit kan via OAUTH.

Er zijn wel enkele verschillen tussen WNA en MPN. Er moet steeds een nieuwe url aangevraagd worden op WNA. Je hebt App Identity nodig voor toepassen OAUTH.

De huidige MPN is officieel nog niet depricated. Microsoft maakt MPN/WNA transparant door een MPN shim. Je hoeft jouw MPN backend en de apps die nog MPN toepassen dus niet aan
te passen, voor nu….

Rajen heeft ook verteld over de nieuwe action center in  WP8.
Erg interessant om te horen hoe MSFT na heeft gedacht over een bruikbare center zowel online als offline.

Als je app opstart terwijl er nog berichten in de action center staan, kun je taken laten verwijderen via verschillende scenario’s.

Samengevat, dit is een interessante uitbreiding op de huidige tile ondersteuning.

Tom Verhoeff

Optimizing Windows store apps for varying form factors,
resolutions and viewstates

Tom is geen onbekende in de Nederlandse App ontwikkelaars sciene.

Deze sessie gaat voornamelijk over Store apps, maar universal apps kunnen hier ook mee gemoeid zijn.

Je moet assets, content en layout scheiden.

Tom toont gedrag tussen full view, snap view en schaling daartussen. Ook daartussen moet kan nog eea. Weggelaten worden. Ook portretmode is interessant.

Als de resolutie heel hoog wordt maar het scherm is heel klein, dan is het niet zinvol om gebruik te maken van de gehele resolutie. Alls wordt dan heel klein. MSFT zal dan automatisch een schaalfactor toepassen waardoor alles nog ‘groot’ blijft maar de resolutie wordt als scherper ervaren.

En er is nog zoiets als een effectieve resolutie. Deze is gelijk bij een 4 inch scherm op 40 cm afstand en een 40 inch scherm op 4 meter.

Hij gebruik als demo de standaard grid template applicatie. Grappig: hoe kom je aan een standaard katten plaatje?

http://Lorempixel.com/250/250/cats?” + Guid.NewGuid();

Nog een vraagje: Snapview moet je in 8.1 even aanzetten in de project settings?

Eerst demonstreert Tom dit door gebruik te maken van het SizeChanged event in CodeBehind. Door de breedte uit te lezen wordt een andere visualstate gekozen (die even daarvoor apart aangemaakt is: small en medium).

Nu is het nog best bewerkelijk. We mogen verwachten dat dit vanuit de community opgepakt wordt. Tom demonstreerde een xaml grid control met layout rules.

Tom toonde ook hoe hij hetzelfde plaatje met verschillende resoluties toonde afhankelijk van de zoomfactor van het scherm (plaatjes kwam van modernuiicons.com). Het is een
kwestie van alternatieven opnemen zoals XYZ.scale-140.png naast XYZ.png.
Schermen met schaal 140 worden dan van dat specifieke plaatje voorzien.

Scaling is dus heel relevant geworden door alle nieuwe schermformaten, werk dus bij voorkeur met vectorgraphics van plaatjes. Dit kan een path worden en die zijn ook samen
te voegen, van elkaar af te trekken, etc.

Deze korte sessie was interessant en ik ga het zeker toepassen. Tom stelt zijn code beschikbaar op zijn blog.

Rob Miles

Talking to Hardware wih Windows Phone

Het is onmogelijk Rob zijn sessie in tekst te vatten. Dus leun ik achterover om er alleen uit te komen als ik omval van het lachen.

Rob Miles zet zijn sessie ook op zijn blog.

 

Andy Wigley

 A lap around Windows Phone 8.1

Andy geeft nog eens een opsomming van alle nieuwe sleutelopties binnen WP8.1. Dit is een aanloop naar zijn presentaties op Channel 9.

Alle 8.0 toestellen zijn naar 8.1 om te zetten.

Het registreren voor App Studio wordt ook als een developer gezien. En als je dan de Preview for Developer app installeert, dan krijg je de update (Confirmed: aanmelden duurde maar een paar minuten, zorg dat je het developers certificaat installeerd).

Cortana is fantastisch, we zullen nu steeds meer mensen zien die tegen hun telefoon
praten.

Swipe keyboard

Transparant startmenu. Zet er je eigen foto achter

Action center geeft inzicht in ongelezen berichten.

Remote viewer komt er aan. De pc kant wordt binnenkort uitgeleverd

Een microsd kaart kan door de telefoon gerepareerd worden als deze ‘corrupt’ is.

Etc…

Onder water is de 8.1 een compleet nieuw os. Het is met win8.1 samengegaan. De technieken voorheen heet nu Windows Phone Silverlight. Maar nu hebben we ook de Unified apps.

Andy gaf een demo in VS2013 met de universal apps. Dit is code voor zowel Windows 8.1, Windows Phone 8.1 alswel Xbox. Opvallend is dat er een shared folder bestaat met gedeelde bestanden die gelinkt worden in de andere projecten. Hierdoor bestaat er maar één copy van de code die in de andere projecten ingecompileerd wordt.

Opvallend is dat naast de gedeelde code ook grote delen van de xaml deelbaar zijn. Maar MSFT onderkent het verschil in devices en wilt dus liever niet dat xaml ook gedeeld moet worden. Het mag wel maar dat is niet het patroon dat MSFT voor ogen heeft.
Het is prettiger om de xaml in de pages (de views in een MVVM pattern) specifiek per platform te houden.

Dit gaat ook op voor Html/winjs. Ook daar is het mogelijk om apps op beide platformen te bouwen.

De controls zijn ook samengegaan, voor 80%… Denk hierbij aan de aangepaste datetimepicker.
Maar ook de echt toonaangevende controls zoals de HUB. Deze geeft in WP een ander ‘gevoel’ dan in Win8.

Background task kunnen op input reageren zoals timer, bluetooth, gps, etc.

Er is ook credential locker als je credentials wilt hergebruiken over meerdere gebruikersessies.

Wil je ontwikkelen? Als je Hyper-V wilt toepassen dan moet je minimaal 4Gb op een 64 bits machine hebben. Maar pak veel meer geheugen als je ook met zware emulators moet testen.

Magnus Martensson

 Windows Azure Web Jobs – The new way to run your workloads
in the cloud

Het draait om processing op de achtergrond in Azure web sites. Het is altijd aan. En er moet rijke monitoring en diagnostiek. Deze techniek is momenteel in preview.

Magnus begon met een demo met een blocking call naar de database in een website submit. Dit zette de pagina even op slot. Daarna verving hij deze aanroep door een call naar Azure om de submit op een queue te zetten.

Dit was een aanroep naar een worker role. Deze Heeft veel plumming, een eigen instance en een hele vage while true lus (hopelijk met een sleep er in). Helaas moet je zelf de diagnostics schrijven.

Er is en Simple Batch oplossing als demo geweest. Dit is uitgemond in de WebJob: een versimpelde webrole.

Hiervoor moet een pre-release nuget package webjob toegepast worden in je project. Opeens krijg je alleen een class genaamd Program met een main methode. Het heeft een
app.config.

Het was heel interessant dat de webjob zelf ging zoeken naar queue messages, blob storage, etc. Dat kost je met een WorkerRole een ochtend aan werk! Grappig is dat de methode die het werk doet via reflection wordt geladen. Magnus gebruikt resharper en moest daar de ‘ongerefereerde code’ waarschuwing uitzetten.

Simpliciteit is dus de sleutel. Magisch zelfs?

Pas na het volledig uitvoeren van de code wordt de boodschap uit de queue verwijderd.

Nadeel is dat we geen controle over de queue message hebben, alleen over de body. Want wij kunnen een ‘giftige’ message niet zelfstandig verwijderen vasnuit de webjob. Iets te simpel? Het is verstandig om hier rekening mee te houden.

Webjobs draaien NAAST azure websites. Dus dit is shared CPU en shared memory. Als er dus geen azure website is, dan draait deze dus alleen op een server. Maar het draait ook echt als een console app… Het kan ook dedicated draaien (kies dan voor de het Standard web hosting plan). CPU grootte en schaling staat hier los van.

Er is ook een Free hosting maar daar die is niet echt voor productie. Dan draait de webjob ‘on demand’. Pas vanaf Basic kan echt productie gedraaid worden. Controleer de Always on setting. Ik vind het erg verwarrend…

En toen zat de eerste dag er op. Tijd om naar huis te gaan en even uit te rusten. Morgen is er weer een dag…

Update:

Zie onderaan de tweede dag voor meer informatie over beschikbare sheets etc.