.NET Rocks - podcast 231 tot en met 240

Ingediend door Dirk Hornstra op 11-feb-2025 21:36

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 231: In deze uitzending spreken Carl en Richard met Fred Chong over SAAS (Software as a Service).  Carl is behoorlijk uitgesproken over het feit dat volgens hem Word, Excel nooit als een SAAS aangeboden zullen worden, zeker niet in China, want daar kun je op elke straathoek een illegale kopie van software op CD kopen. Microsoft Secure LM wordt genoemd, dit is een model van Microsoft waarmee bepaalde endpoints afgeschermd kunnen worden (validatie of je wel een abonnement hebt o.i.d.). Richard had begrepen dat dit een soort huls om DLL's is, maar volgens Fred is het meer, kan de ontwikkelaar ook in code daar acties mee doen. Een Google-actie op Microsoft LM levert mij nu geen resultaten op. Fred en zijn mede-oprichter van zijn bedrijf kwamen in contact met een ISP (Remend?). Die had al een applicatie, maar wilde die multi-tenant maken (dus een SAAS-applicatie). Dat is Litware HR geworden, een voorbeeldapplicatie. De code staat hier nog op Codeplex, dus mocht je interesse hebben en het willen bekijken, dan kan dat. Salesforce wordt genoemd (volgens mij is dat alleen maar beschikbaar als een SAAS applicatie?). Het 3-headed monster wordt genoemd. Availability: leveranciers spreken SLA's af: als je een SAAS hebt, moet de service wel beschikbaar zijn. Configurability: je "app" moet configurabel zijn. Als voor elke aanpassing er een deployment uitgevoerd moet worden, dan kan risicovol zijn. Scalability: hoe schaalbaar is een oplossing. Richard komt met het voorbeeld dat je op 1 server 20 virtual pc instanties kan draaien. Fred antwoordt daarop dat als een concurrent op een andere manier 1.000 instanties op 1 server kan draaien, je nooit kunt concurreren. Waarbij Richard opmerkt dat als 1 van de apps een probleem heeft en dat ook impact heeft op de anderen, er dan ineens 1.000 instanties zijn met problemen. Softgrid komt ter sprake, dit was van Softricity. Hiermee kon je applicaties virtualiseren. De software draait op een server en streamt de bytes naar een client-applicatie op jouw pc. Klinkt wel een beetje Citrix-achtig. Op de site van Microsoft kun je zien dat de ondersteuning gestopt is (uiterlijk 2017). Via Wikipedia kun je lezen dat het nu App-V is.

PC 232: In deze uitzending is Jeff Atwood te gast, onderwerp is het menselijke aspect van software development. Jeff is de maker/blogger van codinghorror.com. Hij heeft deze site in het verleden opgezet omdat hij iemand is die houdt van zijn beroep, "programmeur". Maar zijn collega's / de mensen die hij kende waren 9-tot-5 werknemers, in die tijd programmeren en daarna stoppen, we zien het morgen wel weer. Jeff was nieuwsgierig, wilde beter worden, heeft plezier in zijn vak. De site was eerst een overzicht van boeken die hij las en die hij wilde delen met anderen die net als hem meer met hun beroep willen doen. Zo komt ter sprake hoe hij "Code Complete" las, waarin besproken wordt welke fouten developers maken. Hij kon daarom lachen. Niet om anderen uit te lachen, maar om zichzelf, want hij had die fouten ook gemaakt. En dat is een teken van dat je groeit van "junior developer" naar een meer ervaren ontwikkelaar. Weet dat je zelf fouten maakt, maar ook hoe je kunt zorgen dat je die fouten niet meer maakt. Ook komen reviews ter sprake, het terugkoppelen van codewijzigingen door collega's op het feit dat de code die zij gemaakt hebben "niet goed" is en er een beter alternatief is. Er zijn nog wel wat developers die dit als een soort "nederlaag" of "aanval op hun skills zien", maar zoals in de podcast wordt gezegd: jij bent niet je code. Door aannames, zaken niet weten of niet eerder bepaalde tips gekregen te hebben heb je die code gemaakt en als degene die het beoordeelt die kennis niet had, had hij/zij het waarschijnlijk op dezelfde manier gedaan. Ook komt ter sprake hoe Jeff zich soms ergert aan hoe bedrijven hun developers behandelen. Een "crappy mouse", "big CRT monitor" maar ook "no 2 screens", oftewel: geen 2 schermen. Volgens Jeff zou er in elke developer 10.000 dollar geïnvesteerd moeten worden. Want trage hardware: het duurt extra lang om te compileren. Elke 10 extra seconden tellen op naar een half uur per week naar je scherm staren.

