.NET Rocks - podcast 251 tot en met 260

Ingediend door Dirk Hornstra op 04-mar-2025 21:19

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.0. 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 251: In de rubriek "better know a framework" noemt deze keer System.IO.FileSystemWatcher. Ik heb deze volgens mij ooit eens zelf gebruikt om een map in de gaten te houden: als er bestanden toegevoegd werden, of bestaande bestanden werden aangepast, dan moest ik daar in mijn code wat mee doen. Even graven in mijn geheugen, volgens mij was het een barcodescanner die ergens in een tekstbestand de gescande code plaatste. Daar moest ik in een applicatie vervolgens wat mee doen. Erg handig dus! In deze aflevering spreken Carl en Richard met Roger Sessions over Enterprise Architectures! Rogers heeft in het verleden met Richard gewerkt, dat was in de tijd dat ze met CORBA werkten. Hij heeft het ook over zijn tijd bij IBM. Hij was toen al een soort technische architect, maar zag vaak dat er prima applicaties gebouwd werden die vervolgens niet gereleased werden of die wel uitgebracht werden, maar niet bleken te bieden waar klanten behoefte aan hadden, dus geen "klantwaarde". Volgens hem komt dat omdat bedrijven vaak in segmenten verdeeld worden, de "business" en de "technische afdelingen". En de technische afdelingen kregen dan ook nog wel de opdrachten van de "technische afdeling die daar boven stond", dus eigenlijk nog meer afstand van de eindgebruikers. Daardoor is zijn interesse in "enterprise architecture" gewekt. Technische beslissingen op dat niveau zouden 1-op-1 gerelateerd moeten zijn aan eigen/verzoeken van de business-afdeling. Dus de vraag of er in .NET of met Java geprogrammeerd moet worden is een vraag die hier niet hoort, dat zit meer op operationeel niveau. Hebben we de developers die deze techniek kunnen en de systemen waar ons systeem mee moet koppelen, werkt dat op basis van .NET of Java? Roger is (of was?) CEO van ObjectWatch, het laatste nieuwsartikel op de site is namelijk van 2017. Op zijn LinkedIn-pagina verwijst hij naar rogersessions.com. Ten tijde van de uitzending wordt hij door Carl als volgt aangekondigd; al 13 jaar stuurt hij zijn nieuwsbrieven rond, hij heeft boeken geschreven, waaronder Software Fortresses; Modeling Enterprise Architectures en vele artikelen. Een aantal functies en is ook een Microsoft MVP! Op driekwart van de uitzending komt Carl met het punt dat hij een soort berekening van code-complexity gemaakt heeft. Dat is een boeiend verhaal, Roger had dat liever op een whiteboard uitgewerkt, maar met een podcast gaat dat wat moeilijk. De basis hiervoor is de set-theorie. De overlappende cirkels. Je hebt een systeem met "dingen". Die kun je onderverdelen in groepen, wat Roger "partitions" noemt. Met mathematische partities kun je de complexiteit verminderen. Hij noemt het voorbeeld van code met 12 variabelen, waarbij een variabele 6 verschillende waardes kan hebben. De mogelijke waardes van deze variabelen zijn 6 tot de macht 12: 2.176.782.336 - ruim 2 miljard mogelijkheden. Stel nu dat je zaken kunt scheiden, waarbij je 2 "programma's" hebt die ieder 6 variabelen hebben, elk met 6 verschillende waardes. Dat is 46.656 per "programma", dus in totaal 93.312 mogelijkheden. Je ziet dat je hiermee de "complexiteit" naar minder dan 1 procent van het origineel teruggebracht hebt. Carl geeft aan dat hij hier nooit zo over nagedacht heeft, volgens Roger komt dat omdat er nooit een soort meet-mogelijkheid was om te zeggen: dit is beter/minder complex dan het andere. Een ander wiskundige theorie die hier nauw mee verbonden is, is de equivalence relation. Hij geeft het voorbeeld dat als een pot pindakaas 1 euro kost, 1 pak hagelslag kost evenveel als een pot pindakaas en je krijgt het gegeven dat een pot chocopasta even veel kost als een pak hagelslag, dan weet je dat deze ook 1 euro kost en ook dat het evenveel kost als een pot pindakaas. Hiermee zou je kunnen bepalen of een variabele beter in deel 1 dan in deel 2 van je code thuis hoort. Een leerzame uitzending!

