.NET Rocks - podcast 221 tot en met 230

Ingediend door Dirk Hornstra op 14-jan-2025 16:11

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 1.0, .NET 1.1 en .NET 2.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 221: In deze uitzending heeft Kate Gregory het over een aantal onderwerpen. Zo beginnen we met UAC, wat in Vista gestart is en als je programma draait bij een "gewone user" en wat wil doen waar je meer rechten voor nodig hebt, dan krijg je zo'n pop-up met de vraag of je dat "echt" wilt. Komt behoorlijk wat kritiek op. Kate verdedigt het principe, ook dat developers vaak met admin-rechten software bouwen en er na de release achter komen dat de gebruikers van hun software dat ook moeten. En ze kan geen naam noemen, maar bij een bedrijf waarbij alle ontwikkelaars "domain-admin" waren is een virus flink tekeer gegaan: met alleen user-rechten had dat (deels) voorkomen kunnen worden. Kate is van origine een C++ programmeur en is van mening dat bepaalde zaken beter in C++ gemaakt kunnen worden. Zo noemt ze het voorbeeld van het manifest, waarin je zet waar een programma bij mag en onder welke rechten. Bij C++ kun je dat XML-bestand linken en ben je klaar. In de Visual Studio 2005 versie (uitgebracht voordat Vista officieel uitgebracht werd) moet je een .rc bestand maken, zaken hexadecimaal aanpassen en nog wat ingewikkelde stappen uitvoeren. Hoewel generics in C#/VB goed zijn, als je echte snelheidswinst wilt moet je templates in C++ gebruiken. En het opruimen van zaken met de garbage-collector in C++ is deterministisch, als je een .Dispose() in C#/VB aanroept weet je niet wanneer de garbage-collection uitgevoerd wordt.

PC 222: In deze uitzending praten Carl en Richard met Michele Leroux Buestamante. Ze is vaker in de uitzending geweest en vertelt altijd goeie bar-moppen, aan het einde van deze uitzending ook 2 stuks die de moeite van het beluisteren waard zijn! Het eerste deel gaat over WCF. Windows Communication Foundation en is ook wel eerder besproken. Michele is bezig met het afronden van haar boek hierover. Het tweede deel gaat over Cardspace, dat is een authenticatie-implementatie van Microsoft. Ik heb het wel eens voorbij zien komen maar niet zelf gebruikt. Via Wikipedia zie ik dat Microsoft in 2011 de stekker eruit getrokken heeft. Dat gezegd hebbende, wat ik in deze uitzending hoor doet me wel een beetje denken aan een techniek welke bij Techorama besproken werd door John Craddock, namelijk Decentralized IDentifier (DID). Want in plaats van al die 100-en gebruikersnaam/wachtwoorden die je hebt, op je machine of mobiel een soort "portefeuille" met digitale kaarten welke je toegang geven tot de sites waar je een account hebt, het klinkt goed. Bij de shownotes staat nog een link naar een artikel op Coding Horror. Die link werkt niet meer, het is rustig op die site, maar altijd leuk om nog even doorheen te neuzen.