Er komen nog 2 blogs ter sprake, Separating Programming Sheep from Non-Programming Goats.  Hieruit zou blijken dat sommige mensen kunnen programmeren en anderen niet (ze zien het niet). Carl komt met het voorbeeld van FizzBuzz, een developer komt voor een solliciatie-gesprek en krijg een redelijk eenvoudige opdracht. Maar hij kan/snapt het niet. Als je afgestudeerd bent zou je dat minimaal moeten kunnen. Richard bevestigt dat, sommige sollicitanten doen het prima tijdens het gesprek, maar als ze aan het werk moeten bakken ze er niets van. Hij vraagt daarom ook altijd een stuk "favoriete code" mee te sturen, zodat ook dat meegenomen kan worden in het gesprek. Zo had hij een sollicitant die slecht in communicatie was, maar toen ze bij code/programmeren kwamen, begonnen zijn ogen te stralen en stond hij zaken op een whiteboard uit te werken. Conclusie: I can deal with the social issues when I get a genius-programmer. Het andere artikel gaat over het feit dat je fouten maakt. Als je geen fouten maakt, leer je niets, daarom de titel Success through Failure.

Joel Spolsky komt nog even ter sprake. Jeff heeft een redelijk kritisch artikel over hem geschreven (hoewel hij een grote fan van Joel is), want Joel heeft in zijn uitspraken e.d. allemaal goede dingen genoemd, maar met een recent project gaf hij aan "dat ze zelf een nieuwe programmeertaal gingen maken". Iets wat hij zelf altijd had afgeraden. De uitspraak is dan ook dat "Joel jumped the shark". Ik had geen idee wat dit betekende, maar schijnbaar zat in de serie Happy Days een scene waarin The Fonz op op waterski's over een haai springt, deze serie ging vervolgens bergafwaarts: youtube-fragment.

De directe link naar de boekenlijst: link. Aanraders van Jeff die hij in deze uitzending genoemd heeft zijn Code Complete van Steve McConnnel, Don't make me think van Steve Krug, Peopleware "Productive Projects and Teams" van Tom DeMarco en Timothy Lister, Software Estimation van Steve McConnel.

PC 233: In deze uitzending kondigt Brad Abrams Silverlight aan. Dat product had eerst de naam WPF-e, het is een soort "Flash-vervanger" gemaakt door Microsoft. Hiermee kun je allemaal coole dingen in de browser doen. Inmiddels is Silverlight niet meer onder ons (net als Flash), dus de uitzending kun je overslaan. Maar.. ik pak hier nog wel even mee dat je (natuurlijk) de Base Class Library hebt, dat zijn alle System... namespaces en dergelijke. En nu snap ik wat dat Microsoft BCL nuget-package is, dat is de Base Class Library!

PC 234: In deze uitzending spreken Carl en Richard met Frank Savage. Frank Savage is een game-programmeur. Vroeger was dat hardcore C-code programmeren, om alle snelheidoptimalisaties door te kunnen voeren. Inmiddels kan dat ook met C#. De spellen die Frank gemaakt heeft zijn Strike Commander, Wing Commander en MechCommander. Hij werkt bij Microsoft aan de xBox 360. Het Microsoft-team van het .NET Compact Framework kwam bij hem met de vraag of dit ook op de xBox kon draaien. Dat leek Frank wel wat, dus ze zijn met de ontwikkeling gestart en dat is succesvol geworden. Je kunt als developer met XNA Game Studio zelf met C# je spellen maken en op de xBox draaien. Ten tijde van deze podcast kan er nog niets met netwerk gedaan worden, juist omdat zaken afgeschermd/beveiligd zijn. Online staat nog een video van de PDC 2008 waarin Frank laat zien wat er mogelijk is. Als je zelf aan de slag wilt, XNA Game Studio is hier te downloaden. Carl had het erover dat de broncode van Mech Commander te downloaden was. Frank bevestigt dat en zegt dat het rond de 1 GB groot was. Ik via hier op archive.org een download, die zit op 785 MB. En Mech Commander Gold uit 1999 kun je via myabandonware downloaden.

PC 235: Flink wat mensen in deze uitzending. Barkol, Gallo en Vavilalla. De mannen hebben een boek geschreven: ASP.NET AJAX in Action. Deze uitzending kun je wel overslaan.

