Azure Functions as watchdog for missing telemetry or devices

Once you are working with the Azure IoT platform, there comes a moment where you want to add notifications.

In a previous blog, we looked at how to send notifications when telemetry values did not match certain ranges. Although this is great, there are even more cases where we want notifications.

Here I am referring to watchdog functionality. When no telemetry is arriving anymore or devices are disconnected, the complete IoT platform is not working as designed. So we want to be informed when something fails.

In this blog, we will build a simple watchdog using Azure Functions.

Continue reading “Azure Functions as watchdog for missing telemetry or devices”

Advertenties

Passing data between Windows 10 IoT Core headed and headless apps

As shown in my last blog, Windows 10 IoT Core supports headed and headless apps. I can run only one headed (UWP) app at a time but running multiple headless apps is possible too.

But how do I deploy these apps? And can I pass information between apps while running?

In this blog, we dive deeper into the unseen world of background application.

Continue reading “Passing data between Windows 10 IoT Core headed and headless apps”

Using the Visual Studio 2015/2017 IoT Hub Extension and IoT Hub Device explorer

In my previous blog, I presented a simple way to connect a device (actually it was a UWP app) to an Azure IoT Hub. After that, I persisted the messages, sent to the IoT Hub,  into SqlAzure using StreamAnalytics.

This easy example can still be simplified using the recently presented IoT Hub Extension and IoT Hub Device Explorer. In this blog, I will show you how to make use of these tools.

Update: this extension is also available for Visual Studio 2017 (version 1.6 and higher) now. At this moment, it contains basically the same functionality. In the future, I hope, this extension will provide more interesting logic like ‘device twin’ support.

Continue reading “Using the Visual Studio 2015/2017 IoT Hub Extension and IoT Hub Device explorer”

TechEd Europe 2014 in Barcelona

TechEd Europe 2014
#TEE14

Ja, vanaf 27 oktober is het weer zo ver: vijf dagen TechEd Europe. En ik ben er bij.

Tijdens deze TechEd zal hier dagelijks een semi-live blog verschijnen. Ik verwacht dat de Wifi connectie net zo goed, of slecht, als andere jaren zal zijn dus het uploaden zal voornamelijk ‘savonds in Hotel Jazz plaatsvinden.

Mocht er zo nu en dan toch internetverbinding zijn, dan zal ik ook hightlights plaatsen op twitter: @svelde met als hashtag #tee14

Tijdens deze TechEd werk ik met een Surface 2 RT. Eens kijken of dit de ideale reisgezel is voor de live-blogger. En natuurlijk heb ik ook mijn  Lumia 820 bij me. Omdat ik verwacht dat ik niet volledig op de batterij kan vertrouwen heb ik ook nog een Lumsing powerbank ingepakt.

Mocht je zelf ook gaan en mij willen ontmoeten? Laat even een berichtje achter of via twitter @svelde

C U @ Barcelona!

Teched Europe alumni
Returning again

Lowlands Windows Phone Developer Day 2014

Lowlands Windows Phone Developer Day
 
“Op zaterdag 18 oktober komen we met z’n allen (Belgen en Nederlanders!) bij elkaar in Tilburg om een hele dag te luisteren naar experts op dit gebied, om kennis te maken met andere Windows Phone enthousiastelingen en uiteraard om zelf te hacken!”
 
Ik ben aanwezig geweest bij de Lowlands Windows Phone Developer Day! Dit het tweede event want vorig jaar is dit begonnen met Windows Phone week. En tussendoor is er nog de battle geweest, een soort van hacketon met een Nederlands en een Belgisch team. Daarom is het nu ook in Tilburg georganiseerd. Prettig, een dagje in de buurt.
 
Na de opening door Dennis Vroegop zijn er twee parallel tracks gestart. Ik heb samen met collega Alex Faessen en Frankwin Faber een aantal sessies gevolgd.
 
DISCLAIMER: Dit werd live ingetypt. Typo’s en misinterpretatie van de spreker ligt op de loer…
 
Joost van Schaik – Geofencing
Geofencing is de mogelijkheid om je app acties te laten ondernemen op het moment dat je telefoon of tablet in de buurt van bepaalde locaties komt – of deze juist weer verlaat. Deze sessie laat je zien hoe je dit moet doen – in zowel in de voorgrond in een actieve app, als wel als in een achtergrond taak, zonder dat je steeds de locatie hoeft te pollen. Gebruik makend van universal apps kom je te weten hoe je deze techniek zowel in Windows Phone als Windows kunt toepassen, alsmede hoe je met handig gebruik van de emulator c.q. simulator zaken kunt testen.
 
