.NET Rocks - podcast 71 tot en met 80

Ingediend door Dirk Hornstra op 19-sep-2022 19:05

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 71: Carl en Rory spreken met Tim Huckaby over smart clients. Dit heeft betrekking op Windows Forms, Compact Framework, Infopath, Visual Studio Tools for Office en Information Bridge Framework (IBF). In de Microsoft applicaties zit een task-dashboard. De meeste developers sluiten dat af, maar met IBF kun je een intern form toevoegen, wat een webservice of API aan kan roepen en daarmee interactie uit kan voeren. Tim geeft het voorbeeld van een mail die binnen komt met een order en serienummer. Dat wordt een smart-tag, door erop te klikken open je de details in het form-pane. Hup, meteen order uitvoeren en met de mail terugsturen. Visual Studio Tools voor Office daar kun je tools mee maken en hij vraagt of Carl en Rory een pivot-tabel in Excel kunnen maken. Ze geven aan: ik ben geen expert in Excel, dus dat zal veel tijd kosten. Dat geldt ook voor mij. Tim zegt dat hij met 4 regels code een tool kan maken die dat voor je doet. Na de break komt Nick Landry aan de lijn. Er komt een mooi verhaal over hoe Carl bij een Tech-ed editie te laat kwam bij een presentatie (niet goed op het formulier gekeken hoe laat zijn talk begon). Carl had de tijd niet goed overgeschreven. Joe vertelt dingen over Carl die niet waar zijn. Hij heeft het publiek verteld dat Carl de avond ervoor aan de boemel geweest is en zich verslapen heeft. Richard Campbell komt nog aan het woord, zo is hij de site siteklamp tegen gekomen, een tool voor besnijdenis. Dit is een beetje de start van de rubriek "world weird web" volgens mij.

PC 72: We beginnen met het nieuws. Rory spreekt over Mono, deze heeft geen WinForms, maar GtkSharp kun je wel gebruiken: link. Clemens Vasters rocks your world. Clemens heeft een eigen CMS gemaakt, DasBlog. Het CMS wat Scott Hanselman ook gebruik(te?) voor zijn website. Clemens zijn blog is hier te bekijken: link. Op docs.microsoft is een heel verhaal over DasBlog te vinden: link, op een site staat een blog van Scott uit 2020 over een .NET Core versie: github-link. Deze uitzending kun je overslaan, al die "vergelijkingen" met de wereld om ons heen en dat zo vergelijken met services, contracten, misschien is het een goede programmeur, maar Clemens klonk als een irritant ventje. Aan het eind komt Richard Campbell met wat "toys". Zo zie je hoe de tijden veranderen. Zo is er een tool waarmee je de WIFI-signalen kunt meten, zodat je niet "je laptop open hoeft te klappen". Nu iedereen met een mobieltje rond loopt en dat in 1 oogopslag kan zien is deze "tool" overbodig. wifiseeker.com: nog via archive.org en de afbeelding: link. En iemand die... een vlammenwerper gebouwd heeft! Het artikel stond op forums.somethingawful.com, maar is al zo lang geleden aangemaakt dat je het nu alleen kunt bekijken met een account met archief-toegang (en daar moet je 10 euro voor betalen). Dat ga ik niet doen voor 1 berichtje. Gelukkig is er het internet-archief nog en zo kun je het toch nog bekijken: link. Het ziet er indrukwekkend uit! Carl en Richard zeggen er ook bij "don't try this at home", want het vuur kan naar binnen slaan en exploderen..

PC 73: Carl en Rory spreken met Jeff Richter over de CLR. Het gesprek met Jeff hierover maakt het een boeiende uitzending! Als je in Visual Studio een programma maakt in VB of C#, dan wordt die code geconverteerd naar managed code. Deze code wordt door de JIT compiler (Just in Time compiler) omgezet naar machinecode. De CLR staat voor Common Language Runtime en is de "virtuele machine" van Microsoft die ervoor zorgt dat je code uitgevoerd wordt. Zo worden ook "app-domains" benoemd, een soort omgevingen waarin DLL's geladen worden, geheugen beheerd wordt. En in verschillende appdomains kun je dus ook verschillende versies van een DLL uitvoeren (wat in een normale Windows of IIS omgeving niet kan, omdat er maar 1 versie kan draaien. Maar je kunt ook zaken qua rechten instellen. Zo heb je als je een executable-bestand download van internet, dat deze minder rechten heeft. Als je naar de eigenschappen van het bestand gaat zie je vaak "afkomstig van internet" of iets dergelijks en als je het vinkje weg haalt, dan heb je wel alle functionaliteit. Zo kun je ook een app-domein als een soort sandbox opstarten en daar je processen in opstarten: minimale rechten, maximale beveiliging. Ook komt Jeff met het punt dat er mogelijk een volgende versie komt waarbij wel 1 versie van de runtime draait (altijd de nieuwste versie), waardoor je problemen met: applicatie is gebouwd met versie 2, maar gebruikt een DLL van een andere leverancier die met versie 1 gebouwd is en het open/save dialog moet aangeroepen worden op het systeem waar deze applicatie draait: omdat het Longhorn is, is die nu versie 3. Richard noemt nog even dat hij vooral graag ziet dat zaken deterministisch werken. Nu werd soms eerst versie 2 van een DLL geladen, waardoor iets crashte, maar bij een volgende keer laden kon versie 1 geladen worden waardoor het programma wel werkte: zulke situaties zijn een ramp.

