Gezien op dag 2 Techdays 2013

Ook voor vandaag staan er weer een aantal interessante sessies gepland, een overzicht is te vinden op de TechDays website. Ook zal vandaag weer volop herrie gemaakt worden op twitter via hash tag #techdaysnl.

De eerste sessie voor vandaag is die van Jesus Rodriguez over het combineren van NodeJS en Azure. Hij noemt zich trouwens Hackerpreneur 🙂

NodeJS is een platform gebaseerd op de Chrome Javascript engine en die draait dus op de server. Hier wordt dus Javascript aan de server kant gedraaid en is in korte tijd zeer populair geworden. Het is beschikbaar als open source onder de MIT licentie.

Een webserver die op naar een poort luistert, is slechts 3 regels Javascript code. Hier zit wel een fluent notatie achter maar dat is natuurlijk best een goed voorbeeld van de kracht van NodeJS.

Het is daarbij Single Threaded en Event Driven. dit zijn de ingrediënten voor een schaalbare oplossing. De architectuur van de run-time is zeer eenvoudig, zeker vergeleken met IIS. Maar het is dan ook vooral interessant voor CRUD operaties en niet echt voor actie met veel CPU acties zoals video-encoding.

Het kan zelfstandig gehost worden met een node.exe maar er is ook een IIS extensie beschikbaar. De huidige Windows versie verscheelt weinig met de Linux implementatie.

IIS Node draait binnen IIS en is daardoor schaalbaar over meerdere processoren. In een web.config moet dus de iisnode handler toegevoegd worden als module in de web.config. Daarmee gaat je website reageren op node.js.

NodeJS kan ook binnen Azure draaien. Het kan zowel als web role (IISNode) als worker role (node.exe) toegepast worden. Er is powershell ondersteuning en er is een Azure SDK speciaal voor NodeJS.

Daarna kwam een demo rond het deployen naar Azure via Git? Ik zie zelf het verband niet echt met het onderwerp van de presentatie…

Je moet wel opletten als je lokaal test en daarna deployed naar Azure. Lokaal gebruik je een hard gecodeerde poort, bv. 1111. Maar het script moet op Azure aan de host environment vragen wat de poort is die toegewezen wordt.

Hij liet ook een tooltje (npm) zien waarmee lokaal met NodeJS getest kon worden terwijl dit met Azure kennis rekening gehouden wordt. Met tooling kan dan bv. een website op afstand aangemaakt worden met NodeJS logica er in vanaf je eigen dosprompt. De powershell hulp doet iets vergelijkbaars, kies je eigen wapens dus.

NPM ondersteunt ook andere leuke toollie zoals Express, socket.io, Jade, redis, coffee-script en async communicatie.

Een andere demo liet het uploaden van een simpel chat programmaatje zien van minder dan vijftig regels javascript code. Wederom werd deze naar azure gedeployed maar werd nu eerst de site vanaf de dosprompt in Azure aangemaakt en daarna de code via git er bij Azure ingeschoven?

NodeJS kan ook binnen Azure weer de Azure servicebus aanroepen. Hiermee kan de servicebus heel lichtgewicht ontsloten worden. Ook Topics werd gedemonstreerd. Het is verder niet gedemonstreerd maar dit geldt ook voor andere Azure services via andere te installeren packages.

Als laatste werd Windows Azure Mobile Services aangehaald. Deze zijn ook op NodeJS gebaseerd. Microsoft ondersteunt dit dus echt met ‘eat your own dogfood’.

Hierna ben ik naar de sessie van Paula JanuszKiewicz. Zij houdt zich bezig met penetratie testen. De sessie gaat over Malware 2.0: The case of the most dangerous cyberspies.

DSC02578

 

De scope van de sessie is vooral om de mogelijkheden te bekijken van wat malware echt kan uitrichten. Waar kan deze bij? Hoe verbergen zij zich? Hoe wordt het geïnstalleerd en start het zichzelf

Wil je meer weten over de presentatie inhoudelijk, kijk dan op haar website.

De sessie gebruikt Stuxnet als kapstok. Deze malware was gesigned met valide certificaten en probeerde in een bepaald land centrifuges bij uranium verrijking kapot te maken… Dit is niet bepaald een grap zoals alle puntjes met pacman op te eten.

Paula houdt een perfect verhaal op hoe Stuxnet zich heeft kunnen verspreiden en hoe het gestart werd.