PC 252: De laatste liveshow met panel bij Teched 2007 die opgenomen is, het identity panel. Het panel bestaat uit Ani Babaian, Michèle Leroux Bustamante, Scott Golightly en Richard Turner. Het lijkt erop dat 2FA (2 factor authentication) in die tijd nog niet echt gestart is, want bij de vraag wat de manier van inloggen is, wordt eigenlijk alleen "met gebruikersnaam/e-mailadres en wachtwoord" genoemd. Waarbij wordt gevraagd wie wel eens wachtwoorden "hergebruikt": een groot deel van de zaal steekt hun hand op. Iemand die zegt dat niet te doen, zegt dat hij achter het wachtwoord altijd de naam van de site mee neemt... dus als je 1 van die wachtwoorden weet, dan weet je alsnog welk wachtwoord hij voor die andere site gebruikt heeft. Aan het begin wordt gevraagd wie wel eens "gehackt" is. Zo wordt het voorbeeld genoemd van een Amerikaanse veteraan die, toen hij weer in Amerika was, allemaal incassobureau's e.d. achter zich aan kreeg, omdat een hacker zijn gegevens had misbruikt. Carl laat weten dat tijdens de road-trip van .NET Rocks hij ook "gehackt" is. Het voordeel was dat hij bij een lokale bank zit, dus naar binnen liep en al een goede relatie met die persoon van de bank had en duidelijk werd dat hij dat dus niet gedaan had. Een ander panellid noemt dat hij met Richard naar Egypte was voor presentaties en van zijn credit-card maatschappij kreeg te horen "dat er vreemde transacties geweest waren" en dat hij met een telefoonnummer moest bellen. Het nummer dat niet op zijn creditcard stond, dus hij heeft het algemene nummer van die maatschappij gebeld. Bleek dat dit dus wel het telefoonnummer van hun was (en heeft hij ze dus maar uitgescholden dat ze dan het juiste nummer op de creditcard moeten zetten). Carl noemt ook nog dat recent podshow.com gehackt was (site van Adam Curry, onze Adam Curry!). Ik kan daar zo niets van terugvinden, maar heb nog wel even op Wikipedia gekeken wat Adam inmiddels doet. Zo lees ik daar dat podshow.com overgenomen/gezet is naar Mevio. Maar die is in 2014 gestopt. En Adam heeft de Podcastindex.org opgezet, die site draait (gelukkig) nog wel. Terug naar het panel. Cardspace van Microsoft wordt genoemd. Er wordt gekeken of dit een oplossing is die de problemen die er nu zijn met gebruikersnamen/wachtwoorden. Je kunt het beschouwen als een soort virtuele portemonnee waarin je verschillende pasjes hebt. Het ene pasje gebruik je voor het inloggen bij je bank, de andere voor de e-commerce website. Hier hoef je je verder niet (meer) in te verdiepen, want in 2011 is Microsoft met Cardspace gestopt.

PC 253: In deze uitzending praten Carl en Richard met Rockford Lhotka over CSLA. Hij heeft een framework opgezet voor domain-driven-design. Dit is al eerder bij een Hanselminutes-uitzending voorbij gekomen en ik heb er in 2021 al een apart blog over geschreven: link. Deze uitzending voegt daar verder weinig aan toe. Wel dat ik eigenlijk "nog steeds" eens met dat framework aan de slag moet gaan!