PC 236: In deze uitzending is Eric Evans te gast. Hij heeft het boek "Domain Driven Design" geschreven en spreekt over "domain driven design" in deze uitzending. Je kunt deze uitzending overslaan, het boek is wel een aanrader. Deze uitzending gaat over hoe software developers hun programma's bouwen en hoe dat een weergave van het "domein van de klant" is. Het voorbeeld van een applicatie voor een bank wordt genoemd. Hoe bij de "aftrap" de ontwikkelaars en de mensen met kennis over het werkgebied om tafel zitten en via whiteboards discussiëren en tot een soort ontwerp komen. Het inzicht van Eric dat je niet alles in modellen moet gieten en moet accepteren dat ook bepaalde delen van de code "niet mooi zijn", maar je moet focussen op wat voor je applicatie van belang is. Of de code voor het printen van de bankafschriften niet heel erg netjes is (maar wel werkt) is minder belangrijk dan de code die het hele proces van overboeken uitvoert (afboeken van rekening A en bijboeken op B). Die laatste code is de code die "belangrijk is voor de applicatie". Eric noemt de verschillende softwaregebieden. En zo vraagt hij ook altijd: wat je nu bouwt, wat onderscheidt je hier van de anderen? Want als dat niet onderscheidend is, dan is het waarschijnlijk goedkoper om dat deel te kopen dan het zelf opnieuw te bedenken. Tijd en energie moet gaan zitten in de delen die jouw applicatie onderscheiden van de rest.

PC 237: In de ingekomen mails (of bij de vorige podcast) werd LLBLGen genoemd, een ORM. Hoewel ik denk dat we inmiddels bijna allemaal het Entity Framework van Microsoft gebruiken, toch even de link naar de pagina van Scott Hanselman waar dit framework genoemd wordt. Ik vond dit een interessante uitzending! Rustan Leino spreekt hier over Spec # (Spec Sharp). Hij heeft bij een bedrijf gewerkt wat later overgenomen is door HP en werkt nu bij het research-deel van Microsoft. Hij had daarvoor ook al bij Microsoft gewerkt, Windows 3.0, Windows 3.1 en Windows NT. Met deze programma's kon hij onder andere drivers valideren, of er geen buffer-overflow, index-out-of-bound excepties op zouden treden. Maar ook of variabelen nooit een NULL waarde krijgen. Ik weet niet in hoeverre dat nu is, maar we hebben nu al in .NET 6 (en sowieso .NET 8) standaard dat je expliciet moet aangeven dat iets nullable "mag zijn" en het dus standaard niet is. Als dit hem echt is, dan werkt Rustan nu bij Amazon (linked-in pagina). Na een korte zoektocht heb ik online informatie gevonden, de originele research-pagina van Microsoft: link en een Powerpoint van 127 slides. Op de originele site zie je onder Related Tools dat JWT genoemd wordt, een Java-gerelateerd item, dit was allemaal Java-spul wat gebruikt is als basis voor Spec # (een uitbreiding op C#). Deze pagina, de tools, iets wat ik later hopelijk nog eens verder kan bekijken en misschien kan (her)gebruiken voor eigen validaties. Want het is supertof dat je jouw code "van tevoren kunt valideren" in plaats van dat je na 3 jaar van een klant een screenshot krijgt met een melding "index out of bounds".

