.NET Rocks - podcast 161 tot en met 170

Ingediend door Dirk Hornstra op 11-dec-2023 20:23

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.

Zo nu en dan wordt in een uitzending genoemd dat er .NET Rocks TV gestart is, online via Flash te bekijken, je zou de AVI kunnen downloaden. Ik geloof niet dat dat er nog is (sowieso geen Flash meer), maar kwam bij het zoeken nog wel uit bij deze Youtube-video die ik hier wil delen, Richard Campbell over de historie van .NET (link)

PC 161: In het verleden deed Carl met Mark Dunn de .NET Rocks podcast. Deze keer is Mark de gast, hij praat met Carl en Richard over Infopath. Het is een soort Office-product, dus iets minder developer-gericht. Je kunt er formulieren meer opmaken, rapportages maken, het kan verbinding maken met meerdere data-sources (onder andere webservices) en slaat gegevens op in een soort XML-store. Het zou een soort alternatief kunnen zijn voor "Office-development", waarbij mensen met VBA zaken binnen Access, Excel en Word aan elkaar koppelen. Mark zegt dat voor het gebruik je altijd de applicatie op je PC moest hebben, het was onderdeel van de Office-suite (maar wel de Ultimate-editie of iets dergelijks), los was het ook te kopen. Wel was het mogelijk om het binnen een Sharepoint-omgeving te gebruiken. Volgens Wikipedia is het product tot 2013 ontwikkeld en toen gestopt: link. Op deze pagina van Microsoft kun je Infopath 2013 downloaden: link maar er staat wel bij dat je voor het downloaden en gebruik een Office 365 ProPlus abonnement nodig hebt. Ik had op deze pc nog Office 2013 staan (als je soms een briefje moet typen is een oude versie prima), de installatie loopt bij mij goed door. Bij opstarten wel de vraag om te activeren: anders kan ik over een maand  minder gebruik van maken (onderdelen worden uitgeschakeld). Dat doe ik niet, want als ik een "nieuw project" wil starten, moet je een bestaande XML selecteren. Bij een snelle Google-zoektocht kom ik op de site van Jeff Jones: link. Hij biedt de voorbeelden als ZIP-bestanden aan. Het werkt bij mij niet, omdat Infopath de melding geeft dat het "op een ander domein gepubliceerd is en je het alleen vanaf dat domein kunt laden" of iets dergelijks. Oké, dan laat ik het hier verder bij. Mocht jij er wel iets mee willen doen, dan heb je in ieder geval een paar handvaten waar je wat mee kunt. En deze zoektocht heeft ook nog wel wat opgeleverd, want Jeff heeft een interessant blog, dus iets om te blijven volgen! Daarna gaan we door met andere zaken. En die zijn interessant, want het zijn "probleemgevallen" en hoe je die oplost. Zo komt Mark met het "Database Project" wat je in Visual Studio 2005 kunt starten. Hij doet iets met een CLR-actie en dat werkt niet. Iemand anders komt met de tip: hoe zit het met je compatability-mode? En daar komt het inderdaad door. Want hoewel de boel op een SQL Server 2005 instantie draait, is deze database ingesteld op compatabiliteit met SQL Server 2000. En dan werken bepaalde zaken anders of niet. Het gaat om de Northwind-database, de voorbeeld-database van Microsoft. Die zat niet meer bij 2005. Je kunt met scripts die hergenereren, maar hier heeft iemand een bestaande .MDB gekoppeld. Mocht je ooit nog eens wat voorbeeld-data nodig hebben, via Github hier te vinden: link. Het volgende verhaal gaat over een asynchrone data-reader. Mark was les aan het geven en liet dat zien, daarmee zorg je dat de UI nog werkt, dus je kunt het formulier nog heen en weer slepen. Tot iemand vraagt om een extra join toe te voegen en alles zo traag en de CPU op 100% staat te stampen, dan hij Carl vraagt (die in het lokaal er naast bezig is) of hij eens wil kijken. De oplossing blijkt simpel te zijn, die data-acties gebeuren op een eigen thread. En die moet je nog even expliciet de .PriorityBelowNormal geven om te zorgen dat de UI altijd reageert en het proces alleen resources krijgt als die beschikbaar zijn. Carl noemt nog even dat je ook een sleep van wat milliseconden kunt toevoegen, maar Richard reageert daarop dat je dat dus niet moet doen: want stel dat je niets met de interface doet, dan is die "sleep" overbodig en zorgt alleen maar dat de verwerking langer duurt, de prioriteit instellen is de enige juiste oplossing. En het laatste issue is dat Mark de performance-counters laat zien dan er ineens een heel stuk geheugen "bam" beschikbaar komt. Waarop de klas reageert: dat is cool, maar wat is er aan de hand? Dat blijkt de normale werking te zijn, je programma krijg resources en als die niet meer nodig zijn, dan worden ze vrijgegeven, het is gerelateerd aan JIT, waarbij eerst veel verbruikt wordt en het later niet meer nodig is. Windows / .NET is slim genoeg om dat op de juiste/correcte manier te doen, dus ga dat vooral niet zelf implementeren. Uitleg kun je hier vinden: link. En om de uitzending af te sluiten bedankt Carl Mark voor zijn geweldige whiskey/bourbon smaak. Woodford Reserve schijnt een geweldig drankje te zijn. Ik ben meer van een biertje of een glas wijn, maar mocht ik voor wat sterker spul gaan, Gall en Gall heeft het: link.

