.NET Rocks - podcast 261 tot en met 270

Ingediend door Dirk Hornstra op 18-mar-2025 20:39

Als je zelf de podcasts van .NET Rocks wilt beluisteren, die zijn hier te vinden: https://dotnetrocks.com/

Let op: dit zijn oude afleveringen over .NET 3.5. De meeste zaken zullen dus redelijk verouderd zijn. Laten we het erop houden dat je de afleveringen kunt overslaan en als er een echt interessante uitzending is, dan noem ik dat expliciet.

PC 261: In deze uitzending is Phil Haack te gast. Hij heeft een cool blog dat redelijk actief wordt bijgewerkt: haacked.com. Richard is hem ooit online tegengekomen door zijn blogpost: "19 Eponymous Laws Of Software Development". Die blogpost is inderdaad de moeite van doorlezen waard! Phil is een open-source man, je had het open-source project .Text waaarvan de toekomst onzeker was. Omdat hij zelf sites had opgezet met dit product, hij zelf een consultancy-bedrijf o.i.d. wilde gaan oprichten, heeft hij een fork gemaakt en dat SubText genoemd.  Het project is op Github te vinden en in 2018 gearchiveerd. Het lijkt erop dat het niet meer actief wordt gebruikt. Wel mooi dat het op deze manier beschikbaar blijft! Een ander project van Phil was koders.com, waarbij referenties naar open-source projecten beschikbaar werden gemaakt (bijvoorbeeld codeplex projecten), in de uitzending horen we hoe Carl zijn waardering hierover uitspreekt omdat je makkelijk door de source kunt bladeren en zoeken. Phil geeft aan dat op een nieuwe computer hij op die manier snel zoekt in zijn SubText code, dat gaat sneller dan via Tortoise de code uit te checken en daarin te gaan zoeken.

PC 262: In deze uitzending spreekt David Hayden over de Enterprise Library. David zijn eigen site is davidhayden.com, maar die toont momenteel alleen een IIS pagina. Ook via archive.org niet terug te vinden, want ik zie een melding die ik nog nooit heb gezien: deze site is "excluded". Ook had hij een andere site, pnpguidance.net die niet meer online is,maar via die link nog wel op archive.org te bekijken is. Spijtig, want "patterns and practises" zijn volgens mij van alle tijden. In ieder geval, in deze uitzending gaat het over de Enterprise Library, versie 3.0. Met versie 1.0 gestart, versie 2.0 was een zware kluif en bevatte voornamelijk fixes op code van versie 1. In versie 3.0 zijn verschillende code-blocks beschikbaar. Nieuwe code-bloks zijn die voor een software factory en policy injection. In deze uitzending bespreekt David deze onderdelen en ook nog andere zaken, zoals logging en data-access (ondersteuning voor transacties). Hier wordt ook genoemd dat vaak business-logica en error-afhandeling/logging vaak door elkaar heen lopen en ik kan dat bevestigen. Door dat op een declaratieve manier (bijvoorbeeld via attributen en configuratie) in te regelen kun je jouw code "cleaner" maken. Ik moet me hier nog eens verder in verdiepen, want dat is wel iets waar ik wat meer mee wil doen. Ik ken de Enterprise Library uit mijn Coolminds (Creative Industries?) tijd toen volgens mij mijn collega's Peter Kiers/Klaas Jan Stellema dit introduceerden. Als ik me niet vergis lag daarin ook de basis van "injection", waardoor je een soort container had die jouw objecten/implementaties bevatte die je nodig had. In die tijd voor mij nog een beetje abracadabra ;) In de uitzending wordt genoemd dat zaken soms ook "terugvloeien" naar het .NET Framework, dus authenticatie die eerst in een security-namespace van de Enterprise Library zat is eruit gehaald omdat Microsoft dat zelf geïmplementeerd heeft. Volgens de site van Microsoft zijn zowel versie 5.0 (2010) als versie 6 (2013) de actieve versies: link. Ik had verwacht dat er een recentere versie zou zijn of dat "alles al in .NET zat en er geen versie meer nodig is", maar schijnbaar is dat niet het geval. Je kunt de code downloaden en ook een eBook (of PDF) van ruim 200 pagina's.