PC 223: Na de ingekomen e-mails worden nog een paar events genoemd. Zo ook het eerste code-camp in Nederland. De site staat niet meer online, maar via archive.org toch nog na te lezen. In deze uitzending wordt gesproken met Bill Wagner. Die is in uitzending 203 ook te gast geweest, omdat er heel veel andere zaken te bespreken waren is zijn boek toen niet besproken.  Daar is deze uitzending dus aan gewijd. Het boek van Bill, More Effective C#. Hij had eerder al een Effective C# boek geschreven, dat is een serie boeken ooit gestart door Scott Meyers zijn Effective C++. Programmeurs plakten de inhoudsopgave / samenvatting op hun scherm, want het bevatte alle zaken van "wat moet je doen", "wat zou je moeten doen", "wat kun je doen als het moet", "wat zou je eigenlijk niet moeten doen, als het voldoet aan ...." en "wat zou je absoluut niet moeten doen". Zo heeft "eerdere gast" een boek over Java gedaan en Bill dus over C#. In de nieuwe editie komt .NET 2 erbij (dat was in de eerste editie nog in ontwikkeling), LINQ is erbij gekomen. Op de vraag van Carl of hij een voorbeeld kan geven gebruikt hij de "Equals" methode. Je hebt verschillende Equals, RefEquals is om te kijken of ze naar hetzelfde object refereren. Er is nog een andere Equals. En nog een Equals en een == die door de programmeur te "overriden" zijn. En dan wordt het spannend. Want als je zegt dat object A gelijk is aan object B (equals), dan moet je dus ook zorgen dat object B gelijk is aan object A. En in sommige gevallen gaat dat niet goed. Voor het vergelijken kun je met Reflection op basis van alle eigenschappen kijken of iets "echt" hetzelfde is. Maar dat is een "dure" actie. En als je object uit duizenden eigenschappen bestaat en die moet je allemaal vergelijken, dan kan het ook een langdurige actie worden. Ook geeft Bill aan dat de implementatie van Equals voor value-types een beetje "buggy" is, omdat die ook nieuwe soorten/eigen objecten moet kunnen controleren. En daarbij wordt dan alleen op het eerste veld o.i.d. gevalideerd. Heldere voorbeelden dat je ergens "je neus kunt stoten" of je "handen kunt branden" als je zaken niet goed doet of niet snapt wat het precies doet.

PC 224: Te gast is Oren Eini, hij is niet de "starter" van nhibernate, hij is er later bij gekomen. NHibernate is gebaseerd op Hibernate, ORM voor Java. Source voor NHibernate kun je op Github vinden.  Ook heeft hij een product Rhino Mocks gemaakt. Dat was op basis van een boek en daardoor raakte hij zo geïnspireerd dat hij dit wilde/ging bouwen. Het boek is geschreven door Michael Feathers en heeft de titel Working effectively with legacy code. Richard noemt nog nmock en typemock. Ik weet niet of het deze uitzending is of een volgende, maar ook Monorail wordt nog genoemd.

PC 225: Bij de ingekomen berichten komt iemand met een alternatief voor nhibernate, namelijk Neo. Hij zegt dat dit wel datasets ondersteunt (en nhibernate (toen nog?) niet). Richard geeft al aan dat het een tijd geleden is dat de code bijgewerkt is, dus het lijkt niet een product te zijn waar actief aan gewerkt wordt. Het is gemaakt door codehause, maar die website is ook niet meer online. Mocht je er meer van willen weten, dan is deze stackoverflow-post misschien een goed begin. Carl en Richard spreken met Dan Appleman. Die is een all-rounder. Hij heeft onder andere een boek geschreven: "always use protection". Dit boek is bedoeld voor kinderen om 'veilig met de computer te werken'. Carl noemt ook het boek Visual Basic Programmer's Guide to the Win32 API, dat was namelijk een soort "bijbel" om met de API te kunnen werken (in de tijd dat je voor informatie nog naar de bibliotheek moest). Ook presenteert Dan. Hij heeft het nu over "discoverability". Carl, Richard en Dan zijn het eens dat je niet "alles"  meer kunt weten. Wel de basics van .NET, maar niet alles. Maar Dan zegt ook: er zijn zoveel mensen met .NET bezig, dus het probleem wat jij hebt en een oplossing voor zoekt, er moet al iemand anders geweest zijn die ook dat probleem had en opgelost heeft. Maar waar kun je dat vinden? Dan kwam Google Search tegen. Met die tool wilde hij wat maken om specifiek op .NET te kunnen zoeken. En alleen de goede sites. En zo heeft Dan searchdotnet.com opgezet. Let wel, copyright 2010 op die site. Ook verkoopt Dan componenten, onder andere een Software Licentie component via desaware. Copyright 2012. Dan is (schijnbaar) ook bekend van Spyworks. Hier zie je features. Je hebt daar ook een COM versie van en schijnbaar wordt ook dat nog wel eens verkocht (door Carl en Richard wordt gezegd: voor Windows 3.0 en dat zou best eens waar kunnen zijn). Ook komt nog voorbij dat Dan het niet eens is met Microsoft, die is aan het verkondigen: "upgrade je systeem naar Vista!", maar als je een werkend systeem met Windows XP hebt, doe het niet! Bij een nieuwe machine, prima dat die met Vista geleverd wordt. Het probleem is voornamelijk drivers die (nog) niet geschikt zijn. De overgang wordt vergeleken van de vroegere overgang van 16 bit naar 32 bit en waarbij je nog in 16 kon blijven "hangen", tot uiteindelijk alles over is. Nu is het zo dat je nergens meer XP kunt krijgen, want het is alleen nog maar Vista. Dan heeft nog een mooi verhaal over zijn eerste computer. Dat was een Rockwel international AIM-65. Daarbij had hij een cassettebandje, 16 kB geheugen, 375 dollar (175 dollar voor hem, omdat het via-via kon). Omdat hij bezig was met zijn studie voor elektrotechniek, heeft hij zelf geheugenchips samengesteld, 48 kB, zodat hij in totaal in 64 kB kwam. Ook nog met het verhaal hoe hij de boel doorgemeten heeft met een voltmeter. Je zou een scope moeten gebruiken, maar die had hij niet (en dat zal wel duur geweest zijn?), dus hij heeft het op deze manier gedaan en het is gelukt. Een prestatie om nog steeds trots op te zijn. Ook komt nog voorbij "het programma waar je het meest trots op bent". Dat is een programma om morsecode te maken, en zo klein mogelijk. Richard heeft daar nog een goed verhaal over. Iemand van een tijdschrift belde hem voor een 1-april grap. Hij kon niet echt iets bedenken, maar had nog code in VB waarbij je een soort raster hebt (10x10), bevat een uitgang, je kunt er doorheen lopen en krijgt verschillende meldingen en toen VB (3.0?) nog puntkomma's ondersteunde dat allemaal op 1 regel verwerkte. Schijnbaar was dat een verslavend spelletje, want de redacteur belde hem later terug: "je stomme spelletje heeft een uur van mijn leven verbruikt". Carl komt ook nog met een spelletje, Armagetron. Carl en Dan zijn dol op de Wii.