PC 162: Carl en Richard spreken met Steven Forte over Outsourcing en Globalisatie. Steven is al eerder in DNR te gast geweest (volgens Richard is dit zijn 3e optreden). Steven was vroeger programmeur en moest niets van outsourcing hebben. Daarna werd hij consultant, kwam de dotcom crash en door contacten is dit nu een "way of life" voor hem geworden. In India zitten nu 2 bedrijven waar voor hem gewerkt wordt. Hij geeft aan dat je daar dus ook heen moet, persoonlijk de mensen in de ogen kijken, de ontwerpen doornemen, kijken hoe het team samengesteld is. Hij heeft ook nog een mooie anekdote over zijn nichtje, hij reist namelijk de wereld over (Parijs, maar ook Pakistan) en dat zei zijn nichtje op school. En dat gebeurde zo vaak dat de lerares dacht dat ze loog of een te grote verbeelding had. Totdat ze op school toen het nichtje weer wat zei op Google gingen zoeken en op zijn website uit kwamen en zagen hoe hij inderdaad in Pakistan zat. In New York zit nog een developer die verantwoordelijk is voor een deel voor de code en die zorgt dat alle externe programmeurs aangestuurd worden. Ook komt ter sprake dat vroeger gedacht werd dat door de verschillende tijdzones je voordeel hebt: daar wordt iets gefixt en in jouw "normale werkuren" is het dan al klaar. Volgens Steven heb je daar meer last van dan voordeel. En ook geeft hij aan dat de externe programmeurs "exact maken wat je vraagt". Dus geen eigen initiatief of "mitsen/maren". Je moet dus ook de cultuur goed kennen. Want zo liep een bepaalde feature qua tijd te lang door: het bleek dat developers "daar" geen vragen stellen of het melden als ze ergens op vast lopen (en ze vervolgens 2 weken lang gaan uitzoeken waar het aan ligt). Dus je moet zelf goed de vinger aan de pols houden. Maar ook dat ze heel andere feestdagen hebben, zo is er ergens een week waarin niet gewerkt wordt: als jij een deadline hebt, dan heb je een probleem. Volgens Steven is niet elk bedrijf hier geschikt voor. Hele grote bedrijven kunnen hiermee werken en jonge "start-ups". Middelgrote bedrijven, die zou hij het niet aanraden. Richard en Steven hebben de Mount Everest beklommen, daar komt ook nog een mooi verhaal van voorbij. Hoe Steven een "professionele bergbeklimmer" is: Richard, maak nu even een foto van mij op de top. Daarna geeft hij over en gaat weer door. En naar beneden, dat gaat zo snel/dat doet hij rennend, zodat de sherpa hem niet meer bij kan houden, ergens halt houdt en zegt: "volgens mij weet u de weg wel te vinden".