Vervolgens werd ons een zero day getoond die gisteren gevonden is. Het draaide rond het laden van dlls die niet gesigned zijn. Als je dit combineert met password testen op de juiste vorm (kleine letters, hoofdletters, etc.) dan heb je een hack 🙂

Er volgen nog een paar interessante hacks. Wat opvalt, is dat het eigenlijk heel eenvoudig is om vreselijke code uit te voeren. De zaal was erg stil en onder de indruk. En wat nog meer opvalt dat een hacker weinig beperkt wordt om op verschillende gebieden zijn code uit te voeren.

De pauze is geweest. Op naar de sessies van Roy Janssen over Mobile Services voor Windows (Phone) 8 applicaties.

Eerst nog wat reclame.

Azure Mobile Services bestaat uit:
– autorisatie (bv. vanuit Facebook)
– Push notificaties (nu wel makkelijk)
– Data access
– etc.

En het is door Microsoft helemaal gebouwd met NodeJS. En het is ook beschikbaar voor Android en IOS (naast de Windows stack). Mooi toch? Microsoft heeft er gewoon templates voor staan.

Het is beschikbaar voor MSDN gebruikers voor een jaar lang. Maak dus ook een betaalde versie waarmee je je Azure kosten kunt gaan dekken.

De demo toont hoe je data centraal laat aanmaken. Wat heb je nodig om dit te maken? Ten eerste moet je de SDK downloaden. En je krijgt al direct een SqlAzure database. En je mag ik je app.xaml.cs een MobileServiceClient instance refereren. Aanroepen moet met Async await opgelost worden.

App store applicaties moeten ook met Azure Mobile Services geassocieerd worden. Dit om te voorkomen dat 3e partijen jouw services kunnen consumeren.

Er is ook getoond hoe een Mobile Services SqlAzure tabel aangemaakt moeten worden. Interessant is ook dat je kunt aangeven onder welke authenticatie omstandigheden je CRUD acties mag doen.

En je hoeft geen kolommen te definiëren. Het model entiteit met dezelfde naam in de code genereert via Json overdracht de kolommen op Azure.

De Crud acties op de client moet dus allemaal awaitable geïmplementeerd worden.

Roy heeft portable class libraries toegepast om zijn demo geschikt te maken voor zowel Windows 8 als voor Phone 8. Dit betekent dat je dus entiteiten en andere gezamenlijke klassen eenmalig kunt schrijven en dus later kunt delen. Er zijn dus geen dubbele code oplossingen gezocht te worden.

Push notification was voor Windows Mobile best lastig. Er moest zelf een notificatie server gebouwd worden. Maar Mobile Services biedt gewoon de mogelijkheid om een notificatie channel aan te laten maken. Zie het als een hele grote link. Je await gewoon een channel aanvraag. Op Azure zie je dan een Push channel tabel aangemaakt worden. En hier maak je een ViewModel voor. Maar let op! Voorkom dat je hetzelfde kanaal niet meerdere keren aanmaakt. Dit doe je door de standaard scripts op Azure kant inregelen. Dit kan ook weer uitgebreid worden met het weggooien van channels die niet meer gebruikt worden (onthoud datum laatste succesvolle access).

En aan de Azure kant kun je bij CRUD acties extra code laten uitvoeren (zie het als een trigger). Hierbij kun je dus ook notificaties laten genereren, aan de server kant voor alle cliënts. Maak aan de cliënt kant wel in je manifest gewag van de notificaties toestemming wens. Houd er dus ook in je code rekening mee dat gebruikers geen notificaties willen.

Er is weer een Catch. De notificatie is voor WP8 net iets anders als in Win8 opgelost. Je moet dus overal in je code en serverside scripts (het is tenslotte NodeJS) je code voorbereiden op die twee situaties, bv. met een IF THEN ELSE.

Bigger, Faster, Stronger. Dit is de titel van Mads Kristensen over Asp.Net optimalisatie. Gelukkig wordt dit steeds makkelijker door tooling. En optimalisatie is steeds belangrijker. Want een langzamere site betekent minder bezoekers, minder omzet, etc.

Mads demonstreert met optimalisatie test sites een site maar dan een hele oude versie :-). Ter leering ende vermaek. En die gaan we optimaliseren.

En waarom Asp.Net omdat optimalisatie van de front-end veel interessanter is. De backend maakt maar 13 procent van de communicatietijd uit.

Asp.Net 4.5 maakt je site al minimaal dertig procent sneller als je deze alleen al installeert op de server!