PC 226: Bij de lezersinzendingen komt een alternatief voor nhibernate ter sprake, ibatis.net. De site is niet meer online, de code staat inmiddels bij Google. Er is een Github-locatie voor Java. Maar met een laatste update eind 2022 lijkt dit project niet echt actief meer te zijn.  In deze uitzending spreekt Daniel Simmons over ADO.Net en het Entity Framework. WinFS komt ter sprake. Dat project heeft het uiteindelijk niet gehaald. Maar dat komt ook doordat iedereen zijn/haar eigen ding "erbij wilde hebben". Wel zijn bepaalde delen weer gebruikt in nieuwe producten waar nu aan gewerkt wordt. En Daniel noemt nog even dat het team eerst ook nog t-shirts droeg met de tekst "to boldly go where 7 other projects have died before".  Richard noemt nog even CSLA van Rocky Lhotka, dat is code voor business-objecten en een mooie aanvulling op het Entity Framework. Daniel geeft aan dat sommige projecten voldoende hebben aan de classes van het Entity Framework, maar anderen niet.   Ook heeft hij nog wel een mooi verhaal over hoe een groep bezig is geweest om een alternatief te maken voor Office, meer internet-minded, services. Genoemd netdocs, waren bijna public beta. Maar toen kwam het team erachter, het is niet helemaal Office, toen begon net .NET te komen (en dit project was dus niet in .NET gebouwd), dus is het project gestopt.

PC 227: Bij het bespreken van de ingekomen mailtjes komt nog even podcast 225 voorbij, de site searchdotnet.com die Dan Appleman opgezet heeft. Een handige locatie voor .NET developers. Carl en Richard praten in deze aflevering met Dax Pandhi. Deze podcast gaat over WPF en Expression. Zijn blog was toen nukeation.net (zijn blog), maar die site bestaat niet meer. Via archive.org kun je nog een oude versie bekijken: link.
nukeation.com was zijn bedrijfswebsite, ook die is nu niet meer bereikbaar. Via archive.org kun je ook daar nog een oude versie van bekijken: link. Dax heeft met nog iemand een soort video-podcast. Richard/Carl vragen of hij Camtasia gebruikt, maar hij gebruikt iets van Mediaplayer.