PC 263: Toen de gast van de uitzending werd aangekondigd dacht ik eerst dat er weer een Nederlander zou spreken, Udie de Haan. Maar het blijkt de Israeliër Udi Dahan te zijn. Hij heeft het in deze uitzending over SOA (System Oriënted Architecture). Hij heeft de visie dat altijd "onbekend" is of de andere partij wel je bericht ontvangt. Want de "andere kant" kan tijdens het verwerken van je bericht "down gaan", druk bezig zijn met andere requests of wat langer met jouw bericht bezig zijn dan verwacht. Je wacht een seconde. Nog een seconde. Nu zou het toch klaar moeten zijn? Je besluit het bericht nogmaals te sturen. Daarna ontvang je de bevestiging van het eerste bericht. En kort daarna van het tweede bericht. Nu staat het er dubbel in. What to do? Udi heeft het product NServiceBus opgezet. De term "Enterprise Service Bus" komt in deze uitzending ook voorbij, op Wikipedia kun je nalezen wat dat inhoudt. We gaan ook nog wat netwerkprotocollen langs. De 1-op-1 verbindingen die gauw opraken en een bottleneck vormen en de UDP Multicast, waarbij een heel subnet staat te luisteren. Het principe waar Udi enthousiast over is, is het publish-subscribe principe. De diensten die gebruik willen maken van "iets" melden zich aan, dat "iets" koppelt dat daar terug en daardoor kunnen de diensten "automatisch" de diensten/berichten ontvangen.

PC 264: Donald Farmer spreekt in deze uitzending over Data Mining. Het gaat dan om datasets (databases), waarin je aangeeft dat bepaalde velden voorspeld moeten worden op basis van bestaande velden in bestaande data. Schijnbaar (?) zat/zit dat al in Microsoft SQL Server. De groep waar Donald bij hoort heeft de naam sqlserverdatamining.com en dat is (dus) ook de website. Die is nog steeds actief, de homepage heeft het wel over 2012, dus heel recent lijkt de site niet meer te zijn. Schijnbaar kun je naast de normale SQL ook de DMX data mining query language gebruiken. Op de site staat een verwijzing naar coole Office plug-ins, dan kom je inderdaad op een site van Microsoft: link. Maar... daar staat dus dat datamining in versie 2017 deprecated geworden is. en in versie 2022 volledig verwijderd. Waarschijnlijk omdat Microsoft die acties in PowerBI wil hebben en niet dat mensen dit lokaal nog gaan ontwikkelen. Jammer, want ik was enthousiast geworden door deze podcast. Zo kwam het voorbeeld voorbij "klanten die dit product kochten, kochten ook...". Zo wordt de uitzending afgesloten met een "data mining voorbeeld". Want uit de verkoopcijfers bij een winkel bleek een combinatie van bier en luiers te zijn... Zaken die je niet meteen met elkaar in verband brengt. Jonge vaders die luiers en andere boodschappen moesten halen, namen vaak voor zichzelf wat bier mee. Dus als je zorgt dat die 2 producten dicht bij elkaar staan zorg je dat de vaders die niet meteen aan bier zaten te denken, mogelijk toch getriggerd worden om een 6-pack te kopen. Hier na te lezen: link. Jammer dat je er zelf niet meer mee aan de slag kunt gaan, maar de documentatie is er nog wel. Toch nog eens die verschillende algoritmes die er zijn doornemen, wie weet kan ik die kennis ergens anders gebruiken: Microsoft overzicht algoritmes.