De Asp.Net Performance website die getest wordt, heeft een hele lijst aan tips staan. YSlow is een browser plugin die ook veel vertelt over trage sites. En PageSpeed van Google is ook erg handig om je site te fixen.

Een score van 100% is overkill maar meer dan 90% is wel een goede start 🙂

Gzippen van teksten van je pagina’s is al een makkelijke configuratie fix. Alles wordt gecomprimeerd over het lijntje gegooid. Plaatjes zippen geeft geen winst want die zijn vaak al gecomprimeerd… Win2008R2 doet dit al automatisch overigens.

Vervolgens wordt browser caching / expires headers aangedragen. Ook dit is op de server in te regelen. Maar als een browser MOET expiren, dan kan je dit forceren door een andere fysieke paginanaam te gebruiken of een ‘fingerprint’ mee te sturen. De cliënt stuurt dan een dynamische aanvraag naar dezelfde pagina met een timestamp van de laatst aanvraag.

En vervolgens heeft Mads Bundling laten zien. Alle javascript en/of css wordt dan samengevoegd in 1 bestand en gecomprimeerd dus dat scheelt ook. Bundling kan in MVC4 toegepast worden maar het zit ook in de WebEssentials. Let wel op de volgorde waarin gebundeld moet worden want er is een volgordelijkheid in referentie (jQuery wilt graag vooraan staan). En denk ook aan de minified versies om over de lijn sturen.

Je cliënt script kan/moet overigens gewoon achteraan in de pagina zetten en niet in de head (dat maakt je pagina alleen maar trager). Maar als dit niet kan, bv. door partial views, gebruik dan de defer optie (en of async attribuut). Dit werkt bij de nieuwere websites meestal veel beter. Goed testen!

CSS moet juist wel in de head van de pagina 🙂 HTML5 laat het overal toe maar dit is vanuit performance perspectief vreemd.

Minification van eigen code kan met eigen bundles. Maar het kan ook met Web Essentials. Onduidelijk, ik zag niet goed of dit ook vanuit een web-project automatisch kan zoals met afgeleide, geneste bestanden in je project

Plaatjes moet je zo groot aanleveren als dat je ze wilt aanleveren op de site. Denk ook aan het verwijderen van exif informatie. Hier zijn websites voor. En er is zelfs een VS2012 extension die dit doet. dit kan tientallen procenten schelen.

En als je de plaatjes ook nog samenvoegt tot 1 plaatje (een sprite) win je ook eea.. En Plaatjes kunnen ook geminified worden 🙂 Nog leuker is de byte array van de plaatjes gewoon in de plaatjes plaatsen. Web essentials heeft hier een optie voor (optie op de HTML). Plaats dit in een class als je meerdere keren hetzelfde plaatje toepast. Er is ook nog een Nuget package die dit doet met “?embed” achter de naam van het plaatje. En hoe er rekening mee dat je een fix voor IE 6 en IE7 moet toepassen als je deze ook moet ondersteunen. En als je de CSS ook gzipped, dan heeft dit maar voor enkele procenten impact op de grootte.

Als laatste kun je de html minifyen. Dit wordt afgeraden (er zijn soms ook belangrijke spaties, denk bv. aan PRE, en er zijn nog geen foutvrije parsers van HTML) maar het is wel cool. Dus html regex parse code hier.

En uiteindelijk kan je ook nog voor HTML5 offline caching kiezen. De pagina worden dan maar 1 keer opgehaald en voor een bepaalde tijd lokaal gehouden. Mooi toch? Directe beschikbaarheid op de cliënt zonder web-verkeer.

Er zullen vast wel mee optimalisaties zijn, maar die zijn niet getoond.

Laurent Bugnion geeft voor mij (en nog een klein groepje survivors) de laatste sessie van de TechDays. Waarom deze sessie? Vorig jaar heb ik mogen genieten van zijn MVVMLight toolkit. Daarom, giving back.

En omdat het over de design language van MS gaat. Dus:

– Pride in craftsmanship
– fast and fluid
– authentically digital
– do more with less
– win as one

dit slaat allemaal op Metro, de grafische taal die uitgestraald wordt met Win8, Phone7/8, Xbox, etc.

Grappig: ‘underline’ wordt afgeraden. Dit wordt nu herkend als link en is dus verwarrend.

Daarna geeft Laurent een aardige uiteenzetting over de combinatie van tekst en beweging. O.a. de Pulp Fiction intro is hierbij aangehaald.