Joost van Schaik aka LocalJoost zit in de GEO business.
 
Geofencing is rond een fysiek punt op de aarde een virtuele grens leggen. Er gebeurt iets als je over die grens stapt. En het wordt echt interessant als dit controleren continue, op de achtergrond, plaatsvindt.
 
Het zat al een tijdje in de Windows 8.X maar er zijn weinig devices met zo’n GPS dongle ingebouwd. Maar de logica kan als PCL geschreven worden en is daarmee ook voor Windows Phone beschikbaar.
 
Het kan zowel op de voorgrond als op de achtergrond toegepast worden, maak een keuze welke versie je gebruikt. De event mogen niet dubbel doorkomen, dit kost resources (batterij) en kan de logica/werking van je app verstoren .
 
Demo tijd met een Windows Phone simulator…
 
Joost demonstreerde een universal app want dan draait het op alle apparaten. Hij had ook een aantal hulpbibliotheken toegevoegd, waaronder één voor cirkels op het scherm (geopoint+radius=lijst van geopoints om een cirkel op de kaart te tekenen). We kunnen namelijk geen cirkels op de kaart tekenen.
 
Overigens gebruikt Joost voornamelijk Geopoint want die zijn interessanter dan BasicGeoPosition, een andere klasse waar we code mee schrijven.
 
Er is ook een GeoFence object. Die wordt toegepast door de GeoFenceMonitor. Hier kun je fences aan toevoegen: voor eenmalig gebruik en of je zowel bij binnenkomst of bij vertrek een signaal wilt krijgen. Een fence is dus een cirkel op de kaart. MSFT kent momenteel nog geen andere vormen. Of dit uitgebreid wordt met bv. Vierkanten, rechthoeken of polygonen is onbekend. Joost kon hier geen uitspraak over doen.
 
Ook is er de dwellingtime. Je wilt er zeker van zijn dat iemand echt een fence ingaat of verlaat. Normaal is die 10 seconden en dat is onhandig bij kleine fences en een hoge snelheid. Pas dit dus aan.
 
Overigens kreeg Joost het signaal van binnenkomst niet goed door. Waar zit de bug?
 
De GeoFenceMonitor geeft events af. In dit event moet je de rapporten van de monitor aflopen en actie ondernemen.
 
Demo met Windows 8…
 
De demo met de Windows 8 simulator was wat lastig. Je kunt steeds maar 1 coördinaat invoeren. En Joost gebruikte toasts, iets wat de simulator niet aankan. Joost lost dit op met een Debug.WriteLn. lol
 
En hij gebruikte bing maps. Vraag daar een key voor aan. De app verliest hiermee overigens de ‘any cpu’ compiler output. Zet ook even de capabilities aan (geo stuff en toasts).
 
Met bing maps krijgen we ook kaart layers tot de beschikking en polygonen!
 
Dit was tot nu toe allemaal code die op de voorgrond draait.
 
Om dit op de achtergrond te gebruiken, gebruiken we de location trigger. Helaas laat MSFT deze slechts iedere twee minuten afgaan om de batterij te sparen. Realtime meten moet dus in een draaiende app plaatsvinden.
 
Microsoft maakt de snelheid uit. Gebruik dit dus niet voor Mission critical.
 
Joost had de backgroundtask nog niet in een PCL gezet. Hij wist ook niet of dit zou kunnen. Wellicht wel…
 
Vergeet niet de background task voor locaties te declareren. En je moet ook de lockscreen badge toevoegen als je toast wilt draaien.
 
Demonstreren kan door de build op Local Machine te zetten, run de app dan zonder debugger. En start daarna de simulator. Want dan denkt de simulator dat er een background task is. Joost heeft er een sheet over 🙂
 
Het was dus een interessante presentatie. Ik wil dit wel gaan gebruiker. Ik kan hier erg leuke apps mee verzinnen.
 
Tijd voor koffie en daarna track 2.
 
Nico Vermeir – Background tasks in Universal Apps
 
Met de komst van Universal Apps werd ook het background processing verhaal op de schop genomen. Voornamelijk voor Windows Phone zijn er grote veranderingen.
 
In deze sessie doorloop ik een aantal scenario’s waarin een app een background task kan gebruiken, de verschillende vormen en soorten en hoe die geïmplementeerd worden.
 