Ook nog een paar mooie weetjes: zo draait een 16-bit versie van Powerpoint niet goed op een 32-bit systeem (en 64-bit waarschijnlijk ook niet), waardoor deze allemaal PEEK-berichten naar de CPU begint te versturen: resultaat, alle andere programma's blijven maar wachten, een unresponsive systeem. Dus Microsoft heeft Windows NT aangepast als er per seconde zoveel x een PEEK-bericht verstuurd wordt, dan gaan ze kijken of er een proces powerpoint.exe draait: zo ja, dan krijgt die een hele lage prioriteit. Zo was er ook een spel: Army Men. Windows liet dat ding crashen. Dus paste Microsoft het aan: als er een armymen.exe opgestart werd, vloog je scherm meteen naar 640x480 resolutie en ALT-TAB werd uitgeschakeld, zodat je niet naar andere schermen kon switchen.

In het nieuwsblokje van Rory komt deze pagina nog voorbij, op Oracle een overzicht van de voordelen en de nadelen van PHP vs .NET (... en wat de voordelen van een open source oplossing zijn): link. Dat klinkt niet heeeel erg onpartijdig ;)

Richard de toyboy komt met een paar linkjes, zo gaat hij eerst voor de laptoptassen. Hij kocht altijd Toombi (dat verstond ik, maar zal wel Tommy Hilfiger zijn), maar die waren niet goed meer (grotere laptops pasten er niet in), dus hij ging nu naar tombihn.com. Richard is hier heel enthousiast over, vooral over de "Brain Bag". Hier kun je verschillende soorten mallen instoppen, zodat je laptop goed zit (en er fatsoenlijk uit gehaald kan worden). Zo kunnen er ook 2 laptops in. Het is een rugzak, dus geen gesjouw. Richard noemt nog de banden, zodat als je moet rennen op het vliegveld, de boel stevig vast blijft zitten. Wel hoort ik iets van prijzen rond de 250 dollar en ik zie bij deze nu 225 dollar. Prijzig, maar ziet er inderdaad prima uit! Voor de fun-tool gaan we naar de Nieuw-Zeelandse ebay: link. De link waarnaar verwezen wordt is niet meer beschikbaar, geeft een 404. Het gaat om een "jet-powered go-cart", dus ik denk dat iemand wat gasflessen aangesloten heeft op een kart. Don't try this at home :D