Ook wordt Skueomorfism aangehaald. Dit betekent dat het echte leven nagetekend wordt. Zo heeft de boeken-app van Apple boekenplanken in een kast. Dit heeft geen toegevoegde waarde voor de gebruiker. Microsoft vraagt designers dit weg te laten.

Laurent haalt ook de IMDB app voor Phone 8 aan. Overigens had hij daar de xap van. Zit hij in het ontwikkelteam?

Hij heeft ook aan de Nick app gewerkt. Grappig bovenaan het scherm zit een klodder slijm. Dit nodigt kinderen aan te swipen op die plek en dan komt een hulp balk tevoorschijn. dit zet er altijd al dus dit lijkt op Skeuomorfism. Maar hij vergelijkt het meer met de Windows knop op een Windows Phone. als die gelocked is, en je drukt op die knop dan krijg je een kleine swipe animatie. dus het verraadt een mogelijke gesture.

DSC02582

 

En hiermee zijn de TechDays 2013 afgesloten. Ik kan terugkijken op twee dagen waarin ik zeer intensief bezig ben geweest met nieuwe technologieën en nieuwe ideeën voor de toekomst heb opgedaan.

Op korte termijn ga ik met Azure Mobile Services aan de gang. Ook al omdat dit via een MSDN account is uit te proberen (net als alle andere Azure diensten overigens).

Thuis ga ik nu snel Phone 7 apps in elkaar zetten. Helaas kan mijn laptopje geen volledige hardware-virtualisatie aan blijkt de Phone 8 emulator niet te kunnen draaien. En bij gebrek aan een echt device valt er dus niks te testen en kan ik ook geen screenshots aanmaken die verplicht zijn voor de shop.

(Dit is een blog is life bijgewerkt. Sorry voor de typos die ik er niet uit heb kunnen halen)

Advertenties

Gezien op dag 1 Techdays 2013

Net als voorgaande jaren vinden de TechDays ook dit jaar weer plaats in Den Haag. Dit jaar zijn de DevDays opgegaan in de TechDays. Zal het dus meer een IT Pro feestje worden?

De Geek Night is in ieder geval al vervallen en de keynote heeft een veel minder prominente plaats ingenomen in de agenda.

De agenda voor deze dag is terug te vinden op de TechDays website . En op twitter zal er veel gebuzzed woeden met hash tag #techdaysnl. Ik zal deze twee dagen een samenvatting geven van mijn persoonlijke selectie uit de vele interessante sessies en wellicht nog een andere bijkomstigheden.

vergeven is als voor 15 mei 3 tot 5 apps in de store geplaatst worden. (meer info op wp7.nl)

Bij de stands zijn veel Surface RTs te winnen. Zijn dit de enige die de afgelopen tijd verkocht zijn? 🙂

Het is de 15e editie van de Techdays. Volgens Microsoft wordt het nog steeds beter, dus dat belooft wat! Het thema is in ieder geval Build what’s next, now! Hierbij zijn de trends: devices, breedband en (big) data.

Ook de cloud wordt opnieuw aangehaald. Persoonlijk vind ik het goed dat dit die aandacht krijgt. Cloud, Azure, is inmiddels een factor die echt gaat leven bij klanten.

Maar zoals gezegd, er is dus een geen echte keynote. Wel gaf David Chappell iets wat er op leek. Wel aardig dat Microsoft een onafhankelijke spreker heeft uitgenodigd.

Het onderwerp is “Building Modern Applications” vanuit een Microsoft perspectief. David ziet een verschuiving van de traditionele ALM en CS oplossingen naar:
– Andere devices
– Andere data centers (cloud)
– Continuous delivery en DevOps

Cliënts veranderen. Er zijn Tablets en Phones bijgekomen. En deze kunnen als PC begrepen worden. We leven dus in het PC+ tijdperk. Waarom, omdat Microsoft op alle platformen hetzelfde OS wilt draaien, namelijk Windows 8 (Phone 8 zal uiteindelijk convergeren naar Windows 8).

DSC02570

Er moet wel een verschil gemaakt worden tussen traditionele Windows applicaties en Store apps. Maar in Windows 8 worden deze als hetzelfde beschouwd door gebruik van app containers met manifests, contracts, etc.

DSC02569

En elke Win8 app heeft 100kb cloud storage “for free” omdat gebruikers meerdere devices kan gebruiken met de gezamenlijke cloud storage.

David heeft een leuk staatje met de verschillen en overeenkomsten tussen de twee soorten applicaties. Ik zal hiervan binnenkort een foto toevoegen 😦

