Microsoft Tech Days 2016 Indivirtual verslag

Dit jaar zijn er maar liefst zeven collega’s van Indivirtual naar de Microsoft Tech Days geweest, die dit jaar niet in Den Haag, maar in de Amsterdam RAI, werd gehouden op 4 en 5 oktober. Om niet iedereen een verschillende blogpost te laten maken hebben we ze gevraagd om allemaal van tenminste één sessie/onderwerp van het tweedaagse event verslag te doen. De verslagen zijn in het Nederlands of Engels, afhankelijk van de collega. De volgende onderwerpen zijn gekozen:

Xamarin

by: Patrick Bregman

Dit was mijn tweede Tech Days, en het was wederom erg interessant. Helaas voelde de RAI nogal krap aan zodra er meerdere sessies tegelijk afgelopen waren in één gang, dat ging vorig jaar beter in het World Forum in Den Haag. Desondanks heb ik een hoop leuke, nuttige en interessante sessies kunnen volgen.

Een onderwerp dat mij al enige tijd trekt is Xamarin, wat het mogelijk maakt om in C# te programmeren voor Android, iOS, macOS, tvOS, watchOS, Windows Phone en UWP. Dit alles kan op een manier waarbij je kan kiezen of je een aparte UI wilt per platform. Voor ons is de meest interessante versie Xamarin.Forms, welke zorgt dat je maar één keer de UI hoeft te definiëren en deze word dan door Xamarin.Forms on-the-fly omgezet naar een native UI.

Het mooiste van Xamarin is dat je vanaf zowel een Windows PC als een macOS machine kunt werken. Op Windows werkt alles vanuit Visual Studio en kun je zonder meer werken aan Windows en Android projecten. Wil je iets voor Apple devices doen dan heb je een macOS apparaat ergens op het netwerk nodig. Deze word gebruikt voor het compileren van de code. Als je met Xamarin Studio op macOS werkt dan kun je aan Android, iOS, watchOS, tvOS en macOS projecten werken, maar niet aan Windows of UWP projecten.

Xamarin trekt mij al enige tijd omdat we enkele mobiele applicaties hebben welke ondertussen hun leeftijd wel laten zien. Een van de applicaties is bijvoorbeeld gebouwd ten tijde van Android 1.6 en word nog steeds in leven gehouden, maar werkt met Android 6.0 helaas niet meer samen. Dat gaat dus een mooi project worden om eens wat dieper in Xamarin te duiken.

Progressive Web Apps

by: Sujen Kandasamy

Een van de nieuwe buzz woorden zijn “Progressive Web Apps”. Op de Microsoft Tech Days 2016 werd meer duidelijkheid gegeven over de nieuwe mogelijkheden van een Progressive Web App (PWA) met de introductie van Service Workers.

Een Service Worker is een asynchroon script die antwoord geeft op events die afgevuurd worden. Het draait op de achtergrond en biedt features aan die normaal gesproken alleen bekend zijn bij een native mobile app. Een Service Worker is een non-blocking proces voor de JavaScript dat geladen wordt op een website. Het kan niet bij de DOM en heeft dus daarom ook geen nadelig invloed op de performance. De levensduur is zolang de worker benodigd is.

Een PWA maakt gebruik van een Application Shell Architecture (ASA). De focus van deze architectuur is om zoveel mogelijk van de Application Shell in de cache op te slaan. Een cached shell wordt per direct geladen.

Een Service Worker maakt onder andere gebruik van Cache, Fetch en Notification API’s. De Cache API maakt het mogelijk om een web applicatie offline te gebruiken. De Fetch API wordt gebruikt voor het maken van asynchronous HTTP requests. De Notification API ontvangt de informatie die vanuit server push events komen.

Enkele voordelen van native apps tegenover web apps zijn offline usage en push notifications. Dit is veranderd met de komst van Progressive Web Apps.

Machine Learning

by: Andreas Johansson

Something that I like to do is to go to presentations on a topic that are somewhat outside my scope. The Machine Learning: The big picture by David Chappell was quite interesting and he connected it to how we developers can use it to improve our applications.