Microsoft Blend wordt ook in deze uitzending besproken. Dat is het deel wat bedoeld is voor "de front-end ontwikkeling", de code-behind bevat de code die de back-end developer kan uitwerken.
Ik zie dat ik Blend ook op mijn machine heb staan, maar nog nooit wat mee gedaan heb. Hier kun je lezen hoe je zelf Blend kunt installeren.
Microsoft Design(er?), kan afbeeldingen exporteren naar XAML (een soort Adobe Illustrator en Adobe Photoshop). Dat lijkt nu een online tool te zijn: link.

PC 228: In deze uitzending spreken Carl en Richard met Bret Updegraff over SQL Server Reporting Services . Bret heeft hier ook een boek over geschreven: "SQL Server 2005 Reporting Services in Action". Mocht je een exemplaar via Amazon willen, dit is de link. Bret had wat ervaring met Crystal Reports (wat niet erg fijn werkte), hij werd voor zijn werk naar een cursus over Reporting Services van SQL Server gestuurd en had daar weinig zin in. Maar tot zijn verrassing vond hij deze implementatie wel fijn werken. Bret is fan van SQL Server Integration Services, een vervanger van DTS. SSIS is volledig opnieuw opgebouwd, het is geen DTS 2.0 geworden. SSIS is meer grafisch opgezet. Je schrijft niet veel code, het is veel inrichten. Je kunt stukken code importeren. DTS was altijd een gedoe om over te zetten, bij Integration Services wordt alles in XML-bestanden opgeslagen, het overzetten is dus een stuk makkelijker. Richard komt met het punt dat hij tevreden was met een back-up/restore oplossing. Je loopt een dag achter, maar vaak is een terugblik op een volledige dag voor rapportages voldoende. Je kunt een assembly aanroepen. Het is allemaal wat declaratieve code. Met "custom code" kun je een functie CalculateNumber aanmaken (VB.NET syntax), dan kun je dit in je rapport aanroepen. Je hebt een Report Builder en een Report Designer. Designer is Visual Studio. Builder is nieuw bij SQL Server 2005, cliënt-applicatie, voelt aan als Office, waarmee je "on the fly" rapporten kunt maken. Je hebt Report Models (in Crystal zijn dat Universes/Business Models), gebruikers hoeven niet te weten hoe tabellen allemaal gejoined zijn. Die willen klanten met hun adressen.

Je kunt je rapporten opslaan als .MHTML-bestanden. Alles zit in 1 bestand, afbeeldingen (MIME encoded e.d.). Inladen via de ADO.NET dataset. Dat kan ook via Oracle, OLEDB en andere manieren. Richard komt met de vraag hoe je de rapporten opzet. Vaak worden query's niet goed uitgewerkt, hij maakt vaak Stored Procedures die de data aanleveren, die kan hij op maat maken. Bret doet het ook op die manier. Reporting Services zitten in IIS, je kunt het ook in Local Mode installeren, waardoor je geen IIS nodig hebt en geen Reporting Services. Je krijgt dan een component in Visual Studio. Er zit een subscription-model in. Deze kunnen gegenereerd worden via mail of op een fileshare. Daar kan het ook als PDF opgemaakt worden. Maar je kunt ook een "custom method" toevoegen. Bret heeft iets gemaakt waardoor het automatisch naar de printer gestuurd wordt. Richard noemt "ik zie een implementatie voor een fax" en ook dat heeft Bret al een keer gebouwd (maar niet gebruikt). Je kunt het authenticatiemodel aanpassen. Bijvoorbeeld via Forms Authentication. Zo zou je dit bijvoorbeeld aan "het internet" kunnen hangen.

Richard komt met een mooi verhaal. Elke maandagmorgen ging het systeem plat en dat kwam omdat 10 medewerkers allemaal op maandagmorgen hetzelfde rapport draaide. Hij loste dit op door een medewerker een uur vroeger te laten komen, het rapport te laten genereren en deze uit laten printen, zodat de 10 medewerkers het rapport al hadden. Met Report Services kun je in de portal de caching-attributen instellen. Bret heeft dat ingesteld, zodat de eerste het rapport genereerde en de anderen de cache-versie kregen. Richard: om daar achter te komen (het probleem op maandagmorgen), moet je weten welke rapporten gemaakt worden en wanneer. Er is een WMI-interface. Je kunt uitbreiden op Reporting Services. Je kunt in .NET je eigen inlogstructuur bouwen. Je kunt rapporten exporteren naar XML, MHTML, PDF. Je kunt je eigen extensie maken, dus als je iets voor Word wilt maken, dan kun je dat zelf bouwen. De delivery-extensie voor "stuur het naar de fax" kun je bouwen. En je kunt ook de bron van de data  uitbreiden, dus dat je bijvoorbeeld vanaf een webservice je data ophaalt. Bret: je zet een DLL op een bepaalde plaats en in de configuratie moet je dat toevoegen (in de XML) zodat je extensie in de dropdowns naar voren komt.