Wat betreft de data centers, ziet David de aanwezigheid van virtualisatie van VMs. En een eigen datacenter is niks anders dan een private cloud. Uiteindelijk is het allemaal IaaS.

Grappig, David krijgt bij iedere Azure presentatie als eerste de vraag of de applicaties wel veilig zijn, is de cloud te vertrouwen? En het is gewoon een vertrouwenskwestie. We moeten gewoon ons datacenter weten te vertrouwen. In hoeverre vertrouw je de maandelijkse Windows Update op patch tuesday?

Azure is vooral interessant geworden door de IIS website mogelijkheden. Voorheen hadden we voornamelijk de mogelijkheid om met de worker roles te prutsen. Er is dus een verschuiving van PaaS naar IaaS ingetreden.

En met de Mobile Services is er weer een stap gemaakt. Dit kan met de store apps en IOS geconsumeerd worden. Het is gebaseerd op een security laag, notificaties, data-access en javascript code. En je hoeft alleen maar clock cycles te betalen.

Als laatste werd ALM aangeraakt. Dit betekent Governance En SDLC En Operations. Een applicatie maakt dus heel wat mee gedurende geboorte, leven en dood.

Ook Agile, scrum, etc. kwam ter sprake. Aangezien niemand reageerde op de vraag of men nog waterval gebruikte, was sheet met uitleg van een Sprint wat overbodig 🙂

Maar continuous delivery is nu helemaal hot. Het moet gemakkelijk worden, geautomatiseerd zijn, om updates uit te rollen. VS2012, TFS2012 en System Center 2012 kan dit leveren. Laat Developers en Operation samenwerking. Het is dus cultuur gecombineerd met tooling. We moeten dus voorbij het punt waar de twee groepen naar elkaar zitten te wijzen en uitkomen daar waar we beginnen met samenwerken.

En het is eigenlijk eenvoudig om te veranderen 🙂 Begin gewoon!

Na de keynote ben ik bezig geweest om een Windows Phone app uit te rollen naar de Store via mijn nieuwe app store account. Los van het feit dat de iconen afgekeurd werden, ben ik bijna klaar. De walk-trough hands on was prima maar de emulators waren zeer traag. Ik liep dus razend uit de tijd. Gelukkig kon de pause dit compenseren. wel is duidelijk geworden dan een app uitrollen erg eenvoudig is. Maar vergewis je er van dat de app een grote kans van slagen heeft om in de store te belanden. Want de acceptatie kan tot vijf werkdagen duren en vijf keer een misser kost je een maand. Microsoft wilt dolgraag meer ontwikkelaars duidelijk maken hoe uitgerold moet worden en dit is een goede actie.

DSC02571

Vervolgens ben ik naar de sessie geweest van Roy Cornelissen om SignalR te combineren met mobiele devices.

Hij combineert een Azure servicebus met een SignalR Hub om naar devices data te pushen. Waar Http en webpagina’s vooral voor het ophalen van data zijn gemaakt, dus de browser is de vragende kant, kan SignalR actief informatie naar de browser versturen, real-time.

Voorheen zou een browser elke x seconden bekijken of er informatie voor hem klaar stond. Maar dit betekent het daadwerkelijk versturen van data en geeft enorme load op servers.

Push kan ook met IRC, SMTP, WebSockets en pub/sub. WebSockets is nog steeds een draft en kan verschillen in implementatie. Dit geldt ook voor pub/sub. En de laatste is ook nog eens one-way.

Andere optie is bv. long polling. Dit gebruikte ik al in 1998 🙂

SignalR is een abstractie rond één van deze technieken. Het is een pet project van een paar Microsoft ontwikkelaars. En Microsoft heeft dit omarmd.

Er zijn een aantal lagen van abstractie: welk protocol wil je ondersteunen? SignalR onderhandelt met de server. En je moet een persistent connection opzetten. en daarboven op zet je een ‘hub’.

Het is een messagebus voor verschillende OSen: Windows, IOS, Android, etc. Het kan zelfs buiten een website gehost worden in een executable of windows service.

Je kunt dus over de persistent connectie objecten versturen en die moet je evt. zelf serialiseren naar Json. Op de connectie heb je dan events als Connected, Recieved en Disconnected. Interessant is om te zien dat aan iedere client een guid uitgedeeld wordt. Daar kun je leuke dingetjes mee doen (groepjes maken, etc.).

