Dit event staat op de site als "devNetNoord", de sessies in het voorjaar worden "devCampNoord" genoemd. De sessies in het najaar zijn wat kleiner qua opzet, de inloop is vanaf 15.30 uur, om 16.00 uur start de eerste presentatie, de laatste presentatie eindigt rond 21.00 uur, gevolgd door een borrel.
Ik heb mijn part-time middag van de dinsdag even doorgeschoven naar de donderdag. Omdat er nog een paar "nieuwe kokosmatten" moeten komen, heb ik dit weekend meteen even 1 meter bij 2.5 meter besteld bij Hornbach, kan ik daar eerst nog even langs. Rond 15.40 uur staat mijn auto op het parkeerterrein bij het gebouw van de GasUnie, kan ik mijn jas ophangen en is het tijd voor een bakje koffie met een stukje spijs. Mijn collega Jeroen is al aanwezig, samen met David, die ook bij de vorige editie van devNetNoord erbij was. Ook nog even gesproken met Dirk, hij is net als ik afgestudeerd aan de opleiding Hogere Informatica van de NHL, niet dezelfde klas, wel hetzelfde jaar. En hij heeft bij TRES gewerkt in de periode voordat ik bij TRES kwam werken.
Op 3 september had Jeroen in ons "developers-kanaal" gedeeld dat dit event eraan zat te komen, dus meteen ingeschreven. Ik had toen al even het programma doorgekeken en zag dat er begonnen zou worden met een sessie over Aspire en DAPR. Aspire is iets waar mijn collega Leks enthousiast over is, DAPR heb ik zelf al bij meerdere evenementen op de agenda gezien (en gedacht: daar moet ik zelf nog eens wat mee doen), maar zoals met veel zaken, je hebt maar een beperkte tijd om "dingen naast je werk te doen", omdat ik nog 4 Fundamental examens van Microsoft moet doen en bezig was met de voorbereidingen van mijn Umbraco Professional certificering, blijft dat wel eens liggen. Maar ik was wel benieuwd naar deze sessie van Florian Lenz. Helaas is deze sessie vervallen en vervangen door Mart de Graaf van 4dotnet over de WAF, de Web Application Firewall.
Ik zeg "helaas", maar dat is niet omdat de sessie van Mart niet goed zou zijn, integendeel. Maar iets meer kennis verkrijgen over Aspire en DAPR zou niet verkeerd zijn. In ieder geval, Mart weer hoe hij het publiek moet boeien. Ik neem aan dat zijn hobby "goochelen" is, want zijn groene shirt verandert "magisch" in het blauwe 4dotnet shirt. Omdat we bij de GasUnie zijn kan -helaas- de truc met de portemonnee die in de fik vliegt niet doorgaan, gelukkig hebben we de foto nog. Het is een feit dat al onze webites onder vuur liggen. Met een WAF (een soort software firewall) kun je zorgen dat "kwaadaardig verkeer" je web-applicatie niet eens bereikt, wat erg fijn is. Het scheelt je heel veel "foutmeldingen" in je Slack-kanaal, want dat zijn geen fouten: het zijn botjes die proberen "binnen" te komen. Je kunt de core rules gebruiken, er is nu ook een Microsoft Ruleset (DRS2). Je kunt zaken configureren, zo kun je de firewall in detection mode zetten (hier zou je geblokkeerd worden, maar ik laat je nu door) of in de prevention mode (ik gooi de boel dicht). Voor een application gateway betaal je 200 euro per maand.
Mart laat zien dat het niet allemaal "hosanna" is. Want met regexen kun je veel doen, maar als je achternaam Havinga is (familie van mij heeft deze achternaam), dan kan er een match op het SQL keyword "HAVING" ontstaan. Mart laat zien hoe je bepaalde velden kunt uitsluiten. Dat is natuurlijk niet de enige false-positive. Zo kun je in bepaalde tekstvelden meerdere streepjes achter elkaar zetten, in SQL is dat commentaar en dat is een manier om je systeem te "misbruiken": wederom een blokkade. Een quote in een bedrijfsnaam, een auto met de naam GRAND cyan 4x4 die niet door het systeem komt.
Dus je houdt veel "fout verkeer" tegen (YES!), maar het risico ontstaat dat er ook veel requests geblokkeerd worden die wel geldig zijn. Als je meteen de boel in prevention mode zet, krijg je waarschijnlijk veel telefoontjes of tickets van je klant. Mart geeft aan dat ook als er met cookies gewerkt wordt dat problemen kan opleveren.
Een WAF is een geweldig middel om je web-applicatie te beschermen, maar zoals duidelijk mag zijn, het is niet even een kwestie van "aanschaffen, inschakelen en we zijn van al onze problemen af". De collega's toch er nog maar even op wijzen dat defensief programmeren ons meer gaat helpen ;)
De volgende spreker is Michaël Hompus. Ik heb hem eerder bij een presentatie gezien, even denken waar dat ook alweer was. Ah, bij devCampNoord op 10 april dit jaar! Hij gaf toen een presentatie over Advent of Code en hoe je code steeds sneller kunt maken, door mij getypeerd als een "geweldige presentatie".
Het blog van Michaël bestaat al een flink aantal jaren. In 2007 opgezet bij Blogger (van Google), in 2009 overgezet naar MovableType 4 en in 2010: Wordpress. Michael zorgde zelf voor de hosting, thema, plug-ins instellen, een betaalde plug-in en per jaar iets meer dan 500 euro aan kosten. Toen kwam de ellende van Matt Mullenweg die begon te jammeren over andere partijen en die vervolgens zijn eigen plug-in ging door pushen naar Wordpress-installaties. Michaël was er wel klaar mee en is gaan kijken naar "statische sites". Naast het feit dat je die kosten maakt (voor een site waar op een bepaald moment geen artikel bij kwam, omdat er niets nieuws te delen was), heb je ook de CO2-uitstoot die gemaakt wordt voor jouw site. En als er dan niets nieuws gedeeld wordt, zullen er ook weinig tot geen bezoekers komen. Het digitale alternatief van een stationair draaiende auto, die 2 weken lang naast je huis staat. Dat kan toch anders/beter.
Omdat zijn collega's gebruik maken van Astro is Michaël daar ook mee aan de slag gegaan. Er zijn alternatieven, zoals Hugo en Jekyll. Zelf heb ik volgens mij Jekyll gebruikt om tekenaar.dirkhornstra.nl op te bouwen. Je maakt de inhoud in Markup, die zet je om naar HTML en laat je vervolgens deployen/publiceren naar jouw website.
Op docs.astro.build kun je lezen hoe je de omzetting uitvoert. Je code staat in Github, dus Dependabot maakt de PR's aan om te updaten. De site van Michaël is een static site in een free tier in Azure, dus je betaalt helemaal niets. Omdat het gedeeld wordt met duizenden anderen op die server is je CO2 uitstoot nihil. In Lighthouse krijgt zijn site een score van 100. Dus zo'n beetje elke maandagavond update Michaël zijn blog.
Wat mij hier nog opvalt is dat het uitrollen van de code 5 minuten duurt. Zou dat ook korter kunnen? En er is niet echt een "goede editor" voor MarkUp. Dus waar wat mensen waar ik een site voor opgezet heb nu in een browser in een WYSIWYG editor werken, dat kan niet met dit type site. Misschien nog iets om zelf eens verder uit te gaan zoeken. Laat ik kijken of ik mijn "tekenaar-website" in Github kan krijgen! Ik zet dit op mijn lijst met "1.000 dingen die ik nog moet doen", dus het zal wel even duren voordat ik er wat mee ga doen ;)
Hierna konden we gaan eten. Naar boven, naar de kantine. Een dienblad, een bord en vervolgens keuze uit bami of nasi (of van beide wat), pindasaus, saté, babi pangang en nog een ijsje na. Het eten was heerlijk, mijn complimenten! Na een sanitaire stop, daarna een bakje koffie en door naar de volgende 2 sessies. Jeroen merkt nog even op "hopelijk is dit niet de enige vertegenwoordiging van .NET-developers". Als ik rond kijk dan is dat waar, de meeste mensen schat ik in als 40+, het zou mooi zijn dat ook bij deze sessies zich een "jonger publiek aansluit". De drumband in ons dorp is een aantal jaren geleden gestopt omdat er geen nieuwe jeugdleden waren. Ook voor DevNetNoord is het van belang dat we aansluiting houden met de "jongere generatie".
De eerste presentatie na de pauze is van Johan Weiland van Chipsoft. Grappig, want na het eten hebben we nog even met elkaar gesproken, omdat ik mijn TRES trui aan heb (TRES is in Heerenveen gevestigd) en Chipsoft daar ook zit, raakten we aan de praat. Chipsoft zit in meer plaatsen, de developers/R&D zit voornamelijk in Heerenveen, er is een vestiging in Hoogeveen, in Amsterdam en ook nog in Antwerpen.
Johan begint met de zelfrijdende auto, we zien een soort "computerspelletje" met daarbij een tabel met acties. Als de auto rechtdoor gaat blijft hij op de baan en krijgt daar een punt voor. Dat werkt ook weer terug naar de stap daarvoor (als de 2e beslissing juist is, dan was de 1e beslissing dat ook). Vervolgens krijgen we de bochten en zal een andere actie dus een betere score geven. Dat is hier de Q-Table. Dit deel duurde wel even en ik vroeg me af: waar gaan we naartoe? Mocht je trouwens daar zelf wat mee willen doen, Johan deelt deze URL: https://gymnasium.farama.org/. Daar kun je zelf met spelletjes en agents aan de slag.
Nou, we gaan naar de planning. Van de operatiekamer. Dit is nog in de experimentele fase, maar een "agent" gaat nu een uitwerking maken voor de planning. Je stopt er voorwaarden en gegevens in en gaat kijken of je met "beloningen" kunt zorgen dat er een goed schema uitkomt.
Dat is nog niet zo simpel. Want bij de opleiding Hogere Informatica hadden we al de "rooster-opdracht". We moesten in code zorgen dat de planning voor onze opleiding gemaakt kon worden, je kreeg de database met leerlingen e.d. en moest daarmee aan de slag. Dat was (vergeleken met de OK planning) redelijk simpel, je hebt klaslokalen, je hebt docenten en je hebt klassen. En die moet je zo inplannen dat het past. Alleen.. dat was ook al niet simpel. Want leraren kun je niet op maandag en dinsdag al hun lessen laten geven. De klassen moeten les krijgen verdeeld over de week. En je kunt niet verwachten dat je een klas op een dag het eerste uur inplant, dus van 9.30 tot 10.30, de rest van de dag niet en dan nog op het laatste uur van 16.00 tot 17.00 uur. Je ziet al dat iets waarbij je "een beperkt aantal variabelen hebt", het toch best moeilijk wordt. Dat zal ook de reden zijn dat ook nu nog "planners" aangenomen worden die dit doen.
Bij operatiekamers ligt het nog wat ingewikkelder. Want vaak moeten patiënten na hun operatie een nachtje in het ziekenhuis blijven, dat bed moet beschikbaar zijn. Een operatie kan uitlopen. Ook kan een operatie die eigenlijk zou leiden tot "1 nacht blijven" leiden tot "3 nachten blijven", dus niet 1 nacht een bed bezet houden, maar 3. Dat is mij overkomen: bij het verwijderen van mijn galblaas wat een soort knoopsgat-operatie zou worden, werden meer galstenen aangetroffen, moest er een grotere snee gemaakt worden en moest ik dus langer blijven. Geen probleem voor mij (geweldig personeel bij het MCL!). Maar daarmee loopt de planning dus wel "in de soep". Daar moet rekening mee gehouden worden, dat een x aantal operaties kan uitlopen en ook dat je niet alle bedden kunt vastleggen, want er kan iemand zijn die langer moet blijven. En je hebt natuurlijk de "spoedgevallen", er komt iemand tussendoor, want het is een kwestie van leven of dood. Ook dat haalt de hele planning en bezetting van bedden overhoop.
Ook kwam bij de simulatie een aantal zaken naar voren die niet gewenst zijn. Zo werden alleen maar korte operaties ingepland, want dan "kon je er veel doen". Dat betekende wel dat de langere operaties, die ook een grotere spoed hadden, helemaal niet meer aan bod kwamen. De "deadline" die eraan gekoppeld zat wordt zo wel heel erg letterlijk een "deadline". Ook kwam het systeem erachter dat de meest efficiënte periode om in te plannen was "een dag van tevoren". Want dan heb je alle data redelijk actueel en kun je zaken goed inplannen. Alleen... dat kun je de patiënten niet aandoen. U wordt over 8 uren geopereerd, pak uw tas alvast in... De regel om hier een marge van 14 dagen aan te houden is daarvoor toegevoegd.
Dit moet allemaal nog beter gaan werken, de vervolgstap gaat zijn dat ook het ziekenhuis input aan kan leveren. Want de agent kan alles wel mooi gaan inplannen, er zijn meer zaken die invloed hebben. Chirurg De Vries is mantelzorger en kan maandag alleen vanaf 13.00 uur opereren. Dus het inplannen van operaties op zijn naam op maandagochtend gaat niet werken. Ook is er meer kennis bij de mensen van het ziekenhuis over de operaties. Sommige operaties hebben misschien vaker uitloop. De invloed van het weer, ik ben iemand die soms wel "dode vingers" heeft. Omdat voor de operatie nog wat bloed geprikt moest worden, werd eerst de boel wat gewreven om de doorbloeding op gang te krijgen. Het zijn allemaal "kleine" factoren die uiteindelijk zorgen dat zaken uitlopen.
Eindconclusie mag dus wel zijn dat "planning" klinkt als iets wat "simpel op te lossen is", maar waar bijna een heel nieuwe wiskundige theorie voor opgebouwd mag worden.
De laatste presentatie van deze avond wordt gegeven door Wesley Noordam van XPRTZ. Wesley bespreekt hier NSP, Network Security Perimeter. Hiermee kun je resources binnen Azure toegang tot elkaar geven door ze te groeperen. Het lijkt wel een beetje op een firewall, maar is een soort versimpelde versie. Je kunt zaken toegang geven op basis van een subscription (of IP-adressen). In de "oude" opzet gebruik je virtuele netwerken in Azure. Daar heb je dan nog wel wat extra zaken voor nodig, onder andere een interne DNS. Dus als je wilt besparen is een NSP daar een optie voor. Het voordeel dat de configuratie makkelijk is, is ook het nadeel, dat je ook zaken niet kunt configureren die je wel zou willen. Met een NSP kun je wel heel makkelijk het verkeer zien, we zien hoe er een request naar een keyvault gaat, we zien het endpoint (welke keyvault) en de bron: wie doet die aanvraag. Wesley sluit nog even aan op een vraag die bij de WAF gesteld werd, bij de WAF kun je alleen ingaande data anlyseren en acties op uitvoeren, bij de NSP kan dat ook op de uitgaande data.
Hierna sluiten we de avond af. Op het scherm worden nog even de sponsoren getoond, de bedrijven die ervoor gezorgd hebben dat wij geen kaartje hoefden te kopen (is gratis), koffie, thee, de lunch en de borrel na de tijd zijn ook gratis. Dus nog even een shout-out naar: Gasunie, KPN, Sopra Steria, 4dotnet, Arcady, Bencom, Chipsoft, eLabNext, Eneve, Get There, New Nexus, Ilionx, Quintor, The Factor.E en Vitas.
En nog even de aankondiging voor volgende keer, 9 april 2026 is devCampNoord!
Jeroen pusht me hier nog een beetje met "is het niet iets voor jou om op devCampNoord te spreken?".
Ik ga hier nog even over nadenken, daar heb ik tot 18 januari 2026 de tijd voor. Op de site wordt aan sprekers gevraagd om zich aan te melden. De wervende tekst is: " Voor de deze editie zijn we op zoek naar sprekers. Heb jij een interessante sessie met een onderwerp wat interessant is voor ontwikkelaars op de Microsoft stack, vul dan onze Sessionize in en meld je sessie aan. De sessies duren 50 minuten (incl. Q&A), zijn doorgaans in het Nederlands en hebben bij voorkeur een praktische insteek zodat de deelnemers deze kennis direct kunnen gaan toepassen in hun dagelijks werk."
Op zich wil ik dit wel doen, alleen, ik moet hier een goed onderwerp voor hebben. De sessie die ik zou geven zou een sessie moeten zijn waarvan ik zelf zou denken: als die door iemand anders gegeven wordt, hier ga ik bij zijn want dit is interessant.
Op dit moment heb ik nog niets iets waarvan ik denk: daar kan ik wel een 45 minuten durende presentatie mee vullen. Ik weet in ieder geval wel dat ik geen goocheltrucs a la Mart de Graaf ga doen, dat heb ik een keer bij een studieweekend van de drumband gedaan. Hierbij vloog een krant in de brand (dat hoorde bij de truc), maar daardoor werd het even zo heet, dat het brandalarm begon te loeien. De eigenaar van de kampeerboerderij kwam in roze pyjama in paniek naar ons toe rennen, een andere groep kwam paniekerig naar binnen lopen. Gelukkig had de studieweekend-commissie van tevoren goed alle documentatie doorgelezen en hebben meteen de brandweer afgebeld, anders had die ook nog op de stoep gestaan. Dit rampscenario moeten we april volgend jaar maar niet in het Kinepolis van Groningen hebben :)
Mocht je trouwens nog wat slides van de presentaties terug willen zien, hier heb ik de foto's staan die ik deze avond gemaakt heb: slides.solution4u.nl