Machine learning is quite hot topic at the moment and one reason is that all the cloud providers have massive resources made available for competitive prices. Microsoft offering is Azure Machine Learning. The short version of what machine learning is that you feed lots of data into an algorithm and lets it try to find how to answer a question that you ask it.

The example shown used lots of credit card transactions, that also contained flags for which ones were fraudulent, which were fed into the algorithm that would produce the model. This is called training the model. The model is not what we usually think a model is but it is actual code, something that you feed values into that it was trained to determine if a transaction was fraudulent or not. Since the training data contained if the transaction was good or not it is called labeled, versus unlabeled that is just a bunch of data. This is a bit more problematic and might not even be possible to train it to get it to answer a question. With machine learning failure is an option and it might not be possible to train it given the specific data and/or question.

This can be a very good tool to use for various situations where you have lots of data about something and want to predict the future, or if a credit card transaction is fraudulent or not. It is already usable for us regular developers. If you would like to make it your career the job title would be data scientist. It was mentioned that there are not enough of them at the moment so it might be an interesting career choice, especially if you are into mathematics, algorithms and massive amounts of data.

Introduction to the Microsoft HoloLens

by: Ramiro Diniz

Tussen alle hoofdbrekende en hersenkrakende developer sessies is het wel eens fijn om even bij te komen bij een meer toegankelijke sessie met meer entertainment waarde. Zo ben ik tussendoor naar de sessie “Introduction to the Microsoft HoloLens” gegaan. Ik heb nog nooit zo’n apparaat op mijn hoofd gehad, ik weet er ook weinig van af, dus deze gadget-sessie zou nog best wel eens interessant kunnen zijn.

Ondanks dat het nog maar kort op de markt is, loopt het project al 8 jaar en is er al veel geld ingestoken. De bril is slechts de tool en kan makkelijk vervangen worden door alternatieven die er zeker gaan komen. Het gaat eigenlijk om het systeem erachter dat de motor is: Windows Holographic, een augmented reality omgeving waarin iedere UWP (Universal Windows Platform) app kan draaien middels speciale API’s. Windows Holographic is een onderdeel van Windows 10. Sterker nog, de bril draait ook gewoon een versie van Windows 10.

De grootste ‘eyecatcher’ ten opzichte van bijvoorbeeld een Virtual Reality bril is dat de HoloLens volledig draadloos is, untethered. Dit lijkt logisch maar VR brillen zoals Oculus Rift zijn bedraad vanwege de benodigde grafische rekenkracht van een volledige VR wereld waardoor je er niet vrij mee rond kan lopen. Bovendien zijn de glazen van de HoloLens transparant: het beeld is een combinatie van de echte wereld en van de virtuele wereld, net als bij augmented reality. Je bent niet afgesloten van de normale wereld, niet visueel en niet auditief. Direct doemen beelden bij mij op van SF films als Robocop en de helm van deze fictieve half-robot. Dat wil toch iedereen!

Deze twee pluspunten maken dat je virtuele objecten kan plaatsen in de echte wereld én er 3D omheen kan lopen zonder beperkingen. Hebben meerdere mensen een HoloLens op, dan kunnen ze zelfs naar hetzelfde virtuele object kijken en erover brainstormen of discussiëren. Denk aan een virtuele maquette die de architect met de klant aan het bespreken is, of het samenstellen van je keuken bij een keukenbedrijf. Ook (nog) serieuzere zaken als virtuele operaties uitvoeren bij de opleiding tot chirurg behoren tot de mogelijkheden.

Er zijn technieken hergebruikt van de Microsoft Kinect. Alles is gebaseerd op camerabeelden, dus geen bewegingssensoren, geen gyroscoop en geen accelerometer, technieken die we kennen van de smartphones. Op basis van de opgevangen beelden en de samenhang daartussen weet de HoloLens dat je je hoofd beweegt. Wel zit er nog een dieptemeter en een infrarood meter in. De bril meet tot een diepte van 3,5 m. Dat is niet heel ver, maar hij onthoudt wel alles. Dus als je rondloopt in een kamer, dan wordt uiteindelijk de hele kamer opgeslagen.