SignalR op een webserver toepassen is redelijk triviaal (een Nuget package laden, class overerven, code schrijven en routing regeltje toevoegen).

Op de cliënt rust SignalR op jQuery en een aparte bibliotheek. En dat geeft een Java object die een send methode implementeert en een callback voor de push implementeert.

Klaar. De eerste demo voor een broadcast was in vijf minuten klaar.

Een hub is een verbijzondering die ook de mogelijkheid geeft om los van de boodschap ook extra state meestuurt tussen cliënt en server. Dit gaat dan alleen naar de leden van de hub. Het lijkt dus op een chatroom 🙂 Er moet wel een extra hubs script ge-include worden op de cliënt.

Leuk is het feit dat SignalR rekening houdt met de verschillende naming conventions. Irritant was wel dat Client en Server beiden dezelfde jQuery versies moeten voeren 😦

(we will be right back after this break)

Het was ook leuk dat een in C# geschreven cliënt via Xamarin naar IOS werd gecompileerd en dus native geport was. Iedere C# ontwikkelaar is dus ook een IOS ontwikkelaar geworden 🙂

Wel moet je een backplane zoals Redis of een service bus toepast over je webfarm servers. Hiermee voorkom je dat berichten, geroute door een loadbalancer naar een bepaalde server, niet bij andere servers terecht kan komen.

Na de pause met berliner bollen ben ik naar de sessie over Azure Cache gegaan, gegeven door Jacqueline van der Horst.

Na een introductie over caching (denk er vooral al over na, het blijft historische data) ging ze in op Microsoft oplossingen in Azure:
– AppFabric caching; on premise caching 😦
– Role based caching
– Shared caching

RB caching kent twee smaken: co-located (gebruik een deel van het geheugen van de role voor caching) en dedicated (100% caching in roles). Dit leeft dus binnen webroles als in VMs. Shared caching werkt niet op de extra small machines van Azure. Dit komt omdat hierbij geheugen gedeeld wordt.

Microsoft heeft een sheet/tabel beschikbaar om uit te rekenen welke varianten, of combinaties daarvan, nodig hebt. Role based caching kost dus extra geld voor de extra rollen! Microsoft ondersteund ook High availability maar raad dan wel minimaal 3 maar liever 4 instances (voor load balancing). Role caching kent ook locking, interessant?

Data in de cache moet wel serializable zijn met bestaande serializers of zelfgemaakte.

Role caching kent ook regions, een soort namespacing voor gecachede objecten. Ook kunnen objecten getagged worden om snellere zoekopdrachten te ondersteunen.

Caching kent ook expiration en eviction. Dit staat voor geplande of moedwillige verwijdering van data uit de cache via regels of als een instance volloopt.

Role Caching kent ook concurrency. Het is mogelijk om met de data een versie op te geven. Een nieuwere versie wordt dan niet met een oudere overschreven (optimistic danwel pessimistic).

En een Role cache kan ook notification verzorgen tov. shared cache. Deze is wel listig. Sommige notificaties kunnen niet aangekomen zijn. Maar het schijnt dat je kunt testen or er ‘errors’ zijn.

Er was een aardige sheet over de verschillen en overeenkomsten tussen de verschillende cache versies.

DSC02572

Azure websites kennen alleen Shared Cache!

It’s demo time.

En toen was de sessie klaar. Nog vragen?

Daarna ben ik naar de sessie van Rob Miles over Gadgets Everywhere gegaan. Waarom? Vorm over inhoud. Er valt dus niks te bloggen, dit moet je zien. Sorry

🙂

Even later…

Ik ben ook nog nar de Git sessie naar de Europe zaal geweest. Helaas zat ik helemaal achteraan en kon het maar slecht zien. Ik moet naar een gemiddelde tv kijken op 10+ meter afstand met te kleine letters. Iemand eer verrekijker? Is daar een app voor?

DSC02573

Dit maakt mijn blog voor vandaag compleet. Ik hoor om mij heen dat het niveau wisselend ervaren wordt. Ik vind het zelf wel meevallen. Ik denk dat we de afgelopen jaren verwend zijn met grote aankondiging, juist op dit soort evenementen. Maar vandaag de dag hebben continue updates door het jaar heen met de hulp van oa. Nuget en geregeld vs2012 updates. En er was veel te doen rond Win8 en Phone8 maar als je daar niks mee doet…

(Deze blog is live bijgehouden. Sorry voor de typos die ik er niet meer uit heb kunnen halen)