{"id":8891,"date":"2024-10-19T06:50:42","date_gmt":"2024-10-19T05:50:42","guid":{"rendered":"https:\/\/qdraw.nl\/blog\/?p=8891"},"modified":"2025-06-19T14:15:04","modified_gmt":"2025-06-19T13:15:04","slug":"techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzichten-die-je-niet-wilt-missen","status":"publish","type":"post","link":"https:\/\/qdraw.nl\/blog\/technologie\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzichten-die-je-niet-wilt-missen\/","title":{"rendered":"Techorama 2024: Van Domain-Driven Design tot Cybersecurity \u2013 IT Inzichten die je niet wilt missen"},"content":{"rendered":"<p>Op Techorama 2024 werden inzichten gedeeld over actuele thema&#8217;s binnen de IT en softwareontwikkeling. Deze blog is<br \/>\ngeschreven voor IT professionals. In dit blog bespreken we enkele hoogtepunten, waaronder Micha\u00ebl Hompus&#8217;<br \/>\nperformance-optimalisaties in C#, Steve Smith&#8217;s toepassing van Domain-Driven Design (DDD) om complexiteit te<br \/>\nverminderen, en Michael Kaufmann&#8217;s uitleg over cybersecurity en Zero Trust voor ontwikkelaars. Daarnaast belichtte Amber<br \/>\nVanderburg het belang van teamdynamiek en besluitvorming. Van ethisch hacken tot geautomatiseerd testen, deze sessies<br \/>\nbieden waardevolle kennis voor softwareontwikkelaars die veilige, effici\u00ebnte en schaalbare systemen willen bouwen.<\/p>\n<p>In deze blog geef ik een samenvatting van de verschillende sessies:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"337\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241008_081544_d_1_e_kl.jpg\"\n    alt=\"Clown bij Techoroma\" \/><\/p>\n<h2>&#8220;Learn to Say &#8216;No!&#8217; Without Being a Jerk&#8221; door Christina Aldan:<\/h2>\n<p>Deze sessie richt zich op het belang van het stellen van grenzen zonder onbeleefd over te komen. Het behandelt waarom<br \/>\n    mensen moeite hebben om &#8220;nee&#8221; te zeggen, vaak door angsten zoals het missen van kansen (FOMO), oordeel van anderen,<br \/>\n    of niet goed genoeg zijn.<\/p>\n<h3>Belangrijke punten:<\/h3>\n<ul>\n<li>Grenzen stellen: Definieer tijd, fysieke, mentale en materi\u00eble grenzen om je eigen welzijn te waarborgen en<br \/>\n        overbelasting te voorkomen.<\/li>\n<li>Non-negotiable waarden: Leer wat je kernwaarden zijn en gebruik deze als basis om grenzen te stellen.<\/li>\n<li>Overcommitment vermijden: Zeg niet automatisch &#8220;ja&#8221; tegen alles, omdat dit kan leiden tot stress, burn-out, en<br \/>\n        verminderde productiviteit.<\/li>\n<li>Communicatie van grenzen: Er zijn manieren om vriendelijk en respectvol &#8220;nee&#8221; te zeggen, zoals het voorstellen<br \/>\n        van alternatieven of het aangeven dat het niet in je agenda past.<\/li>\n<\/ul>\n<h3>Strategie\u00ebn:<\/h3>\n<ul>\n<li>Blokkeer tijd: Hou je aan je planning, inclusief pauzes.<\/li>\n<li>Onderzoek verplichtingsgevoelens: Vraag jezelf af of je &#8220;ja&#8221; zegt uit verplichting of omdat het echt nodig is.\n    <\/li>\n<li>Maak van &#8220;ja&#8221; een weloverwogen keuze: Denk na over wat er nodig is om er volmondig &#8220;ja&#8221; op te zeggen.<\/li>\n<li>Oefen in het zeggen van nee: Door regelmatig te oefenen, wordt het makkelijker om grenzen te stellen.<\/li>\n<li>Beslis en wees duidelijk: Sta achter je besluit en blijf bij je nee.<\/li>\n<\/ul>\n<p>Praktische tips: Gebruik specifieke zinnen om je grenzen duidelijk te maken zonder bot over te komen, zoals &#8220;Dit past<br \/>\n    helaas niet in mijn agenda&#8221; of &#8220;Ik kan het nu niet, maar wellicht in de toekomst.&#8221;<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241008_095118_d_e_kl.jpg\"\n    alt=\"Learn to Say No! Without Being a Jerk - Christina Aldan\" \/><\/p>\n<h2>&#8220;SIMD, Vectorization &#8211; What It Means and How to Do It in .NET&#8221; door Ji\u0159\u00ed \u010cin\u010dura:<\/h2>\n<p>Deze sessie bespreekt SIMD (Single Instruction Multiple Data) en vectorisatie in de context van .NET, waarbij de<br \/>\n    focus ligt op prestatie-optimalisatie van CPU-gebaseerde verwerking. SIMD maakt het mogelijk om met \u00e9\u00e9n instructie<br \/>\n    meerdere datapunten tegelijk te verwerken, wat vooral nuttig is voor wiskundige en wetenschappelijke toepassingen<br \/>\n    die veel rekenkracht vereisen.<\/p>\n<h3>Belangrijke punten:<\/h3>\n<ul>\n<li>SIMD en prestatieverbeteringen: SIMD kan worden gebruikt om CPU-prestaties te verbeteren door meerdere<br \/>\n        datapunten tegelijkertijd te verwerken.<\/li>\n<li>Vectorisatie: Moderne CPU&#8217;s hebben vector-units waarmee ze grotere hoeveelheden gegevens tegelijk kunnen<br \/>\n        verwerken.<\/li>\n<li>Simulatie en overhead: Hoewel SIMD snelheidswinst kan opleveren, introduceert het ook overhead, vooral bij<br \/>\n        kleine datasets.<\/li>\n<li>Visual Studio en benchmarking: Tools zoals Visual Studio helpen bij het meten en optimaliseren van<br \/>\n        SIMD-implementaties.<\/li>\n<\/ul>\n<h3>Praktische toepassingen:<\/h3>\n<ul>\n<li>SIMD is krachtig voor wetenschappelijke simulaties, fysische modellen, en geavanceerde wiskundige berekeningen.\n    <\/li>\n<\/ul>\n<h3>Limitaties:<\/h3>\n<ul>\n<li>SIMD werkt goed in sommige scenario&#8217;s, zoals CPU&#8217;s in Azure VM&#8217;s, maar biedt niet altijd voordelen in elke<br \/>\n        omgeving.<\/li>\n<li>Het stroomverbruik kan stijgen door intensieve vectorisatie, wat de CPU-prestaties be\u00efnvloedt.<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241008_112735_d_e_kl.jpg\"\n    alt=\"SIMD, vectorization - what it means and how to do it in .NET - J\" \/><\/p>\n<h2>&#8220;EQ in Tech&#8221; door Amber Vanderburg<\/h2>\n<p>Deze sessie draait om het ontwikkelen van emotionele intelligentie (EQ) in de technologiesector en hoe dit invloed<br \/>\n    heeft op samenwerking, leiderschap en persoonlijke groei.<\/p>\n<h3>Belangrijke punten:<\/h3>\n<ul>\n<li>EQ als spier: Emotionele intelligentie is een vaardigheid die je kunt ontwikkelen, net zoals een spier.<\/li>\n<li>Waarden en zelfbewustzijn: Het begrijpen van je kernwaarden is cruciaal voor het reguleren van emoties.<\/li>\n<li>Zelfreflectie en zelfpraat: Positieve zelfpraat helpt bij het herstructureren van negatieve ervaringen en<br \/>\n        emoties.<\/li>\n<li>Empathisch luisteren: Actief luisteren met aandacht voor intentie en emotie is essentieel.<\/li>\n<li>Pauzeren voor inzicht: Pauzes tijdens gesprekken zijn krachtig en verminderen misverstanden.<\/li>\n<\/ul>\n<h3>Praktische strategie\u00ebn:<\/h3>\n<ul>\n<li>Zelfbewustzijn ontwikkelen: Herken je triggers en leer hoe je erop reageert.<\/li>\n<li>Grenzen stellen: Het is belangrijk om gezonde grenzen te stellen in relaties.<\/li>\n<li>Modelleer positieve EQ: Inspireer anderen door zelf een voorbeeld te zijn van goede EQ.<\/li>\n<\/ul>\n<p>De sessie benadrukt dat het ontwikkelen van emotionele intelligentie niet alleen je werkprestaties verbetert, maar ook<br \/>\neen positieve invloed heeft op de samenwerking en de algehele sfeer binnen teams.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241008_133018_d_e_kl.jpg\"\n    alt=\"EQ in Tech - Amber Vanderburg\" \/><\/p>\n<h2>&#8220;Multitenancy in ASP.NET Core: Challenges and Approaches&#8221; door Marco De Sanctis<\/h2>\n<p>Deze sessie richt zich op de uitdagingen en benaderingen van het implementeren van multitenancy in ASP.NET Core, met<br \/>\n    een focus op SaaS-platforms en het beheren van verschillende huurders.<\/p>\n<h3>Belangrijke uitdagingen:<\/h3>\n<ul>\n<li>Data-isolatie: Het scheiden van gegevens tussen verschillende huurders is cruciaal.<\/li>\n<li>Kosten en complexiteit: Het beheren van meerdere databases of schema&#8217;s voor verschillende huurders kan<br \/>\n        operationeel complex en kostbaar zijn.<\/li>\n<li>Custom domains: Bedrijven kunnen hun eigen domeinen gebruiken voor toegang tot het platform.<\/li>\n<li>SSO (Single Sign-On): Bedrijven willen hun bestaande identiteitsproviders gebruiken om SSO te implementeren.\n    <\/li>\n<\/ul>\n<h3>Oplossingen:<\/h3>\n<ol>\n<li>Data-isolatiestrategie\u00ebn:<\/li>\n<ul>\n<li>Gescheiden databases: Elke tenant heeft zijn eigen database, wat volledige isolatie biedt maar operationele<br \/>\n            overhead veroorzaakt.<\/li>\n<li>Gescheiden schema&#8217;s: Een enkele database met verschillende schema&#8217;s voor elke tenant, wat minder overhead<br \/>\n            heeft dan aparte databases, maar nog steeds isolatie biedt.<\/li>\n<li>Discriminatiekolommen: Een enkele database met een &#8220;company ID&#8221; om gegevens van verschillende huurders te<br \/>\n            filteren. Dit kan worden gecombineerd met SQL Server&#8217;s Row-Level Security om toegang per tenant te regelen.\n        <\/li>\n<\/ul>\n<li>Enterprise SSO: Gebruik van identiteitsproviders zoals Azure AD B2C of Auth0 om SSO mogelijk te maken, waarbij<br \/>\n        elke tenant zijn eigen login-stroom kan hebben. Configuraties zoals client ID, client secret, en metadata URL&#8217;s<br \/>\n        worden beheerd voor elke tenant.<\/li>\n<li> Domeinbeheer: Door DNS-zones en aangepaste domeinen in Azure App Services op te zetten, kan elk bedrijf een<br \/>\n        eigen domein hebben waarmee het toegang krijgt tot het platform.<\/li>\n<li> Toegang en beveiliging: Het gebruik van token-gebaseerde beveiliging (bijv. JWT-tokens verrijkt met claims)<br \/>\n        zorgt ervoor dat de toegang goed wordt beheerd en kan worden aangepast voor specifieke tenants.<\/li>\n<\/ol>\n<p>Deze sessie geeft inzicht in verschillende multitenancy-strategie\u00ebn en hoe je ervoor kunt zorgen dat SaaS-platforms<br \/>\nschaalbaar en veilig blijven, terwijl ze voldoen aan de behoeften van verschillende bedrijven (tenants).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"337\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241008_150814_d_e_kl.jpg\"\n    alt=\"Multitenancy in ASP.NET Core, challenges and approaches - Marco\" \/><\/p>\n<h2>&#8220;Making the Web More Accessible for Everyone&#8221; door Jarne Van Aerde:<\/h2>\n<p>Jarne begon de sessie met een voorbeeld van zijn oma die moeite had met het lezen van kleinere tekst op websites, wat<br \/>\nhet belang van toegankelijke webontwerpen benadrukte. Kleine verbeteringen kunnen een groot verschil maken voor<br \/>\ngebruikers met beperkingen.<br \/>\nKernpunten van toegankelijkheid (A11y):<\/p>\n<ul>\n<li>Toegankelijkheid is nuttig voor iedereen, maar essentieel voor sommigen: Slechte toegang kan vari\u00ebren van<br \/>\n        tijdelijke situaties (zoals fel zonlicht op een scherm) tot permanente beperkingen (bijv. slechtziendheid).<\/p>\n<li> Microsoft\u2019s inclusieve ontwerpbenadering: Dit betekent dat ontwerp moet voorzien in een breed scala aan<br \/>\n        gebruikersbehoeften, van visuele, auditieve, motorische en cognitieve beperkingen.\n<\/ul>\n<h3>Regels en richtlijnen:<\/h3>\n<ul>\n<li> WCAG 2.0 (Web Content Accessibility Guidelines): Deze richtlijnen helpen ontwikkelaars websites toegankelijker<br \/>\n        te maken. Ze bestaan uit drie niveaus van naleving: A (essentieel), AA (gewenst) en AAA (optioneel).<\/li>\n<li>Semantiek en ARIA (Accessible Rich Internet Applications): Semantisch correcte HTML-tags en ARIA-labels zijn<br \/>\n        essentieel om extra context aan schermlezers te geven. Het gebruik van correcte elementen, zoals een<br \/>\n        &lt;button&gt; in plaats van een &lt;div&gt;, kan de toegankelijkheid verbeteren.<\/li>\n<\/ul>\n<h3>Demo\u2019s en implementatie:<\/h3>\n<ul>\n<li>Voorbeelden van slechte semantiek: Het gebruik van onjuiste HTML-tags zoals een &lt;div&gt; voor een knop of<br \/>\n        link kan navigatie en gebruik met schermlezers bemoeilijken.<\/li>\n<li> ARIA-labels en -rollen: Deze helpen schermlezers om te begrijpen wat een element doet en geven extra context.<br \/>\n        Bijvoorbeeld, een \u201cvolgende maand\u201d knop in een datumkiezer kan aria-live-attributen gebruiken om veranderingen<br \/>\n        aan te kondigen.<\/li>\n<\/ul>\n<h3>User Experience (UX):<\/h3>\n<ul>\n<li> UX moet toegankelijk zijn voor iedereen: Visuele indicatoren zoals een focusstaat op interactieve elementen,<br \/>\n        voldoende contrast, en het gebruik van de escape-toets om modals te sluiten zijn essentieel.<\/li>\n<li> Visuele en toetsenbordnavigatie: Het is belangrijk om interactieve elementen goed zichtbaar te maken voor<br \/>\n        mensen die alleen een toetsenbord gebruiken.<\/li>\n<\/ul>\n<h3>Testen en toekomst:<\/h3>\n<ul>\n<li>Testen van toegankelijkheid: Handmatige tests met schermlezers (zoals JAWS, NVDA en VoiceOver) zijn belangrijk,<br \/>\n        maar er zijn ook automatische tools zoals Lighthouse en Accessibility Insights die basisfouten opsporen.<\/li>\n<li>Toekomst van toegankelijkheid: Hoewel AI kan helpen bij sommige taken zoals het genereren van<br \/>\n        audio-beschrijvingen, kunnen complexe toegankelijkheidsproblemen nog niet volledig worden opgelost door AI.<\/li>\n<\/ul>\n<p>Conclusie: Toegankelijkheid begint met kleine stappen, zoals semantiek verbeteren en contrast verhogen. Het vraagt om<br \/>\nvoortdurende inspanning en testing om websites voor iedereen bruikbaar te maken.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241008_160430_d_e_kl.jpg\"\n    alt=\"Making the web more accessible for everyone - Jarne Van Aerde\" \/><\/p>\n<h2>&#8220;C# Language Internals &#8211; 25th Anniversary&#8221; door Bart De Smet:<\/h2>\n<p>Deze sessie besprak de interne ontwikkelingen en evoluties van de C#-taal gedurende de afgelopen 25 jaar. Bart De Smet<br \/>\nbelichtte verschillende versies van C# en de nieuwe functies die elk heeft ge\u00efntroduceerd, evenals de uitdagingen en<br \/>\noplossingen die deze verbeteringen met zich meebrachten.<\/p>\n<h3>Kernpunten van de sessie:<\/h3>\n<ol>\n<li> Async Streams en State Machines:<\/li>\n<ul>\n<li>De sessie begon met een bespreking van async streams en asynchrone enumeratie, waarbij state machines een<br \/>\n            cruciale rol spelen bij het verwerken van asynchrone methoden. <\/li>\n<li> De rol van custom task builders en hoe deze helpen bij het effici\u00ebnt beheren van async workflows kwam ook<br \/>\n            aan bod. Het concept van boxing (het omzetten van een value type naar een object) werd besproken, wat<br \/>\n            prestaties kan be\u00efnvloeden. <\/li>\n<\/ul>\n<li> C# 9 en 10 Functies:<\/li>\n<ul>\n<li> C# 9:<\/li>\n<ul>\n<li> Covariant return types: Dit maakt het mogelijk om in een afgeleide klasse een sterkere return type te<br \/>\n                gebruiken dan in de basis klasse, wat handig is voor complexere overerving.<\/li>\n<li> Record types: Deze bieden een elegante manier om immutable types te cre\u00ebren zonder veel boilerplate<br \/>\n                code. Functies zoals automatische constructors, ToString, en Equals worden hierbij gratis meegeleverd.\n            <\/li>\n<\/ul>\n<li> C# 10:<\/li>\n<ul>\n<li> Async method builders en het gebruik van custom task builders werden verder toegelicht.<\/li>\n<\/ul>\n<\/ul>\n<li> C# 11 en 12 Functies:<\/li>\n<ul>\n<li> C# 11: Introduceerde het concept van required members, waarbij bepaalde eigenschappen verplicht moeten<br \/>\n            worden ingesteld, wat nuttig kan zijn bij het afdwingen van consistentie in object-initialisatie.<\/li>\n<li> C# 12: Besprak verbeteringen aan lambda-expressies, zoals het omkeren van return types en het ondersteunen<br \/>\n            van meer flexibele aanroepen, die het werken met delegate types eenvoudiger maken.<\/li>\n<\/ul>\n<\/ol>\n<p>De sessie gaf een goed overzicht van hoe de C#-taal zich heeft ontwikkeld, met focus op effici\u00ebntie, flexibiliteit, en<br \/>\nleesbaarheid van code.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241008_181617_d_e_kl.jpg\"\n    alt=\"C# Language Internals - 25th Anniversary - Bart De Smet\" \/><\/p>\n<h2>&#8220;A Season for Speed: Turning Puzzles into C# Performance Wins&#8221; door Micha\u00ebl Hompus<\/h2>\n<p>In deze sessie bespreekt Micha\u00ebl Hompus hoe je de prestaties van C#-code kunt verbeteren door het oplossen van<br \/>\n    puzzels, gebaseerd op zijn ervaring met de Advent of Code-uitdaging. Deze puzzels bieden een platform om te<br \/>\n    experimenteren met optimalisaties en verschillende technieken in C# voor betere performance.<\/p>\n<h3>Belangrijkste punten:<\/h3>\n<ol>\n<li>Advent of Code:\n<ul>\n<li>Een jaarlijks programmeerevenement gedurende 25 dagen voor Kerstmis. Elke dag komt een nieuwe puzzel met<br \/>\n                unieke input en twee delen die de deelnemers proberen op te lossen.<\/li>\n<li>Micha\u00ebl gebruikte C# om deze puzzels op te lossen en verbeterde de prestaties van zijn oplossingen door<br \/>\n                benchmarks te gebruiken.<\/li>\n<\/ul>\n<\/li>\n<li>Performance meten:\n<ul>\n<li>Stopwatch bleek niet nauwkeurig genoeg om op microsecondenniveau te meten. Daarom werd BenchmarkDotNet<br \/>\n                gebruikt voor gedetailleerdere prestatiemetingen.<\/li>\n<li>Het optimaliseren van code kan eenvoudig starten met het vervangen van LINQ met andere methoden zoals<br \/>\n                for-loops, omdat LINQ soms trager is door het gebruik van abstracties.<\/li>\n<\/ul>\n<\/li>\n<li>Optimalisatietechnieken:\n<ul>\n<li>Micha\u00ebl toonde aan hoe simd en vector optimalisaties prestaties tot 25% kunnen verbeteren.<\/li>\n<li>Door gebruik te maken van while-loops in plaats van for-loops werd nog meer snelheid gewonnen, met name<br \/>\n                voor CPU-intensieve taken.<\/li>\n<li>Goto-statements kunnen soms nuttig zijn om snel uit een lus te springen, maar moeten voorzichtig worden<br \/>\n                gebruikt.<\/li>\n<\/ul>\n<\/li>\n<li>Geavanceerde optimalisaties:\n<ul>\n<li>Pointer-gebaseerde oplossingen en het gebruik van Unsafe code kunnen soms prestaties verbeteren, hoewel<br \/>\n                ze riskant zijn door hun complexiteit en potentieel gevaarlijke gevolgen.<\/li>\n<li>Bit-array optimalisatie: Door geheugen op een effici\u00ebntere manier te gebruiken met bitarrays, kan je<br \/>\n                grote prestatieverbeteringen realiseren, vooral bij herhalende bewerkingen.<\/li>\n<\/ul>\n<\/li>\n<li>Praktische voorbeelden:\n<ul>\n<li>Gebruik van <code>Span&lt;T&gt;<\/code> voor beter geheugenbeheer.<\/li>\n<li>Het vermijden van overbodige initialisaties en optimaliseren van char-verwerking.<\/li>\n<li>Geoptimaliseerde algoritmes zoals Dijkstra&#8217;s algoritme kunnen significant sneller zijn, vooral bij<br \/>\n                specifieke input.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Conclusie: Het is cruciaal om altijd je code te meten om de impact van je optimalisaties te bepalen. Soms kunnen<br \/>\n    kleine aanpassingen grote prestatieverbeteringen opleveren, maar te veel optimaliseren kan ook leiden tot<br \/>\n    complexiteit zonder veel extra winst.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241009_092639_d_e_kl.jpg\"\n    alt=\"A Season for Speed, Turning Puzzles into C# Performance Wins - M\" \/><\/p>\n<h2>&#8220;DDD&#8217;s Application Building Blocks&#8221; door Steve Smith<\/h2>\n<p>In deze sessie legt Steve Smith de basisprincipes van Domain-Driven Design (DDD) uit, ge\u00efnspireerd door Eric Evans&#8217;<br \/>\n    werk, en hoe het helpt bij het aanpakken van complexiteit in softwareontwikkeling. De focus ligt op het organiseren<br \/>\n    van code in blokken die overeenkomen met domeinen en contexten binnen een applicatie om complexiteit beheersbaar te<br \/>\n    houden.<\/p>\n<h3>Belangrijkste concepten:<\/h3>\n<ol>\n<li>Complexiteit verminderen:\n<ul>\n<li>Softwareontwikkelaars kunnen maar een beperkt aantal dingen tegelijk in hun hoofd houden (5-7 items),<br \/>\n                waardoor het essentieel is om problemen in kleinere stukjes te verdelen.<\/li>\n<li>DDD biedt bouwblokken die helpen om dit te organiseren door het domein en de oplossingsruimte op te<br \/>\n                splitsen in verschillende contexten.<\/li>\n<\/ul>\n<\/li>\n<li>Domeinen en Bounded Contexts:\n<ul>\n<li>Het domein is de probleemruimte; het bevat de kernactiviteiten en subdomeinen van een organisatie.<\/li>\n<li>Bounded Context is de oplossingsruimte; het is een afgebakende scope waarin bepaalde domeinconcepten<br \/>\n                gelden. Binnen deze context worden concepten en modellen expliciet gedefinieerd en ge\u00efsoleerd om<br \/>\n                conflicten te vermijden.<\/li>\n<li>Overlapping van contexten moet worden voorkomen omdat dit tot complexiteit en miscommunicatie kan<br \/>\n                leiden.<\/li>\n<\/ul>\n<\/li>\n<li>Encapsulatie en grenzen:\n<ul>\n<li>Encapsulatie binnen bounded contexts zorgt ervoor dat de interne implementatie priv\u00e9 blijft, en dat<br \/>\n                alleen een publieke interface beschikbaar is voor interactie.<\/li>\n<li>API\u2019s en contracten (zoals DTO&#8217;s) fungeren als publieke interfaces voor communicatie tussen<br \/>\n                verschillende contexten.<\/li>\n<\/ul>\n<\/li>\n<li>Aggregaten en entiteiten:\n<ul>\n<li>Aggregates zijn objecten die samenhangen en die een consistente reeks regels of invarianties afdwingen.<br \/>\n                Ze voorkomen dat geldige staten van het systeem worden geschonden, zoals het maximum aantal lijnitems in<br \/>\n                een order.<\/li>\n<li>Entities zijn objecten met een unieke identiteit binnen de bounded context. Ze encapsuleren regels en<br \/>\n                logica en zorgen ervoor dat bepaalde voorwaarden worden afgedwongen, zoals positieve hoeveelheden voor<br \/>\n                orderlijnen.<\/li>\n<\/ul>\n<\/li>\n<li>Value Objects:\n<ul>\n<li>Value Objects zijn objecten die geen identiteit hebben en alleen worden vergeleken op basis van hun<br \/>\n                waarden. Ze zijn immutabel en worden vaak gebruikt om complexe types op een duidelijke en veilige manier<br \/>\n                te modelleren.<\/li>\n<li>Ze voorkomen het bestaan van ongeldige staten in het systeem, doordat ze vanaf het moment van creatie<br \/>\n                correct zijn gedefinieerd en niet gewijzigd kunnen worden.<\/li>\n<\/ul>\n<\/li>\n<li>Primitive Obsession en validatie:\n<ul>\n<li>Primitive Obsession is een code-smell waarbij basistypes zoals int of string te veel worden gebruikt<br \/>\n                zonder dat er specifieke domeinregels worden afgedwongen. DDD raadt aan om aangepaste types te gebruiken<br \/>\n                die domeinspecifieke validatie en logica encapsuleren.<\/li>\n<\/ul>\n<\/li>\n<li>Modules en microservices:\n<ul>\n<li>Bounded Contexts kunnen worden gemoduleerd in microservices of in een modulaire monoliet, afhankelijk<br \/>\n                van de behoeften. Microservices kunnen echter leiden tot complexiteit en moeten zorgvuldig worden<br \/>\n                gebruikt.<\/li>\n<li>Anti-corruptielagen worden gebruikt om contexten te beschermen tegen ongewenste invloeden van buitenaf<br \/>\n                door het vertalen van externe gegevens naar het interne model.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Conclusie: DDD biedt een reeks patronen en bouwblokken om software op een gestructureerde manier te ontwerpen,<br \/>\n    waardoor complexiteit beheersbaar wordt. Door gebruik te maken van bounded contexts, aggregaten, entiteiten en value<br \/>\n    objects, kunnen ontwikkelaars hun systemen robuuster en onderhoudsvriendelijker maken.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241009_101800_d_e_kl.jpg\"\n    alt=\"DDD&#x27;s Application Building Blocks - Steve Smith\" \/><\/p>\n<h2>Security 101: A Beginner\u2019s Guide to Cybersecurity and Zero Trust for Developers<\/h2>\n<p>In deze sessie gaf Michael Kaufmann een uitgebreide inleiding in cybersecurity en het concept van Zero Trust,<br \/>\n    speciaal gericht op ontwikkelaars. Hij behandelde de basisprincipes van beveiliging, de meest voorkomende<br \/>\n    bedreigingen, en belangrijke best practices voor het beveiligen van applicaties en infrastructuren.<\/p>\n<h3>Kernpunten van de sessie:<\/h3>\n<ol>\n<li>Cybersecurity Basics:\n<ul>\n<li>Cyberaanvallen veroorzaken jaarlijks aanzienlijke financi\u00eble schade.<\/li>\n<li>Het CIA-model (Confidentiality, Integrity, Availability) vormt de kern van beveiliging, met als doel<br \/>\n                ongeautoriseerde toegang te voorkomen en de vertrouwelijkheid, integriteit en beschikbaarheid van<br \/>\n                systemen te waarborgen.<\/li>\n<li>Hackers gebruiken technieken zoals phishing, malware (ransomware, virussen, worms), DoS\/DDOS-aanvallen,<br \/>\n                en SQL-injecties om systemen binnen te dringen.<\/li>\n<\/ul>\n<\/li>\n<li>Phishing en Social Engineering:\n<ul>\n<li>Phishing is een veelvoorkomende aanvalsvector waarbij kwaadwillenden zich voordoen als betrouwbare<br \/>\n                partijen om informatie te stelen. Dit gebeurt vaak via e-mails en websites.<\/li>\n<li>Social engineering speelt in op menselijke zwakheden, waarbij aanvallers bijvoorbeeld informatie<br \/>\n                ontfutselen via misleidende telefoontjes of social media.<\/li>\n<\/ul>\n<\/li>\n<li>Zero Trust Architecture:\n<ul>\n<li>Bij Zero Trust wordt er vanuit gegaan dat elk systeem of elke gebruiker een potenti\u00eble dreiging kan<br \/>\n                zijn. Alles moet dus worden geverifieerd, ongeacht of het zich binnen of buiten het netwerk bevindt.\n            <\/li>\n<li>Kernprincipes zijn: Identity Verification, Least Privilege Access, en Continuous Monitoring. Het doel is<br \/>\n                om segmentatie te cre\u00ebren en alleen de nodige toegang te verlenen.<\/li>\n<\/ul>\n<\/li>\n<li>IAM en MFA:\n<ul>\n<li>Identity and Access Management (IAM) beheert gebruikersidentiteiten en toegang tot systemen, gebaseerd<br \/>\n                op rollen en privileges (Role-Based Access Control &#8211; RBAC).<\/li>\n<li>Multi-Factor Authentication (MFA) biedt een extra beveiligingslaag door het gebruik van meerdere<br \/>\n                verificatiemethoden, zoals wachtwoorden en biometrie.<\/li>\n<\/ul>\n<\/li>\n<li>Encryptie en netwerken:\n<ul>\n<li>Beveiliging op netwerklaag omvat technieken zoals firewalls, VPN&#8217;s, DDoS-bescherming, en encryptie<br \/>\n                (symmetrisch en asymmetrisch).<\/li>\n<li>Encryptie beschermt gegevens door ze onleesbaar te maken voor onbevoegden.<\/li>\n<\/ul>\n<\/li>\n<li>Security Operations en Incident Management:\n<ul>\n<li>Security Information and Event Management (SIEM) en Security Operations Centers (SOC) spelen een<br \/>\n                cruciale rol in het monitoren en reageren op beveiligingsincidenten.<\/li>\n<li>Teams zoals Red Team en Blue Team worden ingezet om aanvallen te simuleren en verdedigingen te<br \/>\n                versterken.<\/li>\n<\/ul>\n<\/li>\n<li>Application Security en SDLC:\n<ul>\n<li>Ontwikkelaars moeten secure by design denken, waarbij beveiliging in elke stap van de<br \/>\n                software-ontwikkelingslevenscyclus (SDLC) is ingebouwd.<\/li>\n<li>Het is essentieel om te werken met inputvalidatie, output encoding, sessiebeheer, en<br \/>\n                afhankelijkheidsbeveiliging.<\/li>\n<\/ul>\n<\/li>\n<li>Testing Tools en Beveiliging van de Software Supply Chain:\n<ul>\n<li>Tools zoals SonarQube, OWASP ZAP, Burp Suite, en Checkmarx helpen bij het identificeren van<br \/>\n                kwetsbaarheden tijdens het ontwikkelen van software (SAST\/DAST).<\/li>\n<li>Dependabot en Anchore helpen bij het beheren van afhankelijkheden en het beveiligen van de supply chain<br \/>\n                door automatische updates en scans.<\/li>\n<\/ul>\n<\/li>\n<li>DevSecOps en Shift Left:\n<ul>\n<li>Shift Left beveelt aan om beveiliging vroeg in de ontwikkelcyclus op te nemen, zodat<br \/>\n                beveiligingsproblemen sneller worden ontdekt en verholpen.<\/li>\n<li>Automatisering in de pipeline is cruciaal voor een veilige DevOps-aanpak.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Conclusie:<\/h3>\n<p>Beveiliging is een continu proces, en Zero Trust en IAM zijn fundamenteel voor een robuuste beveiliging.<br \/>\n    Ontwikkelaars moeten hun applicaties vanaf het begin beveiligen, gebruik maken van geautomatiseerde tools, en op de<br \/>\n    hoogte blijven van de nieuwste bedreigingen en technieken.<\/p>\n<p>Conclusie: Cybersecurity is essentieel voor alle ontwikkelaars, ongeacht hun ervaring. Het implementeren van Zero<br \/>\n    Trust, en het toepassen van basisprincipes zoals het CIA-model en least privilege, helpen bij het beveiligen van<br \/>\n    moderne applicaties en systemen tegen aanvallen.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241009_111824_d_e_kl.jpg\"\n    alt=\"Security 101, A Beginner&#x2019;s Guide to Cybersecurity and Zero Trust\" \/><\/p>\n<h2>Strategies for Influencing your Team\/Organization door Amber Vanderburg<\/h2>\n<p>Amber begon met een oefening om een bloem in de kamer te vinden, wat diende als metafoor voor het herkennen van<br \/>\n    invloed en relaties in ons dagelijks werk en persoonlijke leven. Ze benadrukte dat relaties en invloed belangrijk<br \/>\n    zijn om te begrijpen, omdat we vaak mogelijkheden missen door niet actief te be\u00efnvloeden of te investeren in<br \/>\n    relaties.<\/p>\n<h3>Kernpunten:<\/h3>\n<ol>\n<li>Systeem 1- en Systeem 2-denken (Kahneman):\n<ul>\n<li>Systeem 1 is snel, intu\u00eftief en foutgevoelig. Dit type denken wordt gebruikt voor snelle beslissingen,<br \/>\n                zoals kleine wijzigingen in UI\/UX of bugfixes.<\/li>\n<li>Systeem 2 is langzamer en bewuster, gebruikt voor complexe beslissingen en grondige analyses, zoals het<br \/>\n                aanpakken van complexe problemen in een project.<\/li>\n<\/ul>\n<\/li>\n<li>Invloed uitoefenen:\n<ul>\n<li>Invloed is niet alleen gebaseerd op expertise, maar ook op relaties en vertrouwen. Bouw sterke relaties<br \/>\n                door eerlijk te zijn, respect te tonen en consistent te handelen.<\/li>\n<li>Identificeer wie je moet be\u00efnvloeden (bijvoorbeeld een product owner of belangrijke stakeholders), en<br \/>\n                bedenk wat voor hen belangrijk is.<\/li>\n<li>Gebruik mentale shortcuts (heuristieken) om snel invloed te krijgen, zoals door vertrouwen op te bouwen<br \/>\n                en sterke eerste indrukken te maken.<\/li>\n<\/ul>\n<\/li>\n<li>Systeem 1-acties voor snelle invloed:\n<ul>\n<li>Kleine, snel uitvoerbare acties, zoals bugfixes of het veranderen van een kleurschema, kunnen snel<br \/>\n                invloed hebben.<\/li>\n<li>Focus op eenvoudige idee\u00ebn en presenteer ze op een manier die cognitief gemakkelijk te verwerken is.\n            <\/li>\n<\/ul>\n<\/li>\n<li>Systeem 2-acties voor langdurige invloed:\n<ul>\n<li>Voor complexe beslissingen is een meer doordachte, op data gebaseerde aanpak nodig. Hier is het<br \/>\n                belangrijk om risico\u2019s in kaart te brengen, opties af te wegen, en feedback te verzamelen.<\/li>\n<li>Het is cruciaal om fouten te erkennen en te leren van feedback.<\/li>\n<\/ul>\n<\/li>\n<li>Framing en communicatie:\n<ul>\n<li>Gebruik positieve framing om je idee\u00ebn te presenteren. Begin met &#8220;Waarom&#8221;, dan &#8220;Hoe&#8221;, en eindig met<br \/>\n                &#8220;Wat&#8221; (Golden Circle van Simon Sinek).<\/li>\n<li>Benadruk voordelen en resultaten in plaats van alleen functies, zodat je verhaal relevant en overtuigend<br \/>\n                is.<\/li>\n<\/ul>\n<\/li>\n<li>Building Trust:\n<ul>\n<li>Vertrouwen is essentieel voor invloed. Dit kan worden bereikt door consistent eerlijk te zijn, respect<br \/>\n                te tonen en verantwoording af te leggen. Laat zien dat je de belangen van je collega&#8217;s en stakeholders<br \/>\n                serieus neemt.<\/li>\n<\/ul>\n<\/li>\n<li>Heuristieken en cognitieve biases:\n<ul>\n<li>Maak gebruik van beschikbaarheidsbias (recente gebeurtenissen worden zwaarder gewogen) en andere<br \/>\n                cognitieve biases om je argumenten effectiever te maken. Verbind complexe concepten aan concrete,<br \/>\n                herkenbare voorbeelden.<\/li>\n<\/ul>\n<\/li>\n<li>Invloed vergroten met storytelling:\n<ul>\n<li>Verhalen zijn krachtige tools om invloed te vergroten, vooral wanneer je complexe of technische idee\u00ebn<br \/>\n                moet overbrengen naar een niet-technisch publiek. Gebruik relatable analogie\u00ebn en voorbeelden.<\/li>\n<\/ul>\n<\/li>\n<li>Stap-voor-stap aanpak:\n<ul>\n<li>Breek grote doelen op in kleinere, haalbare stappen. Dit maakt het gemakkelijker voor anderen om in te<br \/>\n                stemmen met jouw plannen en voorkomt dat ze zich overweldigd voelen.<\/li>\n<\/ul>\n<\/li>\n<li>Cultureel bewustzijn en reflectie:\n<ul>\n<li>Wees je bewust van culturele verschillen binnen teams en bedrijven, en pas je communicatie en<br \/>\n                be\u00efnvloedingsstrategie\u00ebn hierop aan. Ruimte geven voor reflectie en dialoog kan helpen om een meer<br \/>\n                inclusieve besluitvorming te stimuleren.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Amber sloot af met het belang van zowel groot durven dromen als samenwerken om die dromen te verwezenlijken. Door<br \/>\n    invloed stap voor stap te bouwen en relaties te versterken, kun je zowel in systeem 1 als systeem 2 een effectieve<br \/>\n    leider zijn.<\/p>\n<h3>Belangrijke boodschap:<\/h3>\n<p>Begin klein, bouw vertrouwen, en gebruik invloed om je team en stakeholders mee te krijgen in jouw visie.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241009_133502_d_e_kl.jpg\"\n    alt=\"Strategies for Influencing your Team\/Organization - Amber Vander\" \/><\/p>\n<h2>Getting started with Ethical Hacking door Christian Peeters<\/h2>\n<p>Deze sessie, gericht op ontwikkelaars die training geven, behandelt verschillende aspecten van hacking en<br \/>\n    beveiliging, met een nadruk op kwetsbaarheden, sociale engineering en best practices om systemen te beveiligen.<\/p>\n<h3>Kernpunten:<\/h3>\n<ol>\n<li>Hacking en kwetsbaarheden:\n<ul>\n<li>Hacking omvat het exploiteren van kwetsbaarheden in systemen om toegang te krijgen en deze toegang te<br \/>\n                behouden. Hackers gebruiken technieken zoals het scannen van netwerken en het identificeren van open<br \/>\n                poorten om binnen te dringen.<\/li>\n<li>Een typisch hackproces bestaat uit vijf stappen: toegang krijgen, toegang behouden, sporen wissen, en<br \/>\n                het verbergen van de aanwezigheid binnen een systeem.<\/li>\n<\/ul>\n<\/li>\n<li>Sociale engineering:\n<ul>\n<li>Sociale engineering is een belangrijke methode die hackers gebruiken om informatie van mensen te<br \/>\n                verkrijgen. Dit kan vari\u00ebren van phishing-e-mails tot het bellen van medewerkers en zich voordoen als<br \/>\n                een leidinggevende.<\/li>\n<li>Voorbeelden werden gegeven van phishing-aanvallen waarbij een hacker zich voordoet als een CEO, wat<br \/>\n                resulteerde in aanzienlijke financi\u00eble verliezen voor bedrijven.<\/li>\n<\/ul>\n<\/li>\n<li>WiFi-veiligheid:\n<ul>\n<li>Onbeveiligde netwerken (zoals open WiFi-netwerken) zijn een gemakkelijke toegangspoort voor hackers.<br \/>\n                Encryptiemethoden zoals WEP en WPA moeten zorgvuldig worden gebruikt.<\/li>\n<li>Hackers kunnen technieken gebruiken zoals Wireshark om netwerkverkeer te monitoren of<br \/>\n                Pineapple-apparaten om onveilige netwerken te cre\u00ebren en gegevens te onderscheppen.<\/li>\n<\/ul>\n<\/li>\n<li>Kwetsbaarheden in software:\n<ul>\n<li>De presentatie verwijst naar de OWASP Top 10, die veelvoorkomende kwetsbaarheden in webapplicaties<br \/>\n                identificeert, zoals:<\/p>\n<ul>\n<li>Broken access controls<\/li>\n<li>Onveilige configuraties<\/li>\n<li>SQL-injecties (bijv. 1=1)<\/li>\n<li>Cross-Site Scripting (XSS)<\/li>\n<\/ul>\n<\/li>\n<li>Het belang van het bijhouden van updates voor softwarepakketten en libraries (zoals npm en NuGet) werd<br \/>\n                benadrukt, evenals het gebruik van CVE-lijsten (Common Vulnerabilities and Exposures).<\/li>\n<\/ul>\n<\/li>\n<li>Beveiligingstools:\n<ul>\n<li>Er werd een overzicht gegeven van verschillende beveiligingstools, waaronder:\n<ul>\n<li>Burp Suite en OWASP ZAP voor webapplicatietests<\/li>\n<li>Metasploit voor penetratietests<\/li>\n<li>Hydra voor brute-force-aanvallen<\/li>\n<li>DVWA (Damn Vulnerable Web Application) en WebGoat voor training in beveiligingskwetsbaarheden\n                    <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Best practices voor beveiliging:\n<ul>\n<li>Het belang van &#8220;patchen&#8221; (het regelmatig bijwerken van software om kwetsbaarheden te verhelpen) en het<br \/>\n                verkrijgen van schriftelijke toestemming voor penetratietests werd benadrukt.<\/li>\n<li>Gebruik maken van beveiligingsprotocollen en -standaarden om systemen te beschermen tegen aanvallen.\n            <\/li>\n<\/ul>\n<\/li>\n<li>Vertrouwen en kwetsbaarheid:\n<ul>\n<li>De spreker benadrukte dat je niemand moet vertrouwen, en dat het cruciaal is om voorzichtig om te gaan<br \/>\n                met gevoelige informatie, zowel in softwareontwikkeling als in persoonlijke interacties.<\/li>\n<li>Een sterk beveiligingsbeleid en een cultuur van waakzaamheid zijn essentieel om aanvallen te voorkomen.\n            <\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Belangrijke boodschap:<\/h3>\n<p>De sessie benadrukte dat het van vitaal belang is voor ontwikkelaars om niet alleen bewust te zijn van de<br \/>\n    technologische aspecten van beveiliging, maar ook van de menselijke factor. Training en bewustwording van sociale<br \/>\n    engineeringtechnieken zijn cruciaal om te voorkomen dat individuen en organisaties slachtoffer worden van aanvallen.\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.qdraw.nl\/log\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzi\/500\/20241009_151933_d_e_kl.jpg\"\n    alt=\"Getting started with Ethical Hacking - Christian Peeters\" \/><\/p>\n<h2>Cypress, Playwright or Selenium: choosing the right testing tool<\/h2>\n<p>Deze sessie richtte zich op verschillende soorten testen in softwareontwikkeling, met een specifieke focus op<br \/>\n    end-to-end (E2E) testing en de tools die beschikbaar zijn voor geautomatiseerd testen.<\/p>\n<h3>Kernpunten:<\/h3>\n<ol>\n<li>Houding ten opzichte van testen:\n<ul>\n<li>De spreker gaf aan dat ze niet van testen houden, mogelijk door eerdere negatieve ervaringen of<br \/>\n                trauma&#8217;s.<\/li>\n<li>Ondanks deze gevoelens is het belangrijk om verschillende soorten testen te verkennen om de kwaliteit<br \/>\n                van de software te waarborgen.<\/li>\n<\/ul>\n<\/li>\n<li>Soorten testen:\n<ul>\n<li>Functionele en prestatie testen: Essentieel om ervoor te zorgen dat de software correct functioneert en<br \/>\n                voldoet aan de prestatienormen.<\/li>\n<li>Automated UI Testing: Dit omvat het testen van de gebruikersinterface om ervoor te zorgen dat deze<br \/>\n                functioneel is na wijzigingen in de code (regressietests).<\/li>\n<li>End-to-End Testing: Dit type testen simuleert echte gebruikersinteracties met de applicatie en<br \/>\n                controleert of alle componenten goed samenwerken.<\/li>\n<\/ul>\n<\/li>\n<li>Testtools:\n<ul>\n<li>Selenium: Ge\u00efntroduceerd in 2004 door Jason Huggins, het is een van de meest populaire open-source<br \/>\n                testtools. Selenium WebDriver kan verschillende browsers aansturen en ondersteunt meerdere<br \/>\n                programmeertalen. Het heeft een grote community, maar heeft enkele nadelen zoals trage uitvoering, flaky<br \/>\n                tests, en complexe configuratie.<\/li>\n<li>Cypress: Gelanceerd in 2014, is Cypress een moderne testtool die speciaal is ontworpen voor<br \/>\n                JavaScript-ontwikkelaars. Het biedt een uitstekende gebruikerservaring door automatisch te wachten op<br \/>\n                elementen en duidelijke foutmeldingen te geven. Nadelen zijn onder andere de noodzaak van extra plug-ins<br \/>\n                voor sommige functionaliteiten en beperkte browserondersteuning.<\/li>\n<li>Playwright: Ge\u00efntroduceerd in 2019, is Playwright ontwikkeld door de makers van Puppeteer en ondersteunt<br \/>\n                meerdere browsers, inclusief headless browsers en mobiele applicaties. Het heeft een groeiende<br \/>\n                populariteit, maar wordt soms als complexer en minder intu\u00eftief ervaren, met een kleinere community.\n            <\/li>\n<\/ul>\n<\/li>\n<li>Vergelijking van tools:\n<ul>\n<li>Cypress vs. Selenium: Cypress biedt een betere ontwikkelaarservaring, maar is beperkt tot JavaScript,<br \/>\n                terwijl Selenium veelzijdiger is maar een complexere setup vereist.<\/li>\n<li>Playwright vs. Cypress: Playwright biedt ondersteuning voor meer browsers en heeft mogelijkheden voor<br \/>\n                mobile testing, maar de API is complexer en minder gebruiksvriendelijk.<\/li>\n<\/ul>\n<\/li>\n<li>Conclusie:\n<ul>\n<li>Cypress en Playwright zijn beide populaire keuzes voor E2E testing, met een groeiende acceptatie in de<br \/>\n                softwaregemeenschap. Hun gebruik zal waarschijnlijk toenemen naarmate de vraag naar geautomatiseerd<br \/>\n                testen blijft stijgen.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Belangrijke boodschap:<\/h3>\n<p>Het is cruciaal voor ontwikkelaars om de juiste testtools te kiezen die aansluiten bij hun specifieke behoeften en de<br \/>\n    technologie\u00ebn die ze gebruiken. Het gebruik van de juiste tools kan de kwaliteit van de software aanzienlijk<br \/>\n    verbeteren en bijdragen aan een betere gebruikerservaring.<\/p>\n<h2>Conclusie van deze blog<\/h2>\n<p>Deze blog biedt een overzicht van diverse sessies die elk belangrijke inzichten delen over onderwerpen vari\u00ebrend van<br \/>\nethisch hacken en multitenancy tot emotionele intelligentie en prestatieoptimalisatie in C#. De rode draad door alle<br \/>\nsessies is het belang van bewustwording en strategie, zowel op technisch vlak als in persoonlijke groei en samenwerking.<\/p>\n","protected":false},"excerpt":{"rendered":"Op Techorama 2024 werden inzichten gedeeld over actuele thema&#8217;s binnen de IT en softwareontwikkeling. Deze blog is geschreven voor IT professionals. In dit blog bespreken we enkele hoogtepunten, waaronder Micha\u00ebl Hompus&#8217; performance-optimalisaties in C#, Steve Smith&#8217;s toepassing van Domain-Driven Design (DDD) om complexiteit te verminderen, en Michael Kaufmann&#8217;s uitleg over cybersecurity en Zero Trust voor&#8230; <a class=\"view-article\" href=\"https:\/\/qdraw.nl\/blog\/technologie\/techorama-2024-van-domain-driven-design-tot-cybersecurity-it-inzichten-die-je-niet-wilt-missen\/\">Bekijk artikel<\/a>","protected":false},"author":2,"featured_media":8914,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[624],"tags":[2841,2252,2761,2972,2598],"class_list":["post-8891","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie","tag-net","tag-cms","tag-code","tag-conference","tag-utrecht"],"_links":{"self":[{"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/posts\/8891","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=8891"}],"version-history":[{"count":0,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/posts\/8891\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/media\/8914"}],"wp:attachment":[{"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/media?parent=8891"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/categories?post=8891"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qdraw.nl\/blog\/wp-json\/wp\/v2\/tags?post=8891"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}