PC 238: Wederom een goede uitzending! Carl en Richard spreken met Eric Sink en Martin Woodward over Continuous Integration en Source Control. In de huidige tijd heb je Github, Azure Pipelines, GIT en kun je zonder er al te veel moeite voor hoeven te doen zorgen dat je code op regelmatige intervallen (of op basis van webhooks direct na het inchecken) gebouwd en getest wordt. Dat was het ten tijde van deze uitzending (2007) nog niet. Je had eerst CVS (Concurrent Versions System), op het moment van deze uitzending is Subversion een actief systeem. Ook Visual SourceSafe wordt genoemd, zo te horen niet echt geliefd door de mensen die ermee moeten werken. Cruise Control.NET wordt genoemd als CI-systeem wat uit verschillende source-controlsystemen builds kan uitrollen. En ook testen kan uitvoeren. En schijnbaar was er bij een wijziging bij Visual SourceSafe dat wijzigingen niet direct doorgevoerd werden, maar er 20 seconden werd gewacht om te kijken of dat nog steeds de enige wijzigingen zijn. Branches worden hier genoemd (schijnbaar in die tijd iets nieuws, Carl noemt dit wat hij eerder "een fork" noemde. Ook komen de uitgesproken meningen voorbij, bepaalde merge-acties die automatisch door het systeem uitgevoerd worden, sommige developers "vertrouwen dat niet" (hoewel die algoritmes al 15/20 jaar gebruikt worden). Ook noemt Eric het voorbeeld van een klant die een branch had moeten maken, maar de code in een volledig nieuwe repository gezet heeft en nu de boel weer wil samenvoegen... Het principe van Edit, Merge, Commit komt voorbij. Ga je bestanden exclusief locken (zodat maar één persoon ermee kan werken) of zet je er geen lock op, laat je het systeem de merge-acties bepalen en als die er niet uitkomt, dan mag "de programmeur" bepalen welke "de juiste versie" is. Eric heeft aan Vault gewerkt, een opvolger van SourceSafe, waarbij ze de mogelijkheden behouden hebben, maar de zaken waar gebruikers niet blij meer waren eruit gehaald hebben. Voor 200 dollar te koop. Ook wordt nog gezegd dat "als je de mogelijkheid om CI uit te voeren, je het moet doen en dat je dan ook even denkt aan de mensen die het zouden willen, maar niet kunnen". Eric kent een aantal mensen bij AutoCAD en als die een CI zouden willen uitvoeren, dat proces duurt 8 tot 9 uur, dus dat is onwerkbaar. Bij de promotie van hun product, Vault, werd net gedaan alsof het een soort film was, wat hier nog terug te vinden is als filmposter en ook als site.  En nu hadden ze een t-shirt wat gratis uitgedeeld werd in comic-style en de tekst "Your code is suboptimal".  In de uitzending wordt ook genoemd dat Eric op zijn blog een heel epistel over source-control heeft uitgewerkt, bijna als een soort "online boek". Niet alleen om zijn eigen product te promoten, maar ook mensen voor wie source-control nieuw is op weg te helpen. Deze informatie staat (gelukkig) nog steeds online en is hier na te lezen. Bij de podcast van .NET Rocks staat ook nog een verwijzing naar een pagina op het blog van Martin Fowler over Continuous Integration. Heel uitgebreid, dus zeker de moeite van het lezen waard!

PC 239: In deze uitzending spreekt Rob McGovern over Virtual Earth. Virtual Earth bestaat volgens mij niet meer, dat is nu "Bing Maps". Je zou deze uitzending over kunnen slaan. Mocht je nog iets met SDK's willen doen, dat kan hier en er is ook nog een pagina met blogs: hier. En als je naar Virtual Earth gaat, kom je uit op Azure MAP api's.

PC 240: De ORM Smackdown! In deze online discussie nemen Ted Neward en Oren Eini het tegen elkaar op. De moeite waard. Ik zit wel redelijk in het kamp van Ted. Hij geeft ook aan dat mensen vaak voor de algemene manier kiezen, om op die manier te zorgen dat je zou kunnen switchen van databaseprovider. Maar... hoe vaak gebeurt dat? Bijna nooit. En dan mis je dus alle (snelheids)voordelen die je zou kunnen gebruiken. Ook goed om te horen dat het misschien wel "dynamische SQL" is, maar dat de boel gecompiled wordt en er daardoor niet veel verschil met stored procedures is. Het is vaak een keuze om stored procedures te gebruiken, voordeel qua snelheid en beter afgeschermd tegen "SQL injection". Maar de query's in ORM's gebruiken parameters, dus daar worden al zaken mee afgevangen. In een ingekomen e-mail zegt een luisteraar dat hij het blog van Oren volgt (ook bekend onder Ayende) en dat al bijna niet kan bijhouden qua berichten. Even gezocht, mogelijk ook voor mij interessant om te volgen: blog van Ayende. Ten tijde van deze uitzending is Entity Framework van Microsoft nog redelijk in de beginfase. Stored Procedures worden niet ondersteund. Ted is sceptisch over de toekomst. Maar volgens mij is het inmiddels het "leidende product". Er worden nog een paar (mogelijk) interessante boeken genoemd, namelijk Refactoring Databases door Scott W. Ambler en Database Tuning: Principles, Experiments, and Troubleshooting Techniques door Morgan Kaufmann. En de mannen zitten bij de aankondiging weer aan de whiskey. Woodford Reserve Bourbon. Ze hebben het nu zo vaak genoemd, ik moet ook maar eens een keer een flesje kopen bij de Gall & Gall of Mitra!