{"id":9174,"date":"2025-05-17T20:09:35","date_gmt":"2025-05-17T19:09:35","guid":{"rendered":"https:\/\/qdraw.nl\/blog\/?p=9174"},"modified":"2025-06-19T14:14:43","modified_gmt":"2025-06-19T13:14:43","slug":"net-saturday-2025","status":"publish","type":"post","link":"https:\/\/qdraw.nl\/blog\/technologie\/net-saturday-2025\/","title":{"rendered":".NET Saturday 2025"},"content":{"rendered":"<p>Zaterdag 17 mei 2025 was het zover: de allerlaatste editie van .NET Saturday. Dennis Vroegop opende de dag met een heldere boodschap: het doel van deze meetup-reeks is bereikt. Na meer dan 25 jaar community-opbouw, kennisdeling en enthousiasme is .NET volwassen geworden. Deze blogpost is geschreven voor een technisch publiek, maar iedereen is welkom om het te lezen.<\/p>\n<p>Tijdens deze sloteditie waren er weer volop inspirerende sessies. In deze blog neem ik je mee langs een aantal van de talks die indruk maakten \u2013 en wat we er als ontwikkelaars van kunnen meenemen.<\/p>\n<h2>Overzicht houden in je dependencies \u2013 Supply Chain Security<\/h2>\n<p>Tom van den Berg beet het spits af met een sessie over supply chain security, een onderwerp dat steeds belangrijker wordt in een wereld waarin we nauwelijks nog alles zelf schrijven. Hij schetste hoe slechts een fractie van je code echt door je team is gemaakt. Het overgrote deel \u2013 denk aan libraries, packages, transitive dependencies \u2013 komt van buiten. En daarmee komen ook risico\u2019s mee, zoals bleek uit eerdere kwetsbaarheden als Log4Shell en de SolarWinds-aanval.<\/p>\n<p>Tom benadrukte het belang van zichtbaarheid: weet wat je binnenhaalt. Tools als Trivy kunnen je helpen om licentieconflicten en kwetsbaarheden te detecteren, nog voordat je een PR merged. Ook wees hij op het belang van een SBOM (Software Bill of Materials), straks zelfs verplicht onder de aankomende Cyber Resilience Act. En ja, zelfs je \u201cNuGet Prefix Reserved\u201d, bleek ineens een veiligheidsmaatregel. Dit voorkomt dat anderen packages onder jouw naam kunnen reserveren.<\/p>\n<p>Wat deze sessie sterk maakte, was de vertaling van beleidsniveau naar praktische ontwikkelkeuzes. Minder afhankelijkheden, zorgvuldiger keuzes, en iets vaker de vraag: \u201cMoeten we deze package \u00e9cht gebruiken?\u201d<\/p>\n<h2>Inzicht in gedrag met Application Insights<\/h2>\n<p>Mart de Graaf nam ons daarna mee in de wereld van observability, met een focus op Azure Application Insights. Waar veel developers vooral logs als naslag gebruiken, liet Mart zien hoe je met structured logging, metrics en dashboards waardevolle realtime inzichten kunt krijgen in het gedrag van je applicatie.<\/p>\n<p>Hij toonde hoe je met KQL (Kusto Query Language) gericht kunt zoeken in je logdata, hoe je dashboards maakt die je direct inzicht geven in performance of errors en hoe sampling je kan helpen om log noise te reduceren. Ook custom dimensions kwamen voorbij \u2013 kleine toevoegingen aan je logs die net dat beetje extra context geven.<\/p>\n<p>Wat vooral bleef hangen, was hoe je Application Insights niet alleen kunt gebruiken voor troubleshooting, maar juist ook als proactieve tool om je applicatie te begrijpen. En met een beetje extra moeite kun je zelfs workbooks bouwen en ze automatiseren via Bicep. Observability als vast onderdeel van je ontwikkelcyclus, in plaats van een afterthought.<\/p>\n<h2>Azure Container Apps als sweet spot<\/h2>\n<p>Geert van der Cruijsen nam ons daarna mee naar de wereld van Azure Container Apps (ACA). Voor wie Kubernetes te complex vindt, maar Azure App Services te beperkt, vormen Container Apps een krachtig alternatief. Geert legde uit hoe Azure Container Services (ACA) een hoop DevOps-zorgen wegneemt \u2013 geen clusterbeheer, geen pod-scheduling, gewoon je container deployen en schalen op events of load.<\/p>\n<p>Wat de sessie overtuigend maakte, was hoe soepel de developer experience is. Geert demonstreerde onder andere blue\/green deployments, schaalbare background jobs, en integratie met Dapr en service mesh. In combinatie met het nieuwe Aspire-dashboard krijg je als developer bijna vanzelf een goed inzicht in de gezondheid van je applicatie.<\/p>\n<p>De boodschap was helder: ACA is geen vervanging van Kubernetes, maar w\u00e9l een bijzonder aantrekkelijke optie voor veel workloads waar snelheid, eenvoud en schaalbaarheid belangrijk zijn \u2013 zonder zelf een platformteam op te tuigen.<\/p>\n<h2>Kubernetes<\/h2>\n<p>Voor wie dan toch nieuwsgierig bleef naar Kubernetes (k8s), was er de sessie van Joost van Uitert. Geen marketingverhaal, maar een technisch diepgaande sessie over hoe Kubernetes van binnenuit werkt. Joost bouwde een eigen cluster op een mini-pc met een N100-processor en gaf uitleg over het hart van Kubernetes: etcd, de control plane, en de scheduler.<\/p>\n<p>Hij legde op een heldere manier uit hoe Kubernetes het verschil bijhoudt tussen de \u2018desired state\u2019 en de \u2018current state\u2019 en hoe k8s met behulp van controllers en reconciliation loops probeert die twee op elkaar af te laten stemmen. Ook de Raft-algoritmes achter etcd kwamen aan bod, net als hoe networking via kube-proxy wordt geregeld.<\/p>\n<p>Het gaf een beter begrip van waarom k8s soms zo \u201ccomplex\u201d voelt \u2013 maar ook hoe robuust en doordacht het systeem eigenlijk is. Vooral als je je tooling op orde hebt, zoals K9s, wordt het managen van een cluster ineens veel tastbaarder.<\/p>\n<h2>Nullable &#038; Required Properties<\/h2>\n<p>Tot slot gaf Shawn Wildermuth een verhelderende sessie over het juiste gebruik van nullable en required properties in C#. Hoewel kort van duur, raakte zijn verhaal precies de kern van een veelvoorkomend pijnpunt: de impliciete aannames in onze modellen.<\/p>\n<p>Met de introductie van required-properties en nullable-reference types in C# kun je als ontwikkelaar veel explicieter zijn over je intenties. Wat m\u00f3et er aanwezig zijn in een object en wat mag eventueel ontbreken? Shawn liet zien hoe deze features niet alleen bugs voorkomen, maar vooral ook communicatie verbeteren \u2013 zowel binnen je team als in de contracten tussen verschillende lagen of systemen.<\/p>\n<p>Zijn uitleg over het semantische verschil tussen \u201ciets wat een object is\u201d en \u201ciets wat een object wil zijn\u201d \u2013 de grens tussen optional en required \u2013 gaf echt stof tot nadenken. Vooral bij het ontwerpen van DTO\u2019s of API-modellen is het belangrijk om je model duidelijk uit te spreken: dit moet er zijn, dit mag null zijn en dit mag zelfs helemaal ontbreken.<\/p>\n<h2>Conclusie<\/h2>\n<p>Voor mij was het vooral een dag van verdieping hernieuwde inspiratie. Als je kijkt naar hoe breed het scala aan onderwerpen was \u2013 van supply chain security tot observability, van managed containers tot type safety \u2013 dan zie je precies waarom .NET vandaag nog net zo relevant is als toen het begon.<\/p>\n<p>Dank aan alle sprekers, organisatoren en bezoekers voor deze prachtige afsluiter. En zoals Dennis mooi verwoordde: \u201cHet doel is bereikt.\u201d Maar dat betekent natuurlijk niet dat we stoppen met leren.<\/p>\n<p><a href=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/1000\/20250517_093058_d_e_kl1k.jpg\" class=\"lightbox[blog]\"\n       title=\".NET Saturday 2025 - Thomas - dotNed Saturday | foto 1\"\n       data-gps=\"52.211506,5.188622\" data-heightratio=\"0.667\"><br \/>\n        <noscript><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/500\/20250517_093058_d_e_kl.jpg\" alt=\"Thomas - dotNed Saturday\" \/><\/noscript><br \/>\n\t\t<img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAL0lEQVR4AWPJS0348OEDNy&#x2B;Puro6y48fPzg4OHh5eYEky92b17i4uD5&#x2B;ePPp\/RsAGyEQLAFqQwcAAAAASUVORK5CYII=\" title=\"Thomas de Klerk - dotNed Saturday | foto 1\" \n\t\t     alt=\".NET Saturday 2025 ; Thomas de Klerk - dotNed Saturday ; dotNed Saturday, .NET, Conferentie, Xebia\" \/><br \/>\n    <\/a><br \/>\n<a href=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/1000\/20250517_101042_d_e_kl1k.jpg\" class=\"lightbox[blog]\"\n       title=\".NET Saturday 2025 - Tom van den Berg - dotNed Saturday | foto 2\"\n       data-gps=\"52.208092,5.184086\" data-heightratio=\"0.667\"><br \/>\n        <noscript><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/500\/20250517_101042_d_e_kl.jpg\" alt=\"Tom van den Berg - dotNed Saturday\" \/><\/noscript><br \/>\n\t\t<img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAL0lEQVR4AWNpqcl\/9eqVmIQ4CxA8ffpUV1dXQkpy586dLOxsXOfOXgxSVLl\/7xEAK2wP8JnNTIUAAAAASUVORK5CYII=\" title=\"Tom van den Berg - dotNed Saturday | foto 2\" \n\t\t     alt=\".NET Saturday 2025 ; Tom van den Berg - dotNed Saturday ; dotNed Saturday, .NET, Conferentie, Xebia, Tom van den Berg\" \/><br \/>\n    <\/a><br \/>\n<a href=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/1000\/20250517_113414_d_e_kl1k.jpg\" class=\"lightbox[blog]\"\n       title=\".NET Saturday 2025 - Mart de Graaf&#xA0;-&#xA0;dotNed Saturday | foto 3\"\n       data-gps=\"52.21175,5.184289\" data-heightratio=\"0.666\"><br \/>\n        <noscript><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/500\/20250517_113414_d_e_kl.jpg\" alt=\"Mart de Graaf&#xA0;-&#xA0;dotNed Saturday\" \/><\/noscript><br \/>\n\t\t<img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAMElEQVR4AWPp7ij9&#x2B;PGjgIDIr1&#x2B;\/WJiZmYWEhKSkZBgZGVmEhcXv3bvHzvbB0NAQABosDIMi8UY0AAAAAElFTkSuQmCC\" title=\"Mart de Graaf&#xA0;-&#xA0;dotNed Saturday | foto 3\" \n\t\t     alt=\".NET Saturday 2025 ; Mart de Graaf&#xA0;-&#xA0;dotNed Saturday ; dotNed Saturday, .NET, Conferentie, Xebia, Mart de Graaf\" \/><br \/>\n    <\/a><br \/>\n<a href=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/1000\/20250517_120412_d_e_kl1k.jpg\" class=\"lightbox[blog]\"\n       title=\".NET Saturday 2025 - Dennis van der Stelt - dotNed Saturday | foto 4\"\n       data-gps=\"52.211678,5.184303\" data-heightratio=\"0.667\"><br \/>\n        <noscript><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/500\/20250517_120412_d_e_kl.jpg\" alt=\"Dennis van der Stelt - dotNed Saturday\" \/><\/noscript><br \/>\n\t\t<img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAMUlEQVR4AWMpy437&#x2B;fOni7PH9u3bWZ4\/f87CwnL48GFnZ2cWUT4Bfn5&#x2B;RgbWO1evAwBn5A\/uDc495AAAAABJRU5ErkJggg==\" title=\"Dennis van der Stelt - dotNed Saturday | foto 4\" \n\t\t     alt=\".NET Saturday 2025 ; Dennis van der Stelt - dotNed Saturday ; dotNed Saturday, .NET, Conferentie, Xebia, Dennis van der Stelt\" \/><br \/>\n    <\/a><br \/>\n<a href=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/1000\/20250517_131203_d_e_kl1k.jpg\" class=\"lightbox[blog]\"\n       title=\".NET Saturday 2025 - Geert van der Cruijsen - dotNed Saturday | foto 5\"\n       data-gps=\"0,0\" data-heightratio=\"0.667\"><br \/>\n        <noscript><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/500\/20250517_131203_d_e_kl.jpg\" alt=\"Geert van der Cruijsen - dotNed Saturday\" \/><\/noscript><br \/>\n\t\t<img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAMUlEQVR4AWNJDbESFxdXVrJ4\/fo1y61bt7i5ub99&#x2B;8bAwMBi4pnGy8t74u7XO3eeAAAawRBUHrGj4gAAAABJRU5ErkJggg==\" title=\"Geert van der Cruijsen - dotNed Saturday | foto 5\" \n\t\t     alt=\".NET Saturday 2025 ; Geert van der Cruijsen - dotNed Saturday ; dotNed Saturday, .NET, Conferentie, Xebia, Geert van der Cruijsen\" \/><br \/>\n    <\/a><br \/>\n<a href=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/1000\/20250517_141534_d_e_kl1k.jpg\" class=\"lightbox[blog]\"\n       title=\".NET Saturday 2025 - Joost van Uitert - dotNed Saturday | foto 6\"\n       data-gps=\"52.211853,5.184322\" data-heightratio=\"0.667\"><br \/>\n        <noscript><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/500\/20250517_141534_d_e_kl.jpg\" alt=\"Joost van Uitert - dotNed Saturday\" \/><\/noscript><br \/>\n\t\t<img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAANklEQVR4AQXCsQkAIAwEQIVHcIGUmcwBrNw4tbiAEnij3GH0FhGPThIioqrIYWY4XubaOdFv\/bxfFg8iivqxAAAAAElFTkSuQmCC\" title=\"Joost van Uitert - dotNed Saturday | foto 6\" \n\t\t     alt=\".NET Saturday 2025 ; Joost van Uitert - dotNed Saturday ; dotNed Saturday, .NET, Conferentie, Xebia, Joost van Uitert\" \/><br \/>\n    <\/a><br \/>\n<a href=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/1000\/20250517_150759_d_e_kl1k.jpg\" class=\"lightbox[blog]\"\n       title=\".NET Saturday 2025 - Xebia - dotNed Saturday | foto 7\"\n       data-gps=\"52.211475,5.184472\" data-heightratio=\"0.667\"><br \/>\n        <noscript><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/500\/20250517_150759_d_e_kl.jpg\" alt=\"Xebia - dotNed Saturday\" \/><\/noscript><br \/>\n\t\t<img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAN0lEQVR4AQXCoQ0AIAwEQNHPC0RT19p6hmIUtmAj0oVqUOQOax8AJEUEVRUR7t7dmHaVmpZvvA&#x2B;7UgrjYDVTbAAAAABJRU5ErkJggg==\" title=\"Xebia - dotNed Saturday | foto 7\" \n\t\t     alt=\".NET Saturday 2025 ; Xebia - dotNed Saturday ; dotNed Saturday, .NET, Conferentie, Xebia\" \/><br \/>\n    <\/a><\/p>\n<p><a href=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/1000\/20250517_160822_d_e_kl1k.jpg\" class=\"lightbox[blog]\"\n       title=\".NET Saturday 2025 - Shawn Wildermuth -&#xA0;dotNed Saturday | foto 8\"\n       data-gps=\"0,0\" data-heightratio=\"0.667\"><br \/>\n        <noscript><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/net-saturday-2025\/500\/20250517_160822_d_e_kl.jpg\" alt=\"Shawn Wildermuth -&#xA0;dotNed Saturday\" \/><\/noscript><br \/>\n\t\t<img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA7ljmRAAAAMUlEQVR4AWPJSI379&#x2B;&#x2B;foaHh1atXWe7du6ehofHx40d9fX2WZy9ei0vKcPN&#x2B;k5CSBQCSMhIYyUNMTwAAAABJRU5ErkJggg==\" title=\"Shawn Wildermuth -&#xA0;dotNed Saturday | foto 8\" \n\t\t     alt=\".NET Saturday 2025 ; Shawn Wildermuth -&#xA0;dotNed Saturday ; dotNed Saturday, .NET, Conferentie, Xebia, Shawn Wildermuth\" \/><br \/>\n    <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"Zaterdag 17 mei 2025 was het zover: de allerlaatste editie van .NET Saturday. Dennis Vroegop opende de dag met een heldere boodschap: het doel van deze meetup-reeks is bereikt. Na meer dan 25 jaar community-opbouw, kennisdeling en enthousiasme is .NET volwassen geworden. Deze blogpost is geschreven voor een technisch publiek, maar iedereen is welkom om&#8230; <a class=\"view-article\" href=\"https:\/\/qdraw.nl\/blog\/technologie\/net-saturday-2025\/\">Bekijk artikel<\/a>","protected":false},"author":2,"featured_media":9175,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[624],"tags":[2841,2252,2761,2972],"class_list":["post-9174","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie","tag-net","tag-cms","tag-code","tag-conference"],"_links":{"self":[{"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/posts\/9174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/comments?post=9174"}],"version-history":[{"count":0,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/posts\/9174\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/media\/9175"}],"wp:attachment":[{"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/media?parent=9174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/categories?post=9174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/tags?post=9174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}