PC 74: Kimberly Tripp spreekt over SQL Server. Bij het nieuws komt Rory met Iron Python, ook al eens bij de podcasts van Scott Hanselman genoemd. Carl en Rory komen nog even terug op uitzending 73 waarin Jeff gezegd heeft dat VB in de toekomst waarschijnlijk meer features gaat bevatten, maar daardoor trager zal worden. Een paar mannen van het ontwikkelteam ontkrachten deze uitspraken. Wederom een zeer boeiende uitzending! Zo legt Kimberly uit dat je als je een tabel hebt met geen ID's maar GUIDs als unieke waarde per record, je die prima kunt instellen als primary key. Maarrrr.. deze moet je niet als clustered index opslaan! Die gebruik je alleen voor velden die een soort volgorde hebben, dus het liefst een auto-identity veld met oplopende getallen. Ook een hele goed punt is "stored procedures". Het credo is dat stored procedures sneller zijn en dus eigenlijk altijd gebruikt zouden moeten worden. Kimberly geeft aan dat (net als met veel andere dingen) je stored procedures soms moet gebruiken, maar je soms ook gewone SQL-statements moet gebruiken. Ze geeft het voorbeeld van de verschillende "execute-plans" die een stored procedure volgt. Als die dat alleen de eerste keer doet, kun je hebben dat een volgende aanroep, met andere parameters, volledig verkeerde indexen gebruikt en de stored procedure juist traag is. En in de Stored Procedure elke keer "with recompile" instellen, dat is niet handig als je een Stored Procedure met 400 regels code hebt. Kimberly raadt aan om met verschillende scenario's te werken (1 resultaat, paar resultaten, grote hoeveelheid resultaten) en zo te zien waar de bottleneck optreedt. Als dat een paar regels code zijn, dan kun je die in een eigen Stored Procedure met recompile zetten, dat is geen probleem. Ook noemt Kimberly "functions/functies" die je kunt uitvoeren. Maar ze geeft ook het voorbeeld aan waarbij die over alle 1.000-en records uitgevoerd wordt, waardoor alles supertraag wordt. Ook noemt ze nog even het voorbeeld van als er honderden records per seconde aangemaakt worden en je nieuwe "hot areas" aan moet maken, dus indexen op bijvoorbeeld het veld "regio", zodat je locking kunt voorkomen/beter kunt beheersen. Of zaken verdelen over meerdere tabellen. En ze noemt nog de functie "quotename" die gebruikt kan worden. Iemand had op zijn website iets gemaakt waarmee bezoekers databases aan konden maken. Maar met wat SQL-injection kon je ook een DROP DATABASE statement toevoegen. Met die "quotename" voorkom je dat. Kimberly haar blog is op sqlskills.com na te lezen: link

Bij de opleiding Hogere Informatica heb ik natuurlijk wel TSQL gehad, maar dat was Infobase of iets dergelijks, dus SQL Server was voor mij nieuw toen ik in 2005 bij HSCG aan de slag ging. Bert van der Stouwe, die ingehuurd werd, was de man die alles/veel wist over indexen en andere zaken, zelf vond ik het ook altijd interessant en dat heeft ervoor gezorgd dat ik wel aanspreekpunt wil zijn als iemand een SQL-vraag heeft. Maar de zaken die in deze uitzending (van 2004?) genoemd werden zijn deels nieuw voor mij. Bij één van onze projecten (wat niet meer actief is) hadden we ook zo nu en dan een probleem met een stored procedure die na verloop van tijd "traag" werd. Fix was een recompile, maar dat was dus soms een tijdelijke fix. Ik weet nu (en jij ook) dat je bij zo'n geval zaken moet testen, tunen, uitsplitsen en zorgen dat er zo weinig mogelijk functies op een live database/set uitgevoerd worden.

Richard de toyboy komt nog even langs met de LG GSA-4120B, een double-layer DVD brander. Was eerst rond de 1.000 dollar, nu 100 dollar. Deze site heeft nog specs en afbeelding: link. En de "funny link" (werkt nu niet meer): http://dvdrewinder.com/. Moest je bij de videotheek altijd de videobanden terug spoelen als je ze weer inleverde, zo heb je ook een product van 30 dollar om je "DVD's terug te spoelen".  En hij is uitverkocht, dus er zijn mensen die 'm gekocht hebben..

PC 75: Eindelijk in de uitzending, Miguel de Icaza over Mono! Met mono kun je C#-code compilen als .NET code op een Mac, op Linux en ook op Windows. Zelf heb ik het in het verleden gebruikt om CRON-taken te draaien op een Raspberry Pi. Dit gesprek is in 2004 toen versie 1 uitgebracht werd. Inmiddels is de vraag: hoe relevant is Mono nog, want met .NET Core kun je voor Windows, Linux en Mac in .NET bouwen. Maar goed, in deze uitzending gaat het over Mono. Miguel legt uit dat voor elke omgeving (Windows, Mac, Linux) een eigen interface gebouwd wordt, zodat het er "eigen" uit ziet. Bij linux is dat met GNU, bij de mac met Cocoa. Er is een Cocoa# project, maar dat lijkt nu niet meer actief te zijn (geen development meer sinds 2008, deprecated): link. Omdat dit de begintijd is, zijn er nog niet echte ontwikkeltools voor Linux. Zo wordt Sharpdevelop genoemd (link). Een alternatief is MonoDevelop (github-link, website). Op dat moment zat WinForms nog niet in het Mono-pakket, kon je niet visueel ontwerpen, maar kon dat wel via een los pakket: Glade: link. Een beetje zoals XAML voor Windows, daarmee maak je XML-bestanden voor de opmaak, de onclick van buttons e.d. moet je allemaal zelf in code implementeren. Ook dotgnu wordt genoemd: link. Miguel is daar niet zo positief over, een project wat eigenlijk hetzelfde doet, dus een beetje dubbel werk. Op die pagina kun je zien dat development sinds 2012 eigenlijk gestopt is. Hierna komt Richard de toyboy nog even langs. Hij wijst ons op een router, de Linksys wrt54g. Op die router draait... Linux. En op de site seattlewireless.net stonden tips hoe je zaken aan kon passen: je hebt 1 WLAN poort en rest zijn LAN, maar intern zijn ze allemaal gelijk, dus als je WLAN-poort kapot is... stel je m gewoon in op een andere! En Quality Of Service is in te stellen, dus je kunt zorgen dat je VOIP-data hogere proiriteit krijgt, zodat je fatsoenlijke telefoongesprekken kunt voeren. Er is zelfs een Wikipedia-pagina aan gewijd, in 2016 is de boel gestopt (website staat dus ook niet meer online). En de andere pagina is violet.net, een Franse site waar je voor 790 euro's een "emotionele lamp" kunt kopen, werkt net als die router op Linux. De site is niet meer online, via archive.org nog een redelijk snapshot: link.