@NicoVermeir geeft een presentatie over background tasks. Lol: het gaat op Windows 10 gepresenteerd worden.
 
Er zijn verschillende types.
 
Eerst moet je een Windows Runtime component project toevoegen. Daar moet de backgrond task in draaien. Waarom? Geen idee.
 
De task implementeert een interface IBackGroundTask. Deze heeft slecht één methode: Run. Registreer daarna de task.
 
Background tasks werken met triggers. Bv. Het benaderen of verlaten van een geofence. Deze task kan ook conditioneel uitgevoerd worden (in Big Windows). Denk aan draaien binnen lockscreen of connected zijn.
 
De gedemonstreerde types zijn: Push, Triggered en Geofencing.
 
Nico demonstreert eerst met een blanco shared project. Handig want dat is overzichtelijker voor de uit te voeren codeer stappen. (tip: stop geen xaml in je shared project)
 
– Voeg een portable project toe
– Implementeer de IBackgroundTask interface
– Nico voegt wat code toe om een teller op te hogen afhankelijk van het aantal keren wisselen van timezone door de background task. Dit is de System triggered background task
– Nico speelt met de ‘deferral’. Hiermee geeft de task aan dat hij nog even bezig is (denk aan langdurige acties). Kans op vroegtijdig afbreken door het OS neemt hiermee af.
– Pas je capabilities en declarations aan; wat mag de app?
– (er is ook een update task voor Windows Phone. Dit is heet handig voor als er updates klaar staan voor je app. Helaas heeft Nico dit overgeslagen)
– Voeg ook het entry point toe in het manifest. Let op: maar geen schrijffouten.
– Windows 8 moet ook lockscreen capable zijn. De naam van de badge logo wordt niet echt afgetest… En dam oenten we ook de Timer instellen in het manifest…
– Op de mainpage code behind moet de task ook geregistreerd worden. Doe dit in de Loaded event (awaitable backgrondexecutionmanager.RequestAccessAsync) De gebruiker krijgt op Big Windows dan een vraag of die background task wordt toegestaan.
– En we hebben een systeemtrigger en een entrypoint nodig (niet dubbelop: hier zeggen we wat we echt gaan executeren)
– Register op de taskbuilder
 
Debuggen kan met een breakpoint in de code. Nico demonstreerde dat met automagisch in de IDE na wat rebuilden dat de code aangeraakt wordt.
 
Daarna ging Nico door naar de Geofence background task. Hier was wat overlap met de demo van Joost.
 
Dit gaat met een LocationTrigger ipv. een systemtrigger. En daarna werd een Fence toegevoegd aan de geofence monitor toegevoegd. En hierna werd Location aan het manifest toegevoegd.
 
Ook Nico gaf net als Joost een toast af. Nico gaf aan dat de geofence demo niet echt lekker werkt op Windows 10. Ging het lukken? Niet direct 😦 We mochten gelukkig geloven dat het wel werkt 🙂
 
En vervolgens ging Nico demonstreren hoe we op notificaties konden reageren in een background task. Hiervoor is een extra task nodig met Pushnotification trigger. (vergeet niet de app al te registreren in de store en de code een associatie met de code app te geven. De app hoeft dus nog niet daadwerkelijk gepubliceerd te zijn.)
 
Helaas hadden we last van de demogoden voor de demo (of een irritante proxy?). Iedereen in het publiek kon pushnotificaties genereren via een azure cloud websitepagina. Ook hier mochte we geloven… De zaal zat blijkbaar blijkbaar vol met ‘beliebers’ 🙂
 
Overigens zijn er wat beperkingen aan de aantal keren dat de backgroundtask afgevuurd wordt. Het OS maakt het uit afhankelijk van hoeveelheid geheugen op het toestel, type background task, battery saver, etc.
 
Bij 8.1 kan het gedrag van de battery saver per app overruled worden.
 
Al met al was de presentatie erg interessant, helaas gingen een aantal demo’s minder vloeiend.
 
Lunch!
 
Fons Sonnemans – Twelve ways to make your apps suck less
 
In deze sessie leert Fons Sonnemans je aan de hand van 12 uiteenlopende onderwerpen je apps beter te maken. Hierin komen technische onderwerpen, design en marketing aan bod. Een sessie vol met do’s en dont’s voor je eigen apps.
 
Zo, de smakelijke lunch is verslonden. Op naar de volgende presentatie.
 