PC 163: Barry Gervin spreekt met Carl en Richard over LINQ. LINQ is nu "standaard", maar in deze tijd is het nog een "opkomende techniek". Dus voor mij is er in deze uitzending niet veel "nieuws" te horen. Wel nog in de keywords die Carl noemt, want natuurlijk ken ik de SELECT, FROM, ORDERBY, maar er wordt ook nog een "FOLD"  genoemd (ik heb die nog nooit gebruikt), TakeWhile/SkipUntill, ToDictionary. Barry heeft met Delphi gewerkt en hij noemt PowerBuilder. Die tool/programmeertaal (?) kende ik niet, via Wikipedia kom ik op een productpagina, waarop ik zie dat het nog steeds een actief product is: link. ADO.NET leek veel op wat PowerBuilder kon. ObjectSpaces wordt genoemd, het klinkt alsof dat iets is waar al jaren over gesproken wordt, maar niet van de grond komt. Als ik even zoek lijkt het een soort ORM mapper, ik neem aan dat Entity Framework daar de uiteindelijke vervanger/implementatie van geworden is. Bij de afsluitende vraag welke "coole software" hij gedownload heeft komt hij met een iets uitgebreider antwoord. Scott Hanselman kwam al eerder met TimeSnapper: link. Het maakt op intervallen screenshots van je scherm. Zodat je later terug kunt kijken: wat deed ik rond dat tijdstip ook alweer? Barry zou zelf een soort GEO-snapper willen maken: waar was ik op welk moment? En dat kan met de nabije WIFI SSID's. Op de site wigle.net kun je dat namelijk terugvinden: link. Binnenkort kijken of ik een account aan kan maken, volgens de kaart zijn er SSIDs in mijn buurt, benieuwd of dat inderdaad recente data is.

PC 164: Brian Noyes spreekt over data binding in .NET 2.0. Vanaf VB3 was dit schijnbaar al een dingetje, maar nu in .NET 2.0 is het op een goede manier geïmplementeerd. We beginnen de show met een e-mail van een luisteraar (Joseph Schmelzer), die heeft voor Windows Mediacenter wat gemaakt zodat de .NET rocks uitzendingen met toelichting daarin bekeken kunnen worden. Ik kan hem niet online vinden en ook de shrinkster URL (/c31) is niet via archive.org terug te vinden. Spijtig dat bepaalde zaken online dan toch verdwijnen. In ieder geval, terug naar de uitzending met Brian. Hij heeft een boek erover geschreven, Data Binding With Windows Forms 2.0.  Ook click-once komt voorbij. Brian schijnt daar al jaren over te praten, maar het is nu eindelijk mogelijk. Je programma online beschikbaar, wordt op je pc geïnstalleerd (smart cliënt) en bij opstarten wordt gecontroleerd of er een update is (en deze wordt meteen doorgevoerd). Ook komt ter sprake hoe het zit met rechten (mag je wel of niet zaken in de Windows Registry doen, nee: dan komt er een prompt om te bevestigen). Rocky Lhotka schijnt gezegd te hebben: wat voor knoppen je ook toont, de gebruiker gaat toch wel klikken op "ik wil vandaag aan het werk".

PC 165: Nick Landry spreekt over hoe het ontwikkelen voor mobiel er op dit moment voor staat. Hij heeft een Palm device waarop Windows Mobile draait. Deze uitzending kun je overslaan, het blog van Nick activenick.infusionblogs.com, lijkt niet meer online te staan.

PC 166: Joe Duffy spreekt over concurrency. Dat is altijd een interessant onderwerp. Bij de opleiding Hogere Informatica is dit ook wel voorbij gekomen, maar in het programmeren waar ik mee bezig ben komt het niet zoveel voor. Misschien is dat iets wat ik wel zou moeten doen. Veel pc's en servers hebben meerdere CPU's. En als je bepaalde processen "parallel" kunt laten draaien, dan is het sneller klaar. Als "mens" denk je gauw sequentieel, omdat je dat zelf ook op die manier doet. En het is veiliger, omdat je minder risico loopt op "locks" die niet vrijgegeven worden: deadlocks en dergelijke.

De uitzending begint met Carl, hij is bezig geweest met "pwop catcher". Een soort iTunes, een Torrent-client om podcasts te downloaden. Heeft zelfs een domein, maar is zo te zien niet meer online (via archive.org). Dat verwijst naar intellectualhedonism.com, wat je doorstuurt naar franklin.net. En daar is het laatste bericht van 2016. Laat dat maar zitten. Via archive.org kun je hier nog wel een paar screenshots zien.