PC 76: Shaun Walker en Jim Duffy spreken over dotnetnuke!, een CMS in .NET  wat qua naam afgeleid is van phpNuke. Shaun zijn eigen blog is hier te bekijken: link. Jim is een "fan-boy" van dotnetnuke. Hij geeft aan dat hij bijna niet heeft hoeven programmeren om een eigen site naar wens op te bouwen. Shaun heeft dotnetnuke gemaakt. Was eerst een hobby-project, gebaseerd op een starter-kit van Microsoft. Maar die had niet zo'n goede structuur en niet zoveel te bieden, dus uiteindelijk is het een heel eigen CMS geworden. Je kunt met meerdere type databases connecten. En je kunt meerdere sites beheren in 1 portal. Richard de toyboy komt weer in de uitzending. Hij noemt de web-tool keyhole.com (eerder genoemd) waar je satellietbeelden van plaatsen op de aarde kunt zien (en ook Mars als ik me niet vergis). Als je nu naar die URL gaat kom je op Google Earth uit: link. En de "slechte link" is in dit geval "ping extreme". Met een honkbalknuppel moet je een pinguin zo ver mogelijk weg slaan. Dat was een Flash-game, maar volgens mij had ik ook een soort "stand-alone versie" die je op je eigen pc kunt/kon spelen.

PC 77: In het begin bespreekt Rory wat nieuwsitems. Zo ook dotnetbookclub.org, een groep mensen die boeken over .NET bespreken. Kan handig zijn (is het wel een goed boek, heb ik er wat aan?). Maar zo te zien is die site ergens in 2016 gestopt. Via het archief is nog een oude versie te bekijken: link. Charles Petzold spreekt over Charles Petzold! Charles is een schrijver van technische boeken, onder andere Windows programmeren (in de tijd dat het nog 16 bit was). Hij heeft het boek "code" geschreven, een klassieker. Een interessante uitzending, analoge computers worden genoemd, een "differential analyzer", een mechanische oplossing om wiskundige problemen op te lossen. Ik weet er niet het fijne van, maar via Wikipedia kun je er meer over lezen: link en in deze uitzending wordt gezegd dat Tim Robinson er 1 met meccano gemaakt heeft, hier op Youtube te bekijken: link. Er komen een paar leuke anekdotes voorbij. Hoe Charles en vrienden een "prank" uitvoerden bij een executive editor van PC Magazine. Daar hadden ze een soort keyboard-logger op gezet en bij een bepaalde snelheid werden letters vervangen. Dus hoe sneller je typte, hoe meer er fout ging. Dan stopte je, om dat te herstellen, waardoor de snelheid omlaag ging en er dus niets aan de hand was. Slim bedacht :) Ook komen TSR programma's voorbij. Dat was in de DOS tijd zaken die in het geheugen werden geladen, omdat je toen nog niet echt kon multi-tasken. Het programma Lotus 1-2-3 had een hele simpele display-driver. Als je een DOS programma onder Windows draaide, moest dat via DOS of de BIOS. Charles paste de code aan zodat het via de BIOS rechtstreeks naar het scherm ging. Dat is een stuk trager. Daarna draaide hij het in een "window  in Windows". En daardoor werd het super-traag. Ze lieten dit aan Steve Ballmer zien, het was supertraag en onwerkbaar. En vervolgens verkondigt hij bij een bedrijf dat "ze Lotus 1-2-3 in een window kunnen draaien". Dat klinkt als de echte actie van een sales-persoon :) Daarna komt Richard de toyboy voorbij. De Canon EOS 20D, 8 megapixel, toen een geweldig toestel: link. En de "slechte link van de week" is voor Humphrey the Humping Dog, voor als je iemand een origineel verjaardagscadeu wilt geven :D : link.