Fons heeft 1.8 miljoen downloads uit de Windows 8 store ondanks dat deze nog maar kort actief is. Dat uitgezet tegen 750.000 downloads na vier jaar en 25 apps in de Windows Phone store. Fons deelt met ons ervaring en tips. Hier een bloemlezing:
 
– Schrijf vanaf nu universal apps. Schrijf Windows 8 apps en breng het ook voor Windows Phone uit. Schrijf met Windows 10 in gedachte.
– Universal apps hebben ‘last’ van de fontsize uit de ease of access. Maar tekst past wellicht de knoppen . Pas dan opelementen de TextScaleFactorEnabled = False toe. Niet zo aardig maar wellicht wel handig. Gebruik met mate dus
– Ga naar Design.Windows.com . Lees dit eens door. Gebruik de guidelines. Design voordat je ontwikkelt. Wat is je visie? Waar blinkt je app in uit? Denk aan de unique selling point. Er is ook gallery met voorbeelden die er mooi uit ziet.
– De tegel van je app is het meest belangrijke 🙂 Het is je eye-catcher, je uithangbord. Pak de goede formaten en scale netjes. Op phone wordt het voor jou gescaled, handig. Gebruik een goede vector tool zoals Microsoft Expression Design (gratis van MSFT). Genereer vanuit dit programma slices met alle gewenste formaten en zelfs de transpartante tile. De tool maakt dan de bestandjes aan via de export.
– Creeer je eigen custom thema’s. Volg niet die van de gebruiker met zijn kleur. Want we willen een eigen identiteit. Dat is heel eenvoudig voor de eigen identiteit. Even doen is even weten. Gebruik ThemeManager van Dave Smits (is iets minder, moet beter) of hack de xaml files. Bij Windows Phone moet je enkele keren SystemColorControlAcetColor overrulen (want voor iedere thema wat je wilt overrulen). Bij Big Windows moet je veeeel meer doen. Of gebruik Hammer.Pants (Gedemonstreerd).
– Maak je app mobiel. Gebruik de juiste HttpClient, de Windows.Web.Http variant. Deze is veel beter dan de vorige variant.
– Zorg er voor dat je app ook bij een gebrekkig netwerk nog steeds werkt. Gebruik json, en alleen xml indien echt nodig. Test je internetconnectie type en pas je communicatie daar op aan.
– Gebruik datasense: zit je op internet? Zit je op wireless lan? Kost dat geld? Zit ip op 3g/4g? zijn daar geen kosten op? Of wel? En benaderen we of hebben we de kostenlimiet benaderen? (kijk hiervoor naar de WIN-B326 sessie van TechEd)
– Krijg veel en goede reviews. Smeek! Laat klachten gemaild worden? Laat je review dan bijwerken. Op Phone kan je ook een response geven op de review (geen idee hoe het werkt. Er werd geroepen dat het wellicht ook maar in een paar landen werkt).
– Gebruik JPG voor grote foto’s. Gebruik PNG voor perfecte kwaliteit. Schaal ook. Maar vectors werken altijd via de Path. Fons demonstreerde ook het gebruik van FontIcons Doe dit in Blend icm. Fontastic.me (gratis, even registreren).
– Grids en listviews moeten performen: Kijk naar het filmpje op vimeo van Kevin Dockx: Windows 8.1 apps. Given to Fly.
– Gebruik resource files voor verschillende talen. Met Engels alleen raak je maar 25 procent van je publiek in de wereld. Test via het schuiven in de language preferences op je ontwikkel PC. Of gebruik de vertaal tool van Microsoft. Die gebruikt Bing Translate
– Gebruik Blend
– Gebruik MVVM
– Windows apps worden niet meer op inhoud afgekeurd bij de keuring voor de store. Er wordt alleen achteraf ingegrepen bij klachten.
– Cache de eerste pagina! Kom steeds terug van een detail scherm op de plek waar je vertrok. Bij Phone werkt dit. Bij Windows niet: Gebruik de Cache mode regel ook in Windows. En de pagina cache size kan vergroot worden. Let op nevengedrag
 
Kortom, Fons heeft enkele zeer handige tips doorgegeven. Dankjewel. Volg zijn blog want enkele van deze tips zijn of worden daar in detail uitgelegd.
 
Diederik Krols – Cortona / speech integratie
 