PC 254: In deze uitzending spreekt John Lam over de DLR, Dynamic Language Runtime. Daarmee is het mogelijk geworden dat op de CLR van ".NET" je niet alleen C# en VB kunt programmeren, maar ook dat je met Perl en Ruby kunt combineren met .NET. Handig als daar bepaalde codebibliotheken beschikbaar zijn die jij in jouw programma nodig hebt. In deze uitzending noemt John dat je wel een Perl of Ruby object kunt baseren op een C# of VB object, maar (nog) niet andersom. In het begin van de DLR waren er een paar developers die geprobeerd hebben om dat werkend te krijgen en toen beweerden dat het moeilijk en heel traag was. Dat triggerde Jim (collega John) om een keer een codeproject op te tuigen om te zien hoe traag het was en die bevindingen te delen. Maar toen hij die 3 weken afgerond had bleek het niet heel moeilijk te zijn en werkte de code sneller dan de originele op C gebaseerde code. 2x zo snel! Volgens mij was hij van IronPython en John van IronRuby. Beide werken nu bij Microsoft. Het was natuurlijk wel veel werk om het werkend te krijgen en ze hebben gekeken hoe ze zaken naar de DLR konden verplaatsen om het developers die met andere programmeertalen aan de slag zouden gaan makkelijker te maken. John was vroeger met codegeneratie bezig, hij zegt spottend dat je dan uiteindelijk bij LISP uitkomt. En zo heeft hij interesse gekregen voor de DLR. Carl of Richard noemt SmallTalk, een programmeertaal uit de jaren 80. Peter Fisk met zijn Vista SmallTalk wordt genoemd, deze developer heeft SmallTalk in de browser gekregen, hier op een Youtube-video te zien. De site vistasmalltalk.com is pas in 2020 door archive.org geïndexeerd en toen stond het domein al te koop. Die kun je dus helaas niet meer bekijken.

PC 255: In deze uitzending is Miguel de Icaza te gast. Hij is voornamelijk bezig met Mono, de implementatie van .NET die ook op Linux en Mac draait. In podcast 245 ging het over SharpDevelop en daar werd al even genoemd dat er ook een MonoDevelop is. De oprichter van SharpDevelop is inmiddels in het team van Miguel komen werken. Er wordt nog een tool genoemd; RAKE oftewel, Ruby Make. MoMA, voor de migratie van/naar Mono. In uitzendingen van .NET Rocks en bij Hanselminutes komt nog wel eens de uitspraak voor "als je een probleem hebt, voeg je een extra laag van indirectie toe". Die uitspraak blijkt niet helemaal zo gedaan te hebben, volgens Miguel is die gedaan door David Wheeler. In deze uitzending komt voorbij dat Miguel met zijn team bezig is geweest om Silverlight op mono werkend te krijgen: Moonlight. Dat was voor Mix07 in Parijs. In 21 dagen heeft zijn team dat gebouwd, zelfs in de wachttijd voor zijn presentatie kwam hij nog met verzoeken/wijzigingen en werden die doorgevoerd. Het was een groot succes en hij heeft er zelf een blog over geschreven.

