Bijeenkomst: Windows Phone Developer Day 2013

Vandaag, 5 oktober 2013, is er een bijeenkomst genaamd Windows Phone Developer Day georganiseerd door een aantal Windows Phone MVP’s. Dit evenement is een beetje uit de hand gelopen; wat begon als een onderonsje in enkele landen, is uitgelopen tot een waar continentale happening.

Ik zal vandaag live een blog proberen bij te houden. Excuses voor spelfouten etc.

Dit evenement is bij Macaw op Schiphol-rijk georganiseerd. Een eindje rijden dus maar ik heb er zin in op mijn vrije zaterdag.

De agenda is:

09:30 opening (Joost van Schaik + Dennis Vroegop, welkomstwoord)

09:45 sessie Tom Verhoeff (‘3 ways to get started’)

11:00 Fons Sonnemans (‘Designing Windows Phone apps UI using Blend’)

12:15 lunch

12:45 sessie Roy Janssen (Mobile Services in combinatie met Windows (Phone) 8 applicaties)

14:00 sessie Vincent Hoogendoorn (Creating Viewmodels with MvvmQuickCross)

15:15 sessie Mark Monster ( The journey to a podcast app for Windows Phone 8)

16:30 afsluiting met kort sessie van Paul Mols, verloten 920 en 820

17:00 done

Een gevulde agenda dus.

We zijn begonnen. Eerst komt er een welkom en bedankje voor Macaw want die hebben de locatie beschikbaar gesteld. Er zijn vandaag 6 events wereldwijd, in totaal doen 22 landen mee, deze weken.

Wp7.nl en dotNed.nl hebben geholpen en ook Nokia en Microsoft doen lekker mee.

Naast sessies zijn beneden ook mogelijkheden om te knutselen en om samen te overleggen als je ontwikkelen wilt…

Er zijn ook nog wat prijsjes en ieder aanwezige krijgt een jaar gratis publiceren cadeau.

Er zijn ook aanwezigen zonder ontwikkelervaring. Dus eerst worden er een aantal demonstraties gegeven (met oa. open data) en ook ontwikkelen via de app store development website zal getoond worden.

In de eerste demonstratie wordt een koppeling naar het Nationaal Geo Register getoond. De binnenkomende json wordt getoond op het scherm via een kaartje. Het is een uitgewerkte versie van een blog van LocalJoost. Er wordt hierbij een Map component van een Layer met huisjes voorzien. Helaas ging de demo hier te snel, niet duidelijk werd hoe de plaatjes via een coordinaat geplaatst werden. De entiteit achter een adres leek geen lat/lon te bezitten…

Zo werden ook maximum snelheden op wegen via kleurtjes getoond. Er werd een layer met lijntjes getoond.

Zeer interessant. Gelukkig zwerven hier usb sticks met de code rond 😉

De Windows Phone App Studio website demo was ook interessant.

In slechts enkele minuten werd getoon hoe een panorama scherm gevuld werd met een RSS feed (met een detail scherm achter de items) en een YouTube channel. Ook werd een lijst van statische informatie via een CSV bestand ingeladen (die vooraf geexporteerd was).

Naderhand is de code gedemonstreerd die gegenereerd is door de website. Mooi, we kunnen dus zelf de app uitbreiden en het is al helemaal in MVVM stijl opgebouwd (MVVM light toolkit-achtige code) dus zeer herkenbaar. Alleen de datasource injectie is iets waar ikzelf nog eens in moet duiken.

Mooi is te zien dat dit ook Unity gebruikt voor dependency injecten.

Dit was een demo die de aandacht van het publiek kreeg.

Ik vind het wel jammer dat deze solution een andere opzet heeft dan de template die ik normaal gebruik. Hierdoor blijft uitlevering naar WP7.x toestellen achtergeweg, geen idee waarom. De spreker adviseerde ook om volledig voor wp8 te gaan. Ook dit vind ik onterecht. De beschikbare wp7/wp8 template werkt prima en is een goede investering, ook in de toekomst. De WP7.x projecten kunnen zo veel later uitgefaseerd worden.

Laat Microsoft deze twee templates combineren: de injectie van de een en de multi app ondersteuning van de ander!

Tussendoor heb ik een workshop gevolgd en heb ik mijn Windows Store developers account voorzien van de juiste gegevens voor het ontvangen van vergoedingen voor advertenties. Nu kan ik ook mijn gebruikers lastig vallen met reclame danwel het kopen van een reclamevrije versie.

Daarna was de lunch. Een feestmaal en goed voor het netwerken. Een leuke gelegenheid om oude collega’s te ontmoeten.

Vervolgens kregen we een presentatie over het toepassen van Azure Mobile services voor Windows Phone. Dit is een fraaie uitbreiding op Windows Phone apps ontwikkelen. In slechts enkele minuten werd gedemonstreerd hoe data naar een app werd gepushed via het Push Notification model van Azure Mobile Services. Een Pushchannel aanvragen is heel eenvoudig en de vulling van nog niet gelezen berichten is opgelost met een aparte tabel. De inhoud is hierbij ook te veranderen.

Het toepassen van AMS is overigens beperkt tot maximaal vijfhonderd toestellen. Geen idee of dit concurrent is…

Ook het opslaan van data is erg eenvoudig. Je kunt op AMS gewoon losse tabellen definiëren en deze zijn restful beschikbaar over het internet. Dit betekent dus Create, Read, Update en Delete.