Er zit geen GPS ontvanger in. De reden schijnt te zijn omdat het binnenshuis gebruikt moet worden vanwege veiligheid en het verminderde beeld bij veel zonlicht. Ook is de resolutie nog voor verbetering vatbaar en is het gezichtsveld waarop de virtuele beelden geprojecteerd kunnen worden wat klein. Dit schijnt allemaal niet zo storend te zijn, maar voor gedetailleerd werk en voor het echte ‘surround’ effect kan het wel degelijk een probleem zijn. Wat dat betreft is het duidelijk nog een eerste versie en is er zeker nog wel wat te verbeteren.

Al met al een mooi stukje techniek waarbij de toepassingsgebieden eindeloos kunnen zijn, alleen jammer dat ik de HoloLens nog steeds niet zelf heb mogen ervaren.

Malmo: A platform for AI research in Minecraft

by: Kah Tang

Ik maak TechDays dit jaar voor het eerst mee en ik vond het een erg leuke conferentie met veel interessante sessies en een gezellige sfeer. Dat het dit jaar in de Rai was maakte het praktisch ook een stuk gemakkelijker.

Zoals gezegd waren er heel veel sessies dit jaar met heel uiteenlopende onderwerpen. De onderwerpen die veel aandacht kregen dit jaar waren naast Azure ook IoT, .NET Core, microservices, Xamarin en AI.

Mijn favoriete sessie was misschien wel een onderwerp buiten m’n dagelijkse werkgebied. Het was een sessie over Project Malmo, een project dat Microsoft heeft ontwikkeld om in Minecraft onderzoek te kunnen doen naar kunstmatige intelligentie. Minecraft is een spel in een wereld waar je zeer veel vrijheid krijgt en is hierdoor ideaal voor dit soort onderzoek.
Het project bestaat uit een mod voor Minecraft die een omgeving creëert voor een kunstmatig intelligente speler. De speler kan hiermee verteld worden of een actie beloond of gestraft kan worden, zoals het oppikken van items of een afgrijselijke dood tegemoet gaat als hij over lava loopt.

Naast de mod is er ook een API waarmee je de speler kan programmeren wat hij moet doen om. Doordat Minecraft een softwarematige wereld is kun je parallel meerdere sessies naast elkaar draaien in b.v. Azure en dus sneller de resultaten waarnemen van de geprogrammeerde spelers. Erg interessant sessie waar je in de toekomst als developer in toenemende mate mee te maken zal krijgen.

Introduction to building code analyzers and code fixes with Roslyn

by: Dominic Cronin

I attended the session “Introduction to building code analyzers and code fixes with Roslyn”, which was presented by Bart de Smet, who is the principal software development engineer in Microsoft’s compiler team.

The Roslyn compiler platform for .NET has introduced new possibilities that weren’t available in previous versions of Visual Studio. Specifically, in this session, Bart demonstrated how to build custom analyzers and code fixes. In practice, this means that there is now an extensibility API that allows you to build your own modules that integrate with the lightbulbs and “squigglies” in Visual Studio. You can interact directly with the compiler to identify problematic code constructions, and also offer automatic fixes via the lightbulb popup. This can be useful if you build a library that has its own expectations about code styles or good practices. You can create your own compiler support to help the people who use your library, and add this via NuGet so that when they add a package, they also get the code support tools. This might not be something you do very often, but it’s very useful to know that the possibility exists, and that it can all be done via an open and supported API.

Indivirtual

Wij ontwerpen en realiseren hoogwaardige (mobiele) websites voor alle bekende schermen. Indivirtual is één van de eerste webbureau’s van Nederland en bestaat uit meer dan 70 internet professionals in Amsterdam en Dubai. Sinds 1995 leveren wij uitsluitend topkwaliteit aan betrokken opdrachtgevers. Onze projecten zijn meestal van strategisch belang en dan is onze meerwaarde het hoogst. Wij werken zowel op locatie bij onze klanten als vanuit ons kantoor in Amsterdam.