In ieder geval, terug naar Joe. Hij blogt regelmatig op bluebytesoftware.com, dat is nu een "geparkeerde site". Carl noemt threads en hoe deze de hele interface kunnen blokkeren als de boel op 100% staat te stampen. Door de prioriteit op .BelowNormal te zetten werkt het. Joe noemt dat veel mensen het fout doen, door threads op de UI thread uit te voeren. Zulke zaken zou je via een background-thread of iets dergelijks moeten doen. Zo komt nog een mooie "bug" ter sprake. Als je 25 threads in de threadpool hebt, wachten die op de 26 thread om een event te triggeren. Maar omdat die 25 staan te wachten komt dat event nooit: een deadlock. Carl geeft ook een voorbeeld van hoe hij dacht iets slimmer te doen, iets met podcasts en het genereren van bestanden. Dat kon concurrent. Maar toch niet dus. Want ze moeten allemaal naar dezelfde schijf geschreven worden, dat kan maar door 1 proces gedaan worden (of processen moeten met elkaar afstemmen wie waar wat gaat wegschrijven) waardoor het juist langer duurt. Je kunt concurrency gebruiken, maar je moet dus wel goed kijken waar dat nut heeft.

Ook het "lock" keyword in C# wordt genoemd. Je kunt een object locken, maar ook een stuk code. Mutex en semafoor komt voorbij. Een semafoor heeft een teller. Als iemand deze pakt, dan gaat er 1 vanaf. Als de waarde 0 is en een proces wil een semafoor pakken, dan moet deze wachten tot er weer 1 beschikbaar komt. Een mutex is als een semafoor, maar heeft een aantal van 1 (dus 1 proces kan wat doen, de rest moet wachten tot dit proces klaar is). Een semafoor gebruik je voor iets waarbij het aantal eindig is, zoals het aantal databaseconnecties wat in een pool beschikbaar is. Joe legt ook uit hoe het aanpassen van de prioriteit van een thread niet altijd goed is, omdat als het een codebibliotheek is waarin dat gedaan wordt, het invloed kan hebben op code in een andere app-pool. Joe heeft een tool gemaakt om "deadlock-detection" uit te voeren. Hij heeft een artikel hierover geplaatst in MSDN magazine. Hier de link voor het magazine, hier de link naar het artikel.

PC 167: Security update met Patrick Hynds. Patrick is eerder in een uitzending geweest. Patrick is net als Carl en Richard een "regional director". Dat is iemand die niet van Microsoft zelf is, maar wel met Microsoft spreekt. Een mooie manier om feedback te krijgen. Zo zijn Team System licenties ter sprake gekomen, dat was best duur. En niet te doen voor kleine bedrijven. Resultaat is dat er een goedkopere variant voor kleinere bedrijven beschikbaar is gekomen en dat is een succes. Richard noemt Ted Neward die een boek schrijft over "project automation". Dat boek kan ik niet vinden, wel andere. Ik vond ook nog zijn blog welke interessante artikelen bevat. Ik verlaat even de podcast, want ik vind nog wat meer linkjes. Een nuget-package: Oak. En via zijn blog de tip om het boek "Release It!" van Michael Nygard te lezen.

