Techorama takeaways - Walkthrough door de leukste talks - Dag 2

Terminator 2, The Empire Strikes Back, The Dark Knight... Wie zegt dat sequels niet beter dan het eerste deel kunnen zijn? Dag twee van Techorama biedt nóg meer toffe talks en demo’s van de laatste ontwikkelingen op het gebied van DevOps, .NET en Azure.

Je kunt natuurlijk altijd eerst ons verslag van Dag 1 teruglezen!

Data Protection and Privacy in the Database World

Grant Fritchey
Grant Fritchey past een klassieke bait and switch toe en besteedt het grootste deel van zijn praatje aan DevOps. Zijn motivatie is dat DevOps draait om communication, wat essentieel is bij het beschermen van je data. En ik maar denken dat we het over encryptie zouden gaan hebben…

Gelukkig heeft het praatje alsnog een technisch tintje. Zo wordt de suggestie gedaan om source control toe te passen op je database. Geen vreemd concept in het Microsoft-wereldje, waar Entity Framework koning is.
De spreker legt ons uit wat het verschil is in flow tussen data en code: “Code flows up, data flows down”. Met andere worden, code doorloopt de OTAP-straat, terwijl productiedata vaak de omgekeerde weg bewandelt. Uiteraard wil je deze data wel eerst anonimiseren, bij voorkeur geautomatiseerd. Uit het publiek komt een goede tip. Er schijnt namelijk een GDPR framework te bestaan waar zelfs de spreker nog niet eerder van gehoord heeft: NOREA.

Tot slot nog de vraag van de spreker of wij devs alsjeblieft geen SQL injection vulnerabilities meer willen inbouwen in onze code. Dit soort human error is funest als je je GDPR-zaakjes op orde wilt krijgen. Staat genoteerd Grant!

Improving design and code quality with Property-based testing

Kenny Baas & João Rosa
Deze sessie doet me denken aan een oud grapje over testers: “Een tester zit aan de bar en bestelt een biertje, 999999 biertjes, een piano, -1 biertje, een sdfjersdh…”. Als softwareontwikkelaars hebben we namelijk nogal eens de neiging om alleen het happy path te testen. Kenny Baas en João Rosa laten ons zien wat het is om met écht random data te werken.

We krijgen een demo te zien van de FsCheck-plugin in xUnit. Daarmee is op basis van generators te bepalen is wat de eigenschappen van een dataset moeten zijn. Erg fraai is het gebruik van een zogenaamde replay seed, waarmee een specifiek testscenario te herhalen is ten behoeve van debugging.

Verrassend is dat de tests relatief snel zijn. Wel zeggen Kenny en João erbij dat edge cases nog steeds het beste te testen zijn met oude vertrouwde unit tests.

Niet direct het onderwerp van de talk, maar wel een leuke tip is het tiny type pattern. Waar je normaal gesproken een primitive zou gebruiken voor bijvoorbeeld een voornaam- of postcode-property, kun je er ook voor kiezen een tiny type te maken. Erg handig om specifieke domain logic in te stoppen. Bovendien profiteer je direct van strong typing.

Mixed Reality - It's all about that space, not pixels

Andreas Erben
Spatial anchor, Lowe’s heatmap, vectors, meshes… Mijn notities teruglezend snap ik er weinig meer van. Zo voelen mijn ooms en tantes zich dus als ik over mijn werk vertel.

Het demo-deel van de sessie is beter te behappen. Via het bioscoopscherm laat Andreas Erben ons live meekijken met zijn Hololens. Hij toont ons een demo-app die zichtbaar maakt hoe de Hololens zijn omgeving scant. Redelijk snel en verrassend secuur krijgt de app inzicht in de ruimte waarin het zich bevindt. Met deze informatie bepaalt de app vervolgens welke mogelijkheden het heeft om virtuele objecten te plaatsen. Leuk om low-level te zien hoe de Hololens dit doet.

Enterprise transformation (and you can too)

Donovan Brown
Direct na de lunch is de beurt aan Donovan Brown. Geen tijd om rustig onze lunch dip te verwerken, maar vol gas door met deze energieke spreker.

Donovan claimt de definitie van DevOps binnen Microsoft te hebben bepaald. Het heeft hem flink wat tijd gekost om met de perfecte beschrijving te komen – enkele weken, als ik het goed herinner – maar het is hem gelukt. Oordeelt u zelf: “DevOps is the union of people, process, and products to enable continuous delivery of value to our end users.”