PC 229: Deze uitzending gaat over Paint.NET. Dat is ooit begonnen als een schoolproject. Volgens de maker vooral omdat Microsoft wel wilde dat er gebruik werd gemaakt van de nieuwe GDI interface. Bij dit interview zitten ze op versie 3. De applicatie is omgezet naar een MDI-applicatie, dus je kunt meerdere afbeeldingen open hebben. Anders had je altijd "maar" 1 afbeelding. Nu kunnen het er 0 of meer zijn. De maker benadrukt dat je er dan achter komt dat er veel (foutieve) aannames gedaan zijn. Carl noemt nog even dat door GDI en de ingebouwde mogelijkheden de Bezier curve redelijk simpel doorgevoerd kon worden.

PC 230: In deze uitzending is Rob Howard te gast. Rob Howard was developer bij Microsoft en heeft daar veel coole dingen gedaan, maar inmiddels heeft hij een eigen bedrijf: Telligent Systems. Tenminste, dat was toen. Inmiddels is die site er niet meer en ik zag op zijn LinkedIn dat het bedrijf in 2015 verkocht is. Een product van Telligent is Community Server. Voor Office-zaken e.d. verwijst hij naar Sharepoint (die is daar volledig op gericht), voor portalen kun je misschien beter bij DotnetNuke zijn, maar voor alle andere sites (vooral met forums, groepen, "community's") is dit product de beste keus. Door de samenwerking met Microsoft, is dit product bij GoDaddy 1 van de standaard producten geworden die mensen op hun site kunnen installeren. Carl vraagt of je voor meerdere sites 1 instantie gebruikt of dat je daar losse installaties van maakt. In het begin was het wel in 1 grote installatie, maar daar is het bedrijf op teruggekomen. Naast het feit dat data van klanten "naast elkaar staat" en bij een fout je ineens data van iemand anders op je site zou kunnen krijgen, is vooral het performance-deel wat hier onder te lijden heeft. Indexen op primaire sleutels zijn minder van belang, want eerst moet op een ander veld gefilterd worden. En met de huidige "virtuele machines" is het ook geen rocketscience meer om een nieuwe instantie "op te spinnen".  Een ander project is CodeSmith Tools, hiermee kun je code laten genereren. Exacte specs weet ik niet, maar dat kun je verder bekijken op de website. Community Server, forums, de mogelijkheid om via e-mail een bericht toe te voegen, om reacties toe te voegen. En ook weer via mail terug krijgen. Ook hier speelt de problemen met spam. Rob noemt Akismet, een betaalde dienst die ook een API heeft en die spam kan tegengaan. Ik ken die module uit Wordpress. Carl noemt nog Barracuda. Robohelp wordt nog genoemd, volgens mij voor het maken van een knowledgebase. En Rob heeft nog een mooi verhaal over zijn ontmoeting met Bill Gates. Hij moest een presentatie houden over caching, dat was met Bill Gates en andere mensen van Microsoft. Bill pakte een groot stuk papier, verdeelde dat in 4 delen en maakte daar aantekeningen op. Ze hadden een goede discussie. Rob maakte hier een blogpost over, omdat hij het interessant vond hoe Bill dat deed. Zijn post was goed gelezen, totdat de media erop dook en het in artikelen gebruikt werd om te laten zien "dat Bill niet zelf de tablet-pc gebruikte". Doh... zo was het artikel natuurlijk niet bedoeld. Carl en Richard moeten erom lachen want ze snappen dat Rob een beetje met het zweet in zijn handen zat te wachten op het telefoontje van Microsoft met het verzoek om het artikel aan te passen of weg te halen. Wat nooit gebeurd is.