Door met de uitzending. Patrick werkt bij CriticalSites, een bedrijf met consultancy voor security. En ook bezig om producten te maken welke daarbij kunnen helpen. Patrick en Richard noemen het punt dat je "een systeem niet snel genoeg kunt patchen". Want zodra je server online is en je bent bezig om de security-updates te downloaden, dan is de kans groot dat je systeem al "under attack" is. Patrick noemt ook het feit dat applicaties vaak niet veilig zijn. Hij had een klant waarbij ze heel goed de focus op SQL injection hadden, maar waarbij er ergens een testpagina was waar dat niet goed afgevangen was en deze pagina was online te bereiken: de "backdoor" om binnen te komen. Je kunt wel 95% "secure" zijn, die 5% is waar hackers zich op richten en wat je de das om gaat doen. Tijdens deze uitzending is "session hijacking" een veel voorkomend exploit. Patrick geeft het voorbeeld van een site waarbij de sessie-ID voorspelbaar is, een site met een "hoog volume aan gebruikers" heeft en je zo een sessie van iemand anders "kunt overnemen". Patrick noemt hierbij OpenHack, die site van Microsoft kende ik nog niet. Een ander punt is cryptografie. Hoe snel zijn de computers inmiddels en hoe snel kunnen ze zaken ontrafelen. Als het goed is weet je dat MD5 allang niet meer een "veilig hashingmechanisme" is. En zo zijn er meer cryptografische algoritmes die niet meer als veilig beschouwd worden. Zaken waarmee je een NT4 machine kunt hacken, daarmee kom je niet meer binnen op een Windows 2003 machine. Carl noemt het voorbeeld van een collega die zijn XP computer nooit ge-update had. Patrick noemt hierbij dat het zelfs vaak zo is dat een hacker die binnengedrongen is zorgt dat systemen automatisch gepatcht worden, hij/zij doet dat om te zorgen dat andere hackers juist niet meer binnen kunnen komen! Obscurity komt ter sprake. Je hebt een site op IIS draaien, maar volgens de headers lijkt het alsof de site op een Apache-machine draait. Carl zegt tegen Patrick dat hij meende dat Patrick daar geen fan van was. Patrick nuanceert dat, zolang het maar niet het enige is wat je doet om te zorgen dat zaken secure zijn. Want het is wel een aardige "fix" voor bots die automatisch miljoenen sites crawlen en op basis van die headers besluiten: deze sla ik over.

Pat noemt het feit dat je zoveel mogelijk poorten moet afsluiten. En als er dan wat open staat, dan moet je weten wat er over de lijn gaat. Hij noemt als voorbeeld FTP: hier gebruikt hier altijd wachtwoorden voor die minimaal 14 karakters lang zijn. Carl vult nog aan: en zet anonymous FTP uit! Richard komt met het punt dat je altijd een NAT-router in je eigen netwerk moet hebben. Pat noemt de factoren die meestal zorgen voor slechte security zijn: ignorance (onwetendheid: oh, kun je via een query-string je SQL-statement aanpassen dan?), denial (ontkenning: wij zijn geen interessante partij, dus we hoeven onze systemen niet te updaten) en convenience (gemak: een 14 tekens lang wachtwoord is veiliger, maar ik vind het makkelijker om de naam van mijn kat te gebruiken (en Felix is maar 5 tekens)). Ook wordt in deze uitzending genoemd dat het vervangen van bepaalde tekens door cijfers (leetcode) niet altijd veiliger is. Pat heeft hackers in dienst. Zijn wachtwoord is een "passfrase", een te onthouden zin. En daardoor is het 52 tekens lang. En dat is nodig, want die hackers/werknemers vinden het een geweldige uitdaging om zijn wachtwoord te "hacken" (en dat is ze dus ook eerder gelukt, daarom is het nu zo lang en niet meer te achterhalen). Dan komt nog de tip die al eerder genoemd is, namelijk eerst een account met algemene naam aanmaken die administrator is. En dan vervolgens het administrator-account hernoemen en geen rechten meer geven. En monitoring toevoegen, zodat je kunt zien wie "slechte dingen" probeert. Ook het voorbeeld dat je 3 personen die admin-zaken mogen doen ieder hun eigen admin-account geeft. Want als er dan wat gebeurt, kun je dit terug voeren naar 1 persoon, dat kan niet als je een "algemeen admin-account" gebruikt en dat dus door meerdere personen gebruikt kan worden. SQL-statements in code, dat "ga ik later omzetten naar een Stored Procedure", ik laat er "later nog een DBA naar laten kijken": dat gebeurt niet. Dus doe het meteen goed.

Naast het feit dat je voor elke site/omgeving een eigen wachtwoord moet hebben, kwam Pat ook met een goede tip voor het bedrijfsleven. Bij een bedrijf was één van de regels: de wachtwoorden die je hier gebruikt, zijn wachtwoorden die je NIET bij je persoonlijke accounts gebruikt. Want als daar iets gehackt wordt en ze zien dat je werkt bij "bedrijf X", dan wordt geprobeerd om binnen te komen bij "bedrijf X".