Aan de hand van de verschillende Visual Studio releases zien we hoe Microsoft steeds meer Agile is gaan werken. Inmiddels heeft het ontwikkelteam het magische getal gevonden voor een ideale sprint: drie weken. Uiteraard heeft iedere divisie binnen Microsoft de vrijheid om hiervan af te wijken.

Erg leuk is dat Donovan Brown een team van DevOps superhelden heeft samengesteld, de League of Extraordinary Cloud DevOps Advocates. Door de hashtag #LoECDA te gebruiken op Twitter kun je de hulp van deze experts inroepen bij al je DevOps-vragen. Wel vraagt Donovan ons dit eenentwintigste-eeuwse Bat Signal wijselijk te gebruiken. Voor tweets als “OMG does this really work?!? #LoECDA” komen de helden hun bed niet uit.

The strengths and weaknesses of dependency injection

Dennis Doomen

In zijn praatje over dependency injection begon Dennis met een overzicht te geven van de gevaren en nadelen van dependency injection. Enkele voorbeelden:
  • De stacktrace van exceptions als gevolg van het gebruik van een inversion of control container zijn vaak moeilijk te begrijpen.
  • Het gebruik van een inversion of control container kan leiden tot onverwachte runtime exceptions (bijv. omdat een dependency nog niet geregistreerd is). Tip: gebruik je inversion of control container ook in je unit tests.
  • De lifecycle van objecten is niet duidelijk. Bijvoorbeeld: wanneer een transient object afhankelijk is van een singleton is er niks aan de hand, maar wanneer een singleton afhankelijk is van een transient object, dan wordt het transient object daarmee automatisch en onbedoeld ook een singleton, met overwachte resultaten tot gevolg (die mogelijk ook pas in productie naar voren komen).
  • De bootstrapping code voor de inversion of control container kan moeilijk te volgen zijn.
  • Het is soms moeilijk om in de codebase te bepalen welke concrete implementatie daadwerkelijk op runtime gebruikt wordt voor een dependency.
Vervolgens gaf Dennis een aantal tips t.a.v. het gebruik van inversion of control containers. Enkele daarvan:
  • Niet het service locator pattern gebruiken. Zie het voorbeeld. Dit verbergt volledig waar een class allemaal afhankelijk van is.
  • Gebruik de container alleen in de root van je applicatie. Dus bijv. je Program.cs of Startup.cs.
  • Gebruik delegates i.p.v. funcs voor factories e.d. Daarmee is de registratie code een stuk makkelijker terug te vinden. Bijvoorbeeld: tegenover:
  • Gebruik geen inversion of control container die geconfigureerd moet worden via bijv. XML-bestanden. Dit vergroot de kans op runtime exceptions enorm.

What you always wanted to know but were afraid to ask: Blockchain, Smart Contracts, and Ethereum

Wei-Meng Lee
Allereerst, wat een fijne spreker is Wei-Meng Lee. Vrolijk, vlot, grappig, op iedere vraag een antwoord; Het uur vliegt voorbij. Knap ook dat de spreker in zo’n korte tijd zoveel onderwerpen de revue laat passeren. Zo legt hij uit hoe mining werkt, wat een merkle tree is, hoe het proof of work system wordt toegepast en wat het verschil is tussen full- en light nodes.

Met nog een paar minuten te gaan vindt Wei-Meng zelfs nog tijd om een werkend smart contract te demo’en. Hij gebruikt daarbij de Metamask extension voor Chrome. Het gemak waarmee met een testnetwerk te verbinden is, en de snelheid waarmee je je apps kunt uitproberen nodigt uit om direct zelf aan de slag te gaan.

Met het einde van deze talk zit ook Techorama erop. Wat een succes was deze eerste editie! We verheugen ons nu al op volgend jaar.

[Martijn en Roeland zijn developers bij Infi]

Wil je op de hoogte blijven van updates over hippe tech, een kijkje achter de schermen, of upcoming events? Schrijf je in voor onze nieuwsbrief!

Wil je iets waarmaken met Infi?

Wil jij een eigen webapplicatie of mobiele app waarmee jij het bij anderen maakt?

Waargemaakt door de nerds van Infi.
Nerds met liefde voor softwareontwikkeling en die kunnen communiceren. En heel belangrijk: wat we doen, doen we met veel lol!

Wij willen het fixen. Laat jij van je horen?

Voor wie heb je een vraag?