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.

Advertenties