Pat komt met een voorbeeld: een bedrijf deed validatie op de input. Als er DELETE in stond of enkele quotes, dan werd die data verwijderd. Maar de rest werd wel uitgevoerd. Dat zou Pat nooit doen, hij vergelijkt het met:  "oh, je probeerde me dood te maken, doe dat niet weer. ga maar verder.". Het erge was ook nog dat die code "op de cliënt-kant" stond! Dus je kon zien wat er gebeurde, maar het mogelijk ook nog beïnvloeden. Omdat de controles ook nog sequentieel waren (zit er een delete in, zit er een quote in) gat Pat dit statement door ...DELE'TE... - je ziet dat er 1 enkele quote in zit, geen match op delete, quote weg: nu wel delete, maar geen controle meer... Je moet controleren wat de input is, voldoet het niet, geef het terug met een foutmelding.

Pat komt ook nog met een mooi voorbeeld voor een lock-out strategie. Stel, als iemand 10x foutief inlogt en dan "geblokkeerd" wordt, dan zou een "externe partij" al je werknemers langs kunnen gaan, bij ieder 10 foutieve inlogpogingen doen en daarmee hun accounts blokkeren. Oeps! Pat zegt, je kunt beter na die 10e keer extra controlevragen stellen. 1 vraag erbij. Weer fout? 2 vragen erbij. Weer fout? 4 vragen erbij. Wat gebeurt er als de "echte" medewerker in wil loggen? Die ziet dat hij/zij 64 vragen moet beantwoorden en belt meteen met systeembeheer: wat is dit voor sh*t? Je heb nu ineens een "menselijk alarm" beschikbaar!

Pat noemt The Code Room, uitzending over het hacken van een casino in Las Vegas, volgens mij is één van zijn werknemers die daar aan mee doet. The Code Room was een site van Microsoft (wikipedia), via het archief kun je hier de pagina nog bekijken en volgens mij is dit filmpje op Youtube de uitzending, dus nog even bekijken!

Pat geeft het voorbeeld van een LM hash. Zijn Dell pc is niet supersnel, maar kan 5 miljoen hashes per seconde maken. Hij hoeft maar "17.5 biljoen" mogelijkheden te testen (als je wachtwoord korter dan 15 tekens is). Wat ongeveer een halve maand is. Als je 1x per maand je wachtwoord wijzigt ben je (dus) te laat.

PC 168: Test Driven Development met Jean Paul Boodhoo. De websites van Jean Paul doen niet zoveel, in de uitzending wordt jpboodhoo.com genoemd (werkt niet meer) en bij online zoeken kom ik uit op developwithpassion.com maar ook die doet het niet meer. Interessante uitzending. Ik wist deels wat TDD is (bouw testen voor je code), maar niet dat je eigenlijk eerst de testen bouwt (waarbij de code er nog niet is!) en je dan je code gaat bouwen om zo de testen te laten slagen. TDD gaat meer over "design". Er zijn mensen die bij hun code Unit Tests maken en dan zeggen: "ik doe TDD". Maar dat is dus niet zo, ze doen geautomatiseerde testen, maar geen TDD. In de uitzending wordt nMock2 genoemd, dat lijkt iets wat inmiddels verouderd is. Met TDD gaat er heel veel tijd in de testen zitten. Maar als je later je code moet refactoren weet je wat er gebeurt. JP heeft een oplossing met 39 projecten waarin code aangepast moet worden. Je weet dat "er iemand anders ook met zo'n refactoring bezig is, maar geen testen heeft om te valideren of wat je doet wel goed is".

Ook pair-programming komt ter sprake. Alleen heb je nu niet 1 persoon die aan het typen is en de ander die "er bij zit", maar de ene schrijft de code, de ander schrijft de testen. En na verloop van tijd wissel je de werkzaamheden. Richard zegt dat dit ook een hele goede manier is om iemand die "nieuw" is zo in te werken in de organisatie / in de manier hoe "wij" onze code bouwen. Ook noemt Richard dat je als je met zijn 2-en bent je vaak productiever bent, als je in je uppie in code zit, ergens tegenaan loopt, dan kun je makkelijk 8 uur in rondjes door je code gaan en pas aan het einde van de dag het licht zien. Als je met zijn 2-en bezig bent is het na 10 minuten: wil jij eens kijken/kunnen we dit anders doen.