PC 256: In deze uitzending spreekt Nick Landry over Robotics Studio. Volgens Wikipedia is in 2012 er nog een release uitgebracht en is het project toen gestopt. Dat is jammer, want het verhaal van Nick had me wel enthousiast gemaakt. Je kon een soort installer downloaden, wat zaken toevoegde binnen Visual Studio. In de eerste versie moest je zelf allemaal acties uitvoeren, maar in de door hem genoemde versie, 1.5, kon je al kiezen voor een type project. Carl komt met Lego Mindstorms, dat is iets wat je zou kunnen koppelen met Robotics. Nick komt met het voorbeeld dat je eigenlijk iets met een grote machine wilt doen, maar met Mindstorms zou je dat eerst op kleine schaal kunnen implementeren/testen en vervolgens met het manifest van die andere machine het daar kunnen implementeren. De basis van Robotics is de CCR (Concurrency and Coordination Runtime) en de DSS (Decentralized Software Services). Je hebt zowel input (vision, wat ziet de camera van de robot, welke snelheid heeft de robot) en de output (stuur het commando om te stoppen, stuur het commando om wat op te rapen). Nick noemt het voorbeeld van concurrency en de verschillende threads o.i.d. die hierbij spelen, zoals een rijdende robot die voor zich een diep gat ziet. Die input moet snel door het systeem verwerkt worden om actie te ondernemen. En ook noemt hij het feit dat je behalve de "programmeer-interface", je ook een soort visuele interface hebt waarbij je commando's e.d. achter elkaar kunt zetten. Waarschijnlijk voor kinderen om robots acties uit te laten voeren. Zelf had ik het idee om wat met die CCR te gaan doen (niet expliciet voor robotics), omdat je het mogelijk ook voor andere zaken kunt gebruiken. In het artikel van Wikipedia wordt mySpace genoemd die dat ook gedaan heeft.

PC 257: Bij de ingekomen mails wordt een e-mail van een luisteraar besproken die vroeger een Commodore computer had, Richard ook. En daarbij werd een website genoemd: portcommodore.com. Mocht je ook een fan zijn, check dan de site. In deze aflevering wordt gesproken met Markus Egger, de eigenaar van Code Magazine. Hij is eerder op .NET Rocks te horen geweest (aflevering?). In deze uitzending gaat het over Xiine. De website zou xiine.com zijn, maar daarbij kom je inmiddels uit op codemag.com. Ik had even gezocht, de app is hier op Amazon gratis verkrijgbaar en verwijst naar deze pagina. Het is een app om je abonnementen op magazines te beheren. Je kunt aantekeningen toevoegen. En omdat ze centraal staan, kun je ze vanaf verschillende devices bekijken (ook je aantekeningen als je die terug gesynct hebt naar de server). Omdat sommige magazines/boeken te groot zijn, kun je ook besluiten om die niet te downloaden/offline te gebruiken en anderen juist wel, om in het vliegtuig nog even te kunnen lezen. Met werkt met WPF, dus vector-elementen, Markus raadt aan om maximaal in te zoomen op je pc, letters zijn dan nog steeds leesbaar omdat het vectoren zijn en geen bitmaps. Carl vergelijkt het even met Microsoft Reader, maar dat is volgens Markus een ander type dienst, meer om zaken met DRM te beveiligen. Xiine ondersteunt veel formaten, basis ervan is XML/XAML. Markus heeft de tools om redelijk makkelijk doc(x) en pdf bestanden hier naar om te zetten. Naast tekst, afbeeldingen en video's zijn er nog meer mogelijkheden, je zou ook 3d-afbeeldingen erin kunnen krijgen. Een mooie mogelijkheid voor de verkoop van auto's, waarbij je deze volledig kunt roteren, inzoomen, etc. Carl noemt wikipedia die je op deze manier "mooier zou kunnen maken". Maar goed, Microsoft Reader is gestopt en Xiine lijkt ook niets meer te doen. In deze uitzending wordt nog gesproken over een UMPC computer en "Origami Team". Ik wist niet wat dit was, de mannen hebben het erover dat de eerste generatie computers niet zo goed verkochten omdat de mensen wachten op "versie 2". Maar als versie 1 niet verkocht wordt, zal er geen versie 2 komen. Op Tweakers is nog een artikel hierover te lezen en het lijkt erop dat deze "tablet pc" niet echt een succes geworden is.

