Dit toont aan dat je nooit double moet gebruiken als de uitkomst precies moet zijn. Denk hierbij aan berekeningen van uren en valuta voor facturen of rapporten. Als de uitkomst niet precies hoeft te zijn, maar snel, dan is float prima. Denk hierbij aan pixelberekeningen voor een grafische weergave.
Async heeft toegevoegde waarde op de server
Iedereen kent het voorbeeld en gebruik van async om de client reactief en snel te houden. Dit zorgt ervoor dat het scherm niet bevriest als je een langlopend proces aanroept met een knop. Server side heeft toegevoegde waarde, omdat een langlopend proces het mogelijk maakt ondertussen een andere client te helpen.
Optimalisatie
Hier ging de workshop in op optimalisatie voor je code. Hoe je objecten door de garbage collector worden opgeruimd.
Stack, Heap, Garbage collector
Veel mensen zijn al bekend met het fenomeen van stack en heap voor het geheugen. Wat minder bekend is, is dat .NET een grote en een kleine heap heeft. De kleine heap is snel en vluchtig, de grote heap is trager. De kleine heap is voor objecten tot 85k en objecten van de 1e en 2e generatie. De grote heap is voor de 3e generatie van een object en grotere objecten. Ga voor meer informatie hierover naar de website van Microsoft.
Dag 1 en keynote
Naast de workshop viel er op dag een nog veel meer te beleven, zoals de keynote van Steven Van Belleghem over customer experience in the age of AI platforms. Daarbij ging hij in op hoe techniek de wereld verovert. In China, bijvoorbeeld, wordt bijna uitsluitend betaald via WeChat Pay. Zelfs de zwervers hebben daar een QR-code om giften te krijgen via dit programma. Contant geld wordt niet meer gebruikt en pinnen is ook bijna uitgestorven. Ondertussen hebben we allemaal een slimme assistente in de broekzak en volgen we blindelings de navigatie om van A naar B te komen. Technologie is hier en gaat niet meer weg. Bovendien gaan de technologische ontwikkelingen sneller dat we eigenlijk kunnen bijhouden.
Eerste sessie: cryptografie
Na de keynote, een koffie en een croissant ging ik op weg naar de eerste sessie. Ik ben altijd geïnteresseerd geweest in cryptografie en beveiliging, dus mijn eerste keuze ging uit naar Cryptography for newcomers: the hitchhiker's guide to cipher in devsm4dz. Deze sessie is eigenlijk zeer kort samen te vatten. Maak gebruik van moderne en hedendaagse bibliotheken om je gegevens te versleutelen. Hier hebben al veel mensen over nagedacht en gediscussieerd, en het is bijna onmogelijk om zelf een beter systeem te maken. Of zoals de spreker adviseerde: never be a sorcerers apprentice.
Git
Mijn tweede sessie ging over mijn favoriete versiebeheersysteem: git. Edward Thompson vertelde hoe je met minder problemen in git kunt werken.
Regeleinden
Een veelvoorkomend probleem in git, is dat de regeleinden van Windows en Unix-systemen verschillen. Edward gaf de tip om dit te normaliseren. Hij legt het ook uit in zijn blog.
Stage je werkzaamheden vaker
Git staging area kan een bron van geschiedenis zijn. Bestanden die je ooit gewijzigd hebt, verwijderd hebt weer revert hebt en toch weer terug wilt hebben. Hier kun je Git recover voor gebruiken. Ook hierover heeft Edward een blog geschreven.
LFS
Git LFS (Large File System)is een manier om efficiënt om te gaan met grote bestanden. Hierover kun je meer lezen op de website van git.
Null safety in C# 8.0
Iedereen die weleens een bug-melding gezien heeft met de tekst NullReferenceException kan over dit onderwerp mee praten. In C# 8 kun je nu compile time veel strikter omgaan met nulls. Dit verkleint de kans op NullReferenceExceptions enorm en zorgt voor stabielere en betere code. Microsoft heeft hierover een blog geschreven.
Correcting Common Async/Await Mistakes
Hier kan ik alles over vertellen, maar je kunt zijn presentatie ook direct hier bekijken. Deze presentatie is opgenomen op de NDC Oslo, maar is dezelfde als in Ede.
IT depends: loving .NET Core dependency injection or not
Dependency Injection(DI); hiervoor heb je veel verschillende bibliotheken. Maar je kunt het ook zelf maken. In .NET Core zit het tegenwoordig namelijk ingebakken via de nieuwe HostBuilder. Hier zitten een aantal diensten in, waaronder DI. Bij het opzetten van de HostBuilder heb je de mogelijkheid om je DI te configureren. Je kunt hier bijvoorbeeld afhankelijk van je omgeving/build andere diensten inladen, lifetime van je objecten bepalen en nog veel meer. Je hebt ook de mogelijkheid om bij het opstarten van je applicatie te valideren dat alle dependencies goed geladen kunnen worden. Dit kun je doen via ValidateOnBuild en voorkomt vervelende runtimefouten.
Dag 2 Get out of (Technical) Debt
Veel programmeurs kennen de SOLID-principles wel. Dit levert goede, uitbreidbare en onderhoudbare code op. Toch kun je nog altijd een Technical Debt krijgen. Voor degene die er nog niet bekend mee zijn. Elke keer als je een keus maakt om iets snel, maar slordig op te lossen neem je eigenlijk een kleine schuld op je. Je leent tijd. Dit kun je zien als Technical Debt. Maar niet alle geleende tijd is even waardevol. Soms leen je tijd om iets te proberen op een slordige manier, zoals bij een proof of concept. Als het concept niet aanslaat, gooi je het daarna weer weg en is de schuld niet hoog. Maar soms bezorgt een slordige manier je een enorme last. Dan is de schuld hoger. Om op deze schuld grip te krijgen, kun je een Technical debt register gebruiken. En van het acroniem stable:
S: Smell your code
T: Tiny problems first
A: Augment your tests
B: Back up
L: Leave it better than you found it
E: Expect good reasons
Cool things you can do with .NET Core tooling
.NET Core wordt ingezet als bibliotheek om software mee te ontwikkelen. Maar .NET Core komt ook met een hoop tools die je hierbij helpen.
Try.NET als documentatie
Op de website https://try.dot.net kun je met dotnet experimenteren zonder .NET te installeren. Wat nog cooler is, is dat je dit kunt gebruiken om je code te documenteren. Je kunt via markdown-bestanden stukken code weergeven en draaien in je browser.
.NET Core CLI extensies
.NET Core CLI is een krachtige tool op zichzelf. Maar je kunt het zelf uitbreiden met nog veel meer mogelijkheden. Hier heeft iemand op Github al een uitgebreide lijst voor gemaakt.
dotnet new
Als je een nieuw project start, vind je het vast handig om te weten wat je er allemaal mee kunt. Hier heeft Microsoft een handige lijst van aangeleverd. Deze is ook te vinden op Github.
HttpRepl
API's ontdekken en verkennen kan soms veel werk zijn. Hiervoor zijn dan ook al veel programma's op de markt, zoals Postmen en SOAPUI. .NET Core komt nu met een eigen variant in de vorm van een REPL (Read Evaluate Print Loop). Met de HttpRepl verken je op speelse wijze een rest API. Je maakt verbinding en je verkent de API alsof je op je bestandssysteem navigeert. Je kunt endpoints weergeven via ls . Navigeren via cd en op de juiste endpoints commando’s sturen via GET, POST en ander http verbs.
Performance monitoren in .NET Core
Je kunt nu in .NET Core je performance monitoren en diagnosteren via de CLI.Zo kun je memory dumps en traces maken. Microsoft heeft hier een blog over geschreven.
From EventStorming to CoDDDing
De laatste sessie van de conference was voor mij ook de meeste inspirerende. Ik had nog niet van EventStorming gehoord en ben maar een klein beetje bekend met Domain Driven Design. In deze sessie kwamen veel pijnpunten voorbij, waar ik dagelijks tegen aanloop. EventStorming is een manier om complexe problemen vanuit een businessperspectief om te zetten naar een model die in de software goed werkt. Tijdens de sessie werd dit uitgebreid met voorbeelden in Domain Driven Design. Met deze concepten ga ik zeker nog aan de slag. Bezoek voor meer informatie de website voor EventStorming.
Ending keynote
Richard Campbell sloot de conference af met een presentatie over ruimtereizen naar de maan en verder. Als trouwe luisteraar van de DotNetRocks podcast was ik zeer benieuwd naar deze keynote. En zoals hij in zijn Geek outs al veel over de ruimte verteld heeft, was ook dit weer een zeer vermakelijke eindkeynote met leuke en unieke inzichten.
Partner expo
Behalve het volgen van workshops en sessies waren er ook nog andere dingen te doen. Zo was er een grote partnerexpo waar ook Centric van de partij was.