Bij de projecten van JP wordt Continuous Integration uitgevoerd, gebruik gemaakt van onder ander CruiseControl.NET. CI is geen tool, het is een proces. Zo komen ook de notificatie-types voorbij bij een "broken build", zwaailichten, quotes uit Monty Python. JP noemt Dr. Neil Roodyn "introducing agile to .NET developers". Het eerste voorbeeld is een paint-applicatie 'test-first', dus iets waarbij je een grafische weergave verwacht, hoeft dat niet te zijn. Dat boek kan ik niet vinden, maar ik vermoed dat hij het over eXtreme .NET: Introducing eXtreme Programming Techniques to .NET Developers bedoelt.

De "coole tool" waar JP mee komt is iets wat in een uitzending van Scott Hanselman voorbij gekomen is: SlickRun. Het is een soort command-line in Windows, je kunt hier de post van Scott lezen. De url is https://bayden.com/slickrun/ maar die doet bij mij niets... Via archive.org kun je deze nog wel vinden (en ook daar de download uitvoeren, mocht je de tool willen gebruiken).

PC 169: CSLA.NET 2.0 met Rocky lhotka. Rocky is al eerder geïnterviewd, CSLA is ook toen al voorbij gekomen. In 2023 was Rocky ook bij Techorama in Nederland: programma-link. Die presentatie is zo te zien meer gericht op micro-services (ik was zelf dit jaar niet bij Techorama, wel een paar collega's). Ik zie dat er nog foto's van deze editie in dit album te bekijken zijn. En via Techorama kom ik ook nog op de Mastodon-pagina van Jaspio, zo te zien ook een developer die events bezoekt (die ik ook had kunnen bezoeken).

In ieder geval, terug naar CSLA. De website is nog steeds online en dat geeft (volgens mij aan) dat het een goed product is. Ik ga kijken of ik bij een volgend (persoonlijk) project wat ik ga starten meteen start met CSLA en waar mij dit kan ondersteunen. De basis is volgens mij dat je jouw "business-logica" op 1 plaats hebt staan. Je kunt zaken "binden". En daarmee hoef je geen checks/logica in de views toe te voegen.

Bij de start van de show worden nog wat e-mails behandeld. Zo wordt onder andere Venkat Subramamiam genoemd, auteur van onder andere het boek .NET Gotchas. En hij heeft nog meer boeken geschreven.
Carl vraagt hoe Rocky staat ten opzichte van TDD. Rocky geeft aan dat hij de Visual Studio experience wil en als je zonder code begint, heb je niet zoveel aan de intellisense, het deel wat je juist "sneller" maakt in Visual Studio.

Rocky is met CSLA gestart in VB5, op het moment van deze uitzending is dit framework iets waar hij al 10 jaar aan werkt. Het framework/ de code is gratis en om toch iets terug te verdienen op zijn inspaninningen zou je zijn boek kunnen kopen: Expert C# 2008 Business Objects. Die versie is voor .NET 3.5 (de versie die tijdens deze uitzending besproken wordt is .NET 2.0). Qua framework zitten we op 4.8.x (maximaal). De gedachte en structuur van de code zou volgens mij ook in de huidige versie nog gewoon moeten werken (en ook in .NET core).

Er komt nog een "bugje" voorbij in het .NET Framework, hoe je bepaalde tekst invoert en na het verliezen van de focus het achterliggende object bijgewerkt wordt (de INotifyPropertyChanged interface). Maar... het invoerveld wordt niet bijgewerkt. Dus wordt de tekst bijvoorbeeld "upper-case", dan zie je dat pas op het moment dat je het volgende veld bijwerkt en dat veld verlaat. Erg verwarrend dat je ineens ziet dat tekst in een veld waar je op dat moment niets in aangepast hebt ineens verandert. Dat was dus een "stukje optimalisatiecode".  Voor de rest niet veel extra informatie, start gewoon eens met CSLA!

PC 170: Gesprek met Tim Huckaby over Avalon, Ajax, Vista en meer. Tim is ook een vaste gast. En het praat maar wat door, je kunt deze aflevering wel overslaan.