Super eenvoudig allemaal. Ik heb alleen geen idee wat dit per maand gaat kosten als je wat load krijgt. Microsoft biedt een trial versie van Azure voor beginnende ontwikkelaars. Diegene met een MSDN account kunnen zelfs maandelijks gratis gebruik maken van Azure (tot wel 150 euro pr maand). Gelukkig heeft Microsoft een limiet ingesteld dat bij overschreiding het account gewoon tijdelijk geblokkeerd raakt. Er gaat niet opeens een teller op je creditcard lopen.

Pushnotificaties zijn erg prettig om je gebruikers gebonden te laten blijven aan je applicatie.

Er is ook getoond hoe de AMS scheduler toegepast kan worden. Denk hierbij aan een stukje code die op gezette tijden op de Server uitgevoerd wordt. Overigens zijn de scripts op de server allemaal in JavaScript geschreven. Want AMS is gebaseerd op NodeJS. Hopelijk kan op die manier ook onderhoud op de server gepleegd worden (denk hierbij aan het verwijderen van verouderde data) want Azure is niet echt gratis indien je dit professioneel wilt toepassen.

In VS2013 is er nu een gave integratie (add connected services) om direct je scripts met intellisense te onderhouden: lezen en schrijven. Voorheen (nu) moet dit nog in de browser onderhouden worden.

De presentatie rond MvvmQuickCross vond ik zelf veelbelovend. De spreker was met Xamarin cross platform bezig. Maar deze presentatie ging dus over de een lichte variant van MvvmCross. Dit is de quick versie om een aantal standaard taken te vereenvoudigen.

MQS maakt het mogelijk om uit MVVM het model en ViewModel als generiek voor meerdere platformen (Windows, IOS, Android) te beschouwen zodat alleen nog de views, navigatie en app nog per platform gedefinieerd moeten worden.

Als ik het zo zie, zou Microsoft eigenlijk dit framework moeten gebruiken als pattern implementatie voor de gegenereerde code uit de Windows App Studio website. Gemiste kans.

Maar tot zo ver lijkt het allemaal op een willekeurige Mvvm bibliotheek.

De generatie van viewmodellen is wel afwijkend opgelost en kan tijd besparen. De binding notificatie wordt namelijk via code snippets toegevoegd. Dit scheelt wat loodgieteren. Ook voor commando’s is een versnelling aanwezig in de code snippets.

Wel is de navigatie tussen views standaard ondersteund door een Inavigator implementatie. Hierbij maak je alle navigatie mogelijkheden beschikbaar op de navigator. En deze worden aangeroepen door de ene view om naar de volgende te gaan. Persoonlijk zou ik dit juist via commands laten lopen. Ik vind dat views geen of zeer beperkt kennis moet hebben over andere views. Uiteindelijk werd ook zoiets ook wel getoond maar je kunt de navigatie beter als een soort workflow beschouwen: afhankelijk van de verzamelde informatie en de view waar je vandaan komt, moet de volgende view vastgesteld worden. De view zelf is niet in de positie om dit te kunnen.

Als laatste Windows Phone presentatie kwam van Mark Monster. Hij is bekend van oa. De fokke en sukke app, buienradar, centralpoint, iBood en de WP unified adrotator.

Hij wilde een Podcast app en heeft hier veel van geleerd.

Podcasts zijn groot en downloaden kost veel tijd. Downloaden kan met periodiek apps en met een een resource intensieve task. Mark vertelt over een heleboel afhankelijkheden waar je rekening mee moet houden.

Ook de linq to xml of xmldocument zijn onhandig in een achtergrondtaak. De XmlReader biedt uitkomst.

Background transfers zijn de uitkomst bij downloaden. Hij pauzeert en schakelt over op Wi-Fi etc. Aantal downloads is wel gelimiteerd (haal ze er op tijd uit). Ook kunnen er maar twee tegelijkertijd lopen. De grootte is gelimiteerd afhankelijk aan stroomgebruik en Wi-Fi aanwezigheid.

Langzame overdracht worden gepauzeerd.

Controleer de Windows Phone Toolkit want die levert ondersteuning voor de queue achter de downloads.

Over audio afspelen was ook wat te vertellen. Gebruik de background audioplayer. Die werkt ook over Bluetooth en pauzeert ook (net als vooruit/achteruit) (F9/F10 in emulator voor de universele bijbehorende afstandsbediening)

Debuggen geeft ander gedrag dan tijdens runtime (niet helemaal duidelijk hoe…) Tijdens attachen van debugger moet je de backgroundaudioplayer.instance.close() uitvoeren. Dit voorkomt nare problemen zoals alles opnieuw opstarten omdat de debugger crasht. Kijk ook naar de lifecycle van dat ding.

Mark heeft ook nog fix voor een FM radio die dwars door de background player wordt gedraaid. Sluit even de radio af. (lumia gdr2 only)

De integratie met de music en video hub kwam ook even in aan bod. Leuk dat je bv. kunt zien wat momenteel gespeeld wordt.

App Analytics kwam ook aan bod. Dit ga ik zeker toepassen. Ik wil wel weten in welke taal ik mijn app gedraaid wordt. Dan kan ik deze gaan vertalen voor mijn markten. Gebruik de GoogleAnalyticsSDK Nuget package.

Laat je eigen app ook controleren op updates. Joost van Schaik heeft hier een zero lines of code behavior voor. Fraai!

En dat was het voor vandaag. Excuses voor de spelfouten.

Uiteindelijk is deze dag weer geslaagd. Ik heb veel indrukken en kennis opgedaan. Ik zie dit graag volgend jaar herhaald worden.