In deze sessie toont Diederik Krols hoe je je Windows Phone 8.1 app kan opstarten en aansturen via de nieuwe Cortana services. Verder wordt dieper ingegaan op spraakherkenning (speech-to-text) en spraaksynthese (text-to-speech) in Windows Phone apps (zowel Silverlight als Universal).
 
In de pauze heb ik weer even een Surface 3 Pro vastgehouden. Wat een fantastische machine!
 
De laatste sessie voor vandaag is die van Diederik over Cortana en je app starten met Cortana.
 
Cortana levert spraakherkenning in Windows Phone en met Windows 10 ook op pc’s en tablets. Standaard wordt nu nog alleen Engels ondersteunen en zijn het vooral de standaard apps (alarms etc.) die het ondersteunen.  Je kunt ook afspraken maken en wat denk je van herinneringen? En Cortana doet aan geofencing.
 
Vraag maar eens “What can I say?” of “What can you do?”
 
Met de duurdere telefoons staat Cortana ook passief te luisteren op “Hey Cortana” zodat deze altijd staat te luisteren/wachten (op dat zinnetje).
 
Cortana werkt zowel in Windows Phone Silverlight als in Universal apps. Windows 8.1 lust het niet.
 
Diederik demonstreerde gelijk al dat hij zijn eigen app via Cortana kan opstarten. En binnen de app liet hij via de stem van Cortana een voorbeeld tekst voorlezen. Ook bleek er andere (mannelijke) stem te zijn.
 
Voor Cortana willen we dus:
 
– Maak voice command definities
– Registreer jouw vcd’s bij start van de app
– Reageer bij de app start op doorverwijzingen vanuit Cortana
 
Een VCD valt uiteen in CommandSets met een combinatie van commandprefix, commands etc. Dit al werkt zonder Wifi/data contract.
 
Het valt me op dat je bij de definities vooral in voorbeeld zinnen denkt en dat ik het bijbehorende gedrag moet opgeven. Dit is dus lekker fuzzy en minder ‘wiskundig’ met zinsopbouw.
 
De Phrase Topics zijn nieuw maar werken echt fuzzy, over het internet. Diederik heeft het niet gebruikt omdat het onduidelijk was of er vandaag Wifi zou zijn.
 
Tip: gebruik de taal van de commandset (= engels voor de grootste kans dat Cortana er goed mee om kan gaan)
 
De registratie is redelijk eenvoudig. De commandset moet aan Cortana bekend gemaakt worden. De code is lichtelijk anders tussen de twee verschillende project soorten.
 
Ook reageren gaat soms iets anders. In Windows Phone Silverlight moet dit in de Main pagina. Daar test je of je via Cortana opgestart bent. En als dit zo is, dan reageer je hier op.
 
Bij Universal apps wordt dit in de App.Xaml opgelost en naar de juiste pagina genavigeerd.
 
Je kunt testen of de opdracht een Voice command is. En als dit zo is, kun je de naam van het command opvragen. En daarna kun je weer onderdelen  van dat command uitvragen. Bij de doorverwijzen naar de juiste pagina geef jij dan ook de context van de aanroep door. Geef bij voorkeur niet direct de Cortana opmerking door.
 
Je moet ook zelf testen of de app discreet in ‘silent’ mode gestart wordt. Dan moet je jouw app ook niet geluid gaan maken. Dit is dus de ‘text mode’.
 
Dit waren de commando’s. Natuurlijk taal kan dus ook ondersteund worden.
 
Je kunt ook speach synthese toepassen om teksten uit te spreken. Ook hier zijn er enkele verschillen tussen de twee project types.
 
En er is dus binnen de app ook een SpeechRecongnition mogelijkheid. Dit kan uit losse worden bestaan. Maar er is ook mogelijkheid om grammatica op te stellen (volgens een zeer uitgebreide standaard definitie). Helaas lijkt dit veel minder fuzzy te zijn dan wat Cortana gebruikt. Persoonlijk komt me dit bekend voor, ik meen dit al vaker gezien te hebben met spraakherkenning in Windows (al vanaf versie Xp of zo?)
 
Deze presentatie van Diederik was uiteindelijk dus erg interessant. Dit is een mooie ear-catcher voor je gebruikers.
 
Deze presentatie van Diederik was erg interessant.
 
Dat waren de presentaties die ik gevolgd heb. Het was weer een aangenaam en nuttig dagje om mijn Windows (Phone) kennis bij te spijkeren. Een enorme dankjewel dus voor de organisatie en sprekers. Op naar de borrel!
 
 

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

 

 

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.