PC 258: In de categorie "better know a framework" noemt Carl deze keer System.ComponentModel.BackgroundWorker. Als je wat "zware taken" hebt die je op de achtergrond wilt laten uitvoeren, dan is dit de plek waar je moet zoeken. Bij de ingekomen mail wordt een e-mail behandeld van iemand die eerder een mailtje heeft gestuurd. Hij heeft met XNA een game gemaakt (iets met Arena Wars oid) en hij deelt de URL xnaprojects.net waar meer van deze spellen op staan. Inmiddels is deze site niet meer online, dus een linkje via archive.org. Tussen neus en lippen door noemt Carl "cows with guns" en "Flash". Ik heb geen idee wat dat is, dus even gezocht en daarbij kom ik uit op flashmuseum.org. Geen interactief spelletje, een filmpje met een geinig gemaakt nummer over koeien (cartoon style). Zeker de moeite waard om even te bekijken! Gast in deze uitzending is Shawn Wildermuth, hij heeft het in deze uitzending over Silverlight.

PC 259: In de categorie "better know a framework" noemt Carl deze keer System.ComponentModel.BrowsableAttribute. Als je een component maakt en die komt beschikbaar in de toolbar in Visual Studio, dan kun je aangeven welke properties daar wel (en niet) getoond moeten worden. Gast van deze uitzending is Dan Ciruli. De vorige keer ging het ook over Grid Computing en daar komt nu het vervolg op. Er worden steeds meer computers aan elkaar gekoppeld om zo "supercomputers" te vormen. Het beheren/uitbesteden van taken/terugkoppelen/fouten afvangen zit in de software die Dan gebouwd heeft. Hij heeft een blogspot pagina die nog steeds online is, laatste artikelen zijn van 2009. Interessante uitzending, maar iets waar ik zelf niets mee ga doen. In deze uitzending wordt msdnwiki.microsoft.com genoemd, die stuurt je nu door naar een algemene pagina van Learn van Microsoft. En ook wordt hier genoemd dat een Dictionary niet serializable is. Dat was in 2007. En als je via webservices data over de lijn gooit, dan ging dat met een Dictionary niet werken. Een snelle zoektocht lijkt op te leveren dat dit nog zo is, maar aangezien we steeds meer naar JSON-communicatie gaan en we zelf onze objecten serialiseren is het waarschijnlijk momenteel een minder groot probleem.

PC 260: In deze uitzending zijn Anand Raman en David Wright van Microsoft te gast. Bij Microsoft werd gebruik gemaakt van systemen om documentatie van code te maken. Dat wordt gedaan met de "triple slash", dus de /// items in je C# of VB code. Dat was iets wat meer mensen willen gebruiken en zo is het als "gratis te gebruiken product" uitgebracht onder de naam Sandcastle. Schijnbaar kun je met een soort /doc parameter bij het builden van je projecten bestanden maken die als input gebruikt kunnen worden. David is degene die het meeste aan het woord komt, hij benoemt hoe code gestyled kan worden, hoe je een eigen HTML-pagina kunt toevoegen. De linkjes die bij de podcast gedeeld worden doen niet zoveel meer. Nog wel die naar MSDN, het laatste item wat daar staat is van 2010. Volgens de wikipedia-pagina is de code op een bepaald moment van codeplex gehaald, codeplex doet niets meer, maar er staat nog wel broncode op Github. Toch nog maar eens naar kijken want zoals in deze uitzending voorbij komt is het documenteren van code vaak iets wat na de tijd "nog moet gebeuren". Als je in je code al goed documenteert wat er moet gebeuren, dan heb je daar al flink wat input. Om programmeurs en "auteurs" niet in dezelfde code te laten werken, ondersteunt dit ook het in losse bestanden plaatsen van de teksten. De github-repo heeft ook een github.io pagina met uitleg, onder andere hoe je code goed kunt laten zien: link. In de uitzending wordt ook nog genoemd dat je pre- en post-conditions mee kunt geven en ook een "<seealso>"-tag voor referenties naar externe informatie. Op deze pagina van Microsoft kun je daar meer over lezen. Die laatste link ga ik nog eens goed doorlezen, want misschien kan dit voor ons wat extra documentatie opleveren wat handig is als je "iets zoekt".