PC 78: Uitzending met Don Kiely over het "developen" met de laagste privileges. Niet een heel interessante uitzending, wel met een paar goede tips. Zo draai ik zelf Visual Studio als "administrator". Dat heb ik gedaan omdat ik anders bepaalde test-projecten niet kon uitvoeren. Maar in deze uitzending hoorde ik dat ik mijn account moest toevoegen aan de Debugger-groep en aan de Visual Studio groep. Dat wist ik eigenlijk ook wel, maar dit was even de snelste fix. Bij deze uitgeschakeld, zodat ik het als ik tegen problemen aanloop op de juiste manier ga fixen. Er worden nog een paar handige tools genoemd. De tools van sysinternals: link. Kijken wel proces je bestand "gelockt" heeft. Wie welke wijzigingen in je Register doorgevoerd hebben. Don legt ook uit waarom .NET apps voor Microsoft Office met "full trust" draaien, omdat er bij kopieën niet alleen bestanden, maar mogelijk ook gekoppelde DLL's mee moeten gaan. En een nieuwe rubriek van Kirk Web: The weird wide web. De eerste link bestaat nog steeds, kijk wat je in je vorige leven hebt gedaan: link. Mocht je willen scheiden, ook daar is een site voor: link. En de laatste link bestaat niet meer, maar is via het archief nog te vinden: link. Mike van 11 jaar oud (in 2004) is op zoek naar een nieuw vriendin :D Richard "the toyboy" zit op een boot bij een conferentie van Micorosft, dus niet heel veel tools.

PC 79: In deze aflevering is Dave Wecker de gast. Rory noemt nog even de Creative Zen portable media-player: link. In deze uitzending wordt gesproken over speech-recognition en hoe een rij van microfoons ervoor kan zorgen dat je 1 spreker "eruit kunt filteren". Automotive komt voorbij, software die in auto's draait. Dave geeft aan dat in veel auto's al veel Windows CE draait maar de fabrikanten hun eigen skin er overheen hebben gegooid. Kirk komt weer met wat vreemde linkjes. Tron Guy (linkje in de volgende aflevering, pc 80). De volgende site is "men who look like kenny rogers .com": link. Site is supertraag, inhoud is duidelijk als je de URL ziet :D De laatste link is... dubieus. Waarom zou je als vent een jurk aan doen en jezelf besmeuren met eten? En dat dan ook nog online zetten. Mocht je hier nog beeld bij willen, via het archief te vinden: link. Met de meest hilarische uitspraak ooit: "if he's got an adams-apple, he's got a banana too". Richard komt nog even met echte toys. Zo is er dit apparaatje waar je via WIFI met elkaar kunt spreken: link. Rory en Kirk maken er grappen over: waarom zou je niet een telefoon of mobiel daarvoor gebruiken? Volgende linkje is een "rolstoel, aangedreven door een vliegtuigmotor". Het linkje bestaat nog: link en toont hoe de BBC-site er zo'n 18 jaar geleden uit zag. En de "bad toy" deze week is een "rubber ducky" met USB aansluiting (dus eigenlijk een USB-stick), met 256 MB ruimte, maar deze is een camouflage-versie die ook nog glow-in-the-dark is. Volgens mij zijn nu veel van die dingen key-loggers, zoals je ook op deze site kunt zien: link.

PC 80: Mark Miller spreekt over tool development. Mark heeft CodeRush gemaakt: link. Gereleased in februari 2004. Het bespaart je werk. In deze uitzending wordt duidelijk dat Mark nooit vakantie neemt. Weird wide webb: The Tron Guy (link) en BumperDumper, het mobiele toilet: link. Mark is 17 jaar al 12 uur per dag aan het programmeren. Dus hij gebruikt bepaalde tools. "corporate tunnel syndrome", om dat te voorkomen gebruikt hij "wrist stabalizers" van Futuro: link. Ondersteuning van je rug: back-support-brace,  Mark traint zijn pols met een Dyna Flex Power Ball.