PC 265: In deze uitzending spreken Carl en Richard met Remi Caron. Remi is één van de organisatoren van de SDC conferentie in Nederland. Ik zat even te zoeken, maar dat hoort (dus) bij SDN, Software Development Network: link. Carl en Richard zijn bij de conferentie geweest in 2006 en dus ook in dit jaar, 2007. Op de pagina nog een interessant artikel gelezen, "hoe bij te blijven als developer". Remi bespreekt hier wat de strategie is van hun bedrijf. Dat is voor een groot deel "ontwikkelen met software die al beschikbaar is". Wat bij TRES wel eens "Buy Before Make" genoemd wordt. Voor developers is het verleidelijk om zelf alles te willen maken, maar naast het feit dat dit vaak onmogelijk is, zit je dan ook vast aan het onderhoud en "bij blijven". De reden dat veel "custom CMS-pakketten" inmiddels vervangen zijn voor de algemen CMS-en: wordpress, drupal, joomla, umbraco. Dat is ook wat Remi zegt, veel opdrachten die ze doen hebben te maken met kantoorautomatisering. Daarbij kun je heel veel zaken met Word en Excel doen. Als je dan snel (of voor een deadline) kunt leveren, komt een klant vaak met de vraag: nu we dit hebben, kunnen jullie ook "dit" en "dit" toevoegen? Dat zijn vaak de custom zaken die de developers dan gaan bouwen, wat dus ook nog eens de projecten zijn die interessanter zijn dan eerst het zoveelste CRUD-framework op te bouwen. Zaken waar Remi mee werkt is dus Office, Sharepoint, Microsoft CRM. Hij geeft het voorbeeld van een bedrijf wat in kleding handelt en dat in China koopt. Andere tijdzone. Misverstanden over prijzen en levertijden. Dat bedrijf of hij iets kon opzetten met een VPN en Remote Desktop om met hun ERP te connecten. Naast het feit dat de andere partij dan ook een stabiele internetverbinding moet hebben, zit je ook met security e.d. De oplossing die hij gebouwd heeft is dat er een knop in het ERP ingebouwd is die een volledige Sharepoint-pagina kan opzetten met alle informatie. Die wordt met de Chinese leverancier gedeeld, deze heeft daar rollen om aanpassingen te doen en als uiteindelijk beide partijen akkoord zijn kan in Sharepoint een knop aangeklikt worden die alles terugsynct naar het ERP en de Sharepointpagina verwijdert. Microsoft CRM is inmiddels Microsoft Dynamics 365. Daar vallen ook de andere onderdelen onder die in de uitzending genoemd worden zoals Navision, Axapta en Great Plains (wikipedia). Om de eigen integraties te maken in bijvoorbeeld Word wordt gebruik gemaakt van Visual Studio Tools for Office. Bij mijn stage bij Scheepswerf de Greuns ben ik bezig geweest met Access en Word en met VBA (Visual Basic for Applications). Dit lijkt me next level: learn.microsoft.com-pagina. In de uitzending wordt nog even genoemd dat de "Ribbon" in Office een andere naam heeft gekregen, iets met "Fluent". Het lijkt erop dat het nog steeds Ribbon is, binnen een Fluent UI. Hier de uitleg hoe je die zelf kunt aanpassen. En hier een Github-project waarmee je zelf zo'n soort ribbon in jouw applicatie kunt gebruiken. Het boek "The World is flat" wordt genoemd, volgens Carl een geweldig boek.

PC 266: In de categorie "better know a framework" deze keer een namespace die je niet (meer) hoeft te gebruiken, namelijk System.ApplicationException. Carl heeft het over een MSDN-pagina en die heb ik gevonden: link. In deze uitzending is Jon Harrop te gast. Hij komt uit de wiskunde/natuurkunde/scheikunde hoek en werkte al veel met functionele programmeertalen. In deze uitzending bespreekt hij F#, de functionele programmeertaal voor .NET. Hij heeft dus met meerdere talen gewerkt, zo heeft hij ook een boek over OCaml geschreven, OCaml for Scientists. Hij noemt een voorbeeld van een stuk code wat hij uitgewerkt heeft, dat waren 250.000 regels single threaded code. Dat waren origineel nog veel meer regels code. Met het toevoegen van mutexen kan hij de boel thread-safe maken en de verwerking mogelijk versnellen. Ander programma's die genoemd worden zijn Methematica en Mathlabs. Termen die vallen zijn Combinator en Functor (iets wat F# toen nog niet had, ik weet niet of dat er inmiddels in zit). Ook noemt hij "Memorisation". Als een functie uitgevoerd is, onthoud het programma de uitkomst. Dus krijgt de functie dezelfde input, dan wordt meteen het resultaat terug gegeven. De taal Erlang wordt nog even genoemd. Ter afsluiting noemt hij nog dat op zijn site een Ray Tracer en een Sudoku Solver staan (waar Carl erg enthousiast van wordt). De site is niet meer online (overgenomen door een ander bedrijf?), maar via archive.org kun je de pagina nog bekijken (en zie je inderdaad de Ray Tracer en de Sudoku Solver).

PC 267: In de categorie "better know a framework" bespreekt Carl de GAC. De Global Assembly Cache. De locatie waar DLL's "centraal" staan, zodat je ze in meerdere sites en applicaties kunt gebruiken. Ook noemt Carl het gebruik van sn-k om een applicaties een "strong name" te geven. Hij raadt aan om niet voor elk bestand een eigen key te maken, maar 1 key te maken, die je gebruikt bij de voor jou belangrijke DLL's. Dan kun je namelijk valideren op basis van 1 key of de groep van bestanden die je hebt/gebruikt geldige bestanden zijn. Hij geeft het voorbeeld van Microsoft, waarbij je ook kunt zien dat zij er maar 3 of 4 gebruiken. In deze uitzending is Michael Dunn te gast. Het gaat over Speech Server en OCS (Office Communicator Server). Michael zijn blog was te vinden op https://gotspeech.net/, maar die staat nu op GoDaddy: dus alleen nog via archive.org terug te lezen. OCS bestaat niet meer, dat is later Skype for business geworden (wikipedia). Ik had al gehoord dat Microsoft met Skype gaat stoppen, de publieke versie, dat wordt Microsoft Teams. Ik lees dat dit ook voor Skype for business geldt. Op zich wel jammer, want het klinkt als een cool product. Je kunt via de Voice User Interface schema's instellen. Je kunt in Visual Studio je eigen type projecten maken en dat gebruiken. En in Visual Studio kun je met een emulator zelf zaken simuleren/testen. Ook het protocol komt voorbij, SIP, waarbij het in de initiële RFC via UDP gaat, maar Microsoft op TCP overgestapt is. De andere partijen klagen daar over, maar Microsoft heeft in dit geval (volgens Michael) de RFC goed gevolgd, daar staat in dat ook TCP ondersteund moet worden. En je kunt daarbij gebruik maken van TLS, dus je verbinding kan met SSL beveiligd worden. SIP staat voor Session Initiation Protocol, de originele RFC is 3261. In hoofdstuk 18 kun je lezen dat TCP en UDP geïmplementeerd moeten worden. Wel even leuk om door te lezen, de laatste keer dat ik in een RFC zat te lezen was bij mijn opleiding Hogere Informatica of ergens bij een blogpost waar ik iets nodig had voor een protocol. manicprogrammer.com wordt nog genoemd, een blog over .NET. Ook niet meer bereikbaar, maar via archive.org nog door te bladeren. Die site draaide op Community Server en ook dat is (helaas) verleden tijd. Ook nog via archive.org te bekijken.

PC 268: Vishwas Lele over moss als een applicatie platform. MOSS staat voor Microsoft Office Sharepoint Services. Hij was zelf ook sceptisch over het gebruik van Sharepoint als een soort "vervanger" van een eigengebouwd .NET project. Met de versie van 2004 was dat volgens Vishwas ook zo, want daarin moest je een expliciete scheiding maken tussen de .NET routering en de Sharepoint Services. In de versie van 2007 is dat meer een basis routering van .NET geworden en Sharepoint Services liggen daar overheen. Vishwas heeft er een white paper over geschreven. De link op de .NET Rocks site werkt niet meer, maar via Slideshare is nog wel wat terug te lezen: link. Interessant in deze uitzending is ook dat gezegd wordt dat heel veel zaken "lijsten" zijn, iets wat ik een tijd geleden ook dacht en een opzetje voor gemaakt heb. Dat moet ik nog verder uitwerken. Ook hier wordt Workflow in praktijk gebracht, Microsoft levert 5 of 6 standaard workflows op, maar je kunt ook zelf nog workflows toevoegen.

PC 269: Aan het begin van de uitzending wordt nog even verteld hoe je een beeldscherm kan winnen. Maar ook een "Tom Bihn Brain Bag". Mogelijk heb ik dit eerder gedeeld, maar dan doe ik het "nog maar een keer". Want volgens Carl en Richard zijn het geweldige tassen voor laptops e.d. Website van Tom Bihn: link. In deze uitzending is Larry o'Brien te gast. Zijn credo is "programming is fun!". Eerder is al naar voren gekomen dat het niet gaat om het programmeren, maar om de klantwaarde die je oplevert met jouw code/product. Maar om iemand uit te leggen waarom je developer geworden bent.. "omdat het leuk is". Je bouwt wat en vervolgens kan de computer/het systeem dingen doen die het eerst niet kon. Na dit algemene intro gaan we door naar het hoofdonderwerp: concurrency. Volgens hem is de implementatie zoals die er nu is, met threads en locks een garantie tot het mislukken van concurrency. PC's krijgen meer core's, developers willen er meer gaan gebruiken en het resultaat is dat er meer deadlocks optreden. Er komen interessante onderwerpen voorbij zoals Software Transactional Memory. Er wordt verwezen naar een eerdere uitzending over polyphonic C# (aflevering 241).  Carl vraagt hoe het zit met de "Jolt Awards". Larry was één van de personen die dit project gestart is. Daarbij kunnen mensen uit IT insturen welke tools, boeken, andere IT zaken in het afgelopen jaar zo goed geworden zijn dat ze het vermeldenswaardig vinden. Die persoon/dat bedrijf/de organisatie kan daarmee een prijs winnen. De URL daarvoor is joltawards.com, die is nog online, maar je ziet wel dat ze in 2015 gestopt zijn. Dr Dobbs was de site, veel doorklik-links werken niet meer, dus einde oefening (met een afscheids-thread op Reddit). Het is jammer, want net zoals Larry zegt, je kunt nooit op de hoogte zijn van alle (goede) documentatie/boeken, tools en andere IT-zaken waar je als developer je voordeel mee kan doen. Zo'n site kan ervoor zorgen dat je in ieder geval weet dat die tools/boeken er zijn. Larry zijn eigen site is bereikbaar op knowing.net. En wat ook nog wordt genoemd is "het Halloween probleem". Dat ging over een opdracht om te zorgen dat werknemers die geen 25.000 dollar per jaar verdienden 10% loonsverhoging kregen. Het probleem is op Wikipedia na te lezen. In het kort komt het er op neer, dat je een selectie draait over records die aan je criteria voldoen. Je bewerkt een record, door die met 10% te verhogen. Alleen, dat record blijft in je resultset, omdat het geen vaste resultset is, maar een selectie. En door jouw update komt jouw record op een andere plek, later, wederom in het deel waarin de 10% erbij gedaan wordt. Het resultaat was dat iedereen minimaal 25.000 dollar salaris had. De programmeurs die hiermee bezig waren liepen er op Halloween tegenaan en hadden wat anders te doen, daarom is het probleem naar die dag genoemd.

PC 270: Erik Meijer over Linq. Carl en Richard hebben eerder met Erik (een Nederlander!) gesproken, dat was bij de PDC 2005-bijeenkomst. Volgens mij ergerde ik mij toen ook al zijn "you know', want die tekst plakt ie zo'n beetje aan elke zin. Je wordt er gek van. Verder ook weinig toegevoegde waarde over linq, dus deze aflevering kun je overslaan.