De 10 van Scott Hanselman - podcast 271 tot en met 280

Ingediend door Dirk Hornstra op 14-dec-2020 19:25

Als je zelf de podcasts van Scott wilt beluisteren, die zijn hier te vinden: https://hanselminutes.com/archives

In deze 10 podcasts worden een aantal zaken besproken die ik soms wel ken (zoals OWASP), maar nog te weinig mee doe. Trinity kende ik niet, maar omdat we net zoals Haixun zegt onze data steeds uitgebreider en tree / graph achtige structuur krijg, zou dit wel eens een goed framework kunnen zijn. En nog eens kijken of ik nog wat met die kaarten van de Elevation of Privilege kan doen.

PC 271: Scott spreekt met Fredrik Holmström over hoe hij IronJS gemaakt heeft. Hij wilde iets met noSQL en query's gaan doen en begon vervolgens met IronJS. Hij heeft dit volledig in F# gemaakt, ten tijde van dit interview zat de sourcecode rond de 9.600 regels en was net sneller dan het Javascript in Internet Explorer 8. Volgens hem zal het altijd 4x langzamer blijven dan de Chrome versie, omdat de DLR de vertragende factor is. Het project heeft 11.000 testen, waarvan er minder dan 400 mislukken. De Github-repo staat hier: link. De DLR die hij noemt (codeplex) staat nu op Github: link. Scott vraagt of hij in college ook een eigen compiler moest bouwen, maar dat is niet zo (hij programmeerde al jong), dus hij is een "natural". Een parser bouwen, etc. Het doet me terugdenken aan de opleiding Hogere Informatica die ik gevolgd heb, in één van die lessen hadden we het boek modern compiler implementation in Java wat me toen eigenlijk niet echt kon boeien. Maar nu ik deze uitzending gehoord heb, begint het toch weer te kriebelen. Toch dat boek nog eens doornemen?

PC 272: Scott spreekt met Barry Dorrans over de basics van web security. Barry werkt bij de automatisering van Microsoft en is dus verantwoordelijk voor de pop-ups die je krijgt als je geen Bitlocker op je pc geïnstalleerd hebt. Veel mensen raken geïrriteerd over veiligheidsmaatregelen. Barry benadrukt dat het ook wel vreemd is, de beloning voor het goed beheren van security is dat er eigenlijk niets gebeurt (geen grote hack, geen vertrouwelijke gegevens die openbaar worden), in tegenstelling tot andere dingen, als je daar iets goed doet, dan leidt dat tot iets zichtbaars. Lulzsec wordt genoemd, deze hebben ten tijde van de uitzending Sony gehackt (ook de opkomst van Anonymous): link. Ook komt owasp voorbij (link). Op nummer 1 staat SQL injection. Barry en Scott bespreken dat door ORM's SQL-injection steeds minder moet worden. Wel moet je kritisch blijven. Barry benoemt dat soms stored procedures gebruikt worden, waarbinnen weer SQL aan elkaar geplakt wordt: een nieuwe plek waar problemen kunnen ontstaan. Het andere punt was cross-site-scripting. Zo was een project van een groep studenten waarbij bleek dat het formulier van een bank alleen verstuurd hoefde te worden, geen extra controles. Door cookie-hijacking kan iemand anders jouw cookie her-genereren en vervolgens "als jou" over de site surfen. Barry noemt nog een aantal boeken, zoals Threat Modeling (Microsoft Professional) doory Frank Swiderski en Window Snyder. Ook benoemt Barry dat je op de Microsoft site over Microsoft Security Development Lifecycle je een tool kunt vinden/downloaden waarmee je meer inzicht in bedreigingen krijgt (link). Ook noemt Barry nog een soort kaartspel, Elevation of Privilege (EoP) Threat Modeling Card Game die hier te downloaden is: link.  De pagina waar je de tool kon downloaden, daar kun je ook veel informatie lezen, dat moet ik nog eens doornemen, want dat is de moeite waard. Zo ook de "speelkaarten", want het geeft je situaties die mogelijk ook in applicaties voorkomen die ik bouw en eigenlijk nooit over nadenk. Zo bespreken Scott en Barry ook het geval dat iemand binnengekomen is, wat voor extra blokkades werp je op? Scott werkte bij een bank, zodra er een overboeking gedaan werd, moest je nog extra wachtwoorden invullen. Barry geeft aan niet veel boeken meer te lezen, maar veel op Twitter te volgen. FX Cop wordt nog genoemd voor het schoon houden van code. Code-review is het enige wat goed kan werken, maar je kunt nog altijd wat over het hoofd zien. CAT.NET (van Microsoft) wordt genoemd en hier te downloaden: link. Zijn eigen Twitter gebruikt hij meer voor contact met mensen die hij in Engeland achter gelaten heeft, op zijn blog is wel meer info te vinden: https://idunno.org/. En hij volgt het blog van Bruce Schneier: link, hij noemt het blog van Adam Shostack: link.

PC 273: Scott bezocht met  Phil Haack  een open-source event en daar kwamen ze Anthony van der Hoorn en Nik Molnar tegen die Glimpse lieten zien. Scott dacht eerst dat het Firebug was, maar het bleek een eigen implementatie te zijn waarmee je op de cliënt kunt laten zien wat er op de server gebeurd is. Als het goed is, kun je dit via Nuget toevoegen. Ook staat de source-code op Github: https://github.com/glimpse/glimpse Package installeren, iets instellen in de web.config en dan zou je in je browser met een aanroep naar /glimpse.ext kunnen uitvoeren. Met een querystring kun je extra instellingen doen. Aangezien Phil en Scott erg enthousiast zijn lijkt het me de moeite waard om eens te bekijken. Ze doen het slim, door een HTTP Module extra HTML toe te laten voegen. Met een CSS reset op hun blokje zorgen ze dat "het oog" altijd goed in beeld staat. En omdat ze de stukken uit de source van jQuery overgenomen hebben, eigen prefixes gegeven hebben werkt het op sites met verschillende versies van jQuery (of die geen jQuery geïnstalleerd hebben).

PC 274: Scott spreekt met Erik Meijer over hoe je Javascript als een Assembly Language kunt zien. Je hoort dat het een Nederlander is en als het je op een bepaald moment opvalt dat hij wel heel vaak "you know" zegt, dan begint het een aflevering te worden die je zo gauw mogelijk wilt afronden. Het labs-project waar hij mee bezig was, Volta, is al heel wat jaren offline (wikipedia-link). Het java-alternatief, de Google Web Toolkit wordt genoemd, dat is te vinden op Github: https://github.com/gwtproject/gwt. Ook wordt ScriptSharp genoemd. Hiermee kun je in C# programmeren en javascript genereren. Er is een Github-repo: https://github.com/nikhilk/scriptsharp, maar de website is niet meer online. Ook het nuget-package is voor het laatst bijgewerkt in 2017, dus lijkt niet meer actief bijgewerkt te worden: https://marketplace.visualstudio.com/items?itemName=ScottDurowMVP.ScriptSharp

PC 275: Scott spreekt met Dan Fernandez over de Kinect SDK. De Kinect is uitgebracht (het is een camera en microfoon in één, kun je aansluiten op de X-Box en daarmee kun je de speler monitoren), deze kun je ook aansluiten via USB op je pc (dan moet je wel het juiste package kopen, want zonder voeding, dan zit er een andere stekker aan waar je niets mee kunt). Er gingen wat mensen "mee hacken", om te zien wat voor data er via USB binnen kwam en vervolgens heeft Microsoft een SDK uitgebracht zodat je er meer mee kunt doen. Dan legt uit hoe het werkt (resolutie van 320 bij 280, of 640 bij 480 of via software naar 1.024 bij 780). Hoe de afbeeldingen met rood, groen en blauw waardes binnenkomen, maar met een afstandscamera ook met de locatie waar dat punt dan zit (aantal millimeters vanaf de kinect). En het softwarematig detecteren van "skeletons", dus mensen. Het calibreren van de camera als je elleboog net buiten beeld valt. Hoe het soms wat "jitterig"-is, je hebt een demo-project waarbij je met je hand de muis kunt bedienen, maar er moet een bepaalde foutmarge gebruikt worden om het vloeiend te laten lopen. Dan noemt dat smoothing, daar zit een bepaald algoritme achter wat exponentioneel werkt. Dan legt niet het algoritme uit, maar verwijst naar Wikipedia: link. Je had wel eens een site waarin je een menu maakte en daaronder kwamen submenu's tevoorschijn. Maar ging je muis net over de rand, dan verdween het hele menu weer uit beeld en kon je opnieuw beginnen. Dit algoritme zou daar ook wel eens interessant voor kunnen zijn. Je kunt de SDK hier downloaden (er wordt gesproken over Windows 8, dus dit lijkt ook allemaal alweer wat verouderd): https://www.microsoft.com/en-us/download/details.aspx?id=44561. Volgens de beschrijving zitten er ook code-voorbeelden in het installatiepakket.

PC 276: In podcast 274 kwam Script# al ter sprake, in deze aflevering spreekt Scott met Matt Clay en Matt Davis die er een echt programma mee gemaakt hebben: Earth Class Mail. Ze gebruiken Script# om in C# code te bouwen en dit te compilen naar Javascript. De Javascript die er was, dat waren 1.000-en regels aan code. Ze waren bang om er iets mee te doen. Met Script# wordt de code gecompiled, eerst door de C# compiler, daarna door de Script# compiler. Dan heb je de eerste "unit-test" al te pakken. Het idee achter Earth Class Mail is goed trouwens. Bedrijven (en particulieren ook) kunnen hun post laten doorsturen naar een adres van ECM. Zij openen je brief, scannen 'm in en leveren deze digitaal aan. Dus geen pakken met post bij de receptie, maar meteen digitaal in je inbox. Qua geluid was dit een slechte aflevering, want het klonk alsof Matt en Matt via een 56k6 inbelverbinding bellen: "blikkerig".

PC 277: Scott spreekt met Ivan Towlson van Mindscape over Polyglot Programming. Het gaat hier over de tool die ze gemaakt hebben, de "web workbench". Het is een plugin voor Visual Studio zodat je ook met SASS, LESS en CoffeeScript kunt werken (nuget-link). C#, F#, Ruby, Javascript maken deel uit van Web Workbench. F# is volgens Ivan niet heel ingewikkeld om onder de knie te krijgen. Voor een parser is F# de perfecte taal. Ivan noemt voor C# parsers Irony (github-link) en Antlr (github-link). Ivan geeft een "big shout-out" naar Stephan Tolksdorf die met Fparsec een parser voor F# gemaakt heeft (github-link). Scott geeft aan dat sommige mensen bang zijn om andere talen binnen hun bekende C# of VB toe te laten. Maar sommige open-source projecten, daar zou hij bijna een moord voor doen om die te kunnen gebruiken. Zoals Hpricot, een geweldige HTML-parser in Ruby. Github-repo gevonden, inmiddels is dit project gestopt (omdat teveel mensen naar alternatieven overstappen): https://github.com/hpricot/hpricot Ivan geeft aan dat hij geen moeite heeft om andere code in C# te gebruiken, maar dat je wel rekening moet houden met afwijkingen. Zo is in C# een string "immutable" - niet wijzigbaar. Als je dat aanpast, wordt er een nieuwe string/object gemaakt. In Ruby is een string echter wel wijzigbaar. Dus in bepaalde situaties liepen hij daar tegen problemen aan. Ivan noemt http://fssnip.net/, een site met allemaal F# snippets. En nog een shout-out voor het project "Jurassic" wat Ivan gebruikt heeft voor het javascript-deel. En ook dit project kan op Github gevonden worden: https://github.com/paulbartrum/jurassic. Ook node.js wordt genoemd. En de site van Mindscape zelf, ze hebben een bit.ly link aangemaakt waarmee de luisteraar korting op hun producten kan krijgen. En na 9 jaar werkt die link nog steeds! De vraag is of de producten nog interessant zijn, want bijvoorbeeld Silverlight is er niet meer.

PC 278: Scott spreekt met zijn baas, Scott Hunter over het nieuws dat Scott Guthrie (the Gu, de man in the red shirt) naar het onderdeel Azure gegaan is. Allemaal nieuws/geruchten dat hij daarmee ook ASP.NET achter zich zou laten, maar niets is minder waar. De verschillende onderdelen (waar soms wel vergelijkbare software gemaakt wordt, wordt allemaal samengevoegd).

PC 279: Scott spreekt met Rafael Rivera. Rafael blogt over dingen die eigenlijk elke developer wel wil doen, maar niet de tijd voor heeft (of neemt). Zo had Rafael het spel Splinter Cell op Steam gekocht. Toen zag hij dat er oudere versies waren, die heeft hij eerst allemaal uitgespeeld. Maar toen kocht hij een nieuwe versie die niet goed werkte. In deze Splinter Cell werkte het deel van de weergave op het scherm niet goed of je nu in de schaduw was of in het volle licht. En dat is juist waar dit spel over gaat, in de schaduwen je doelen besluipen. Bestanden en mappen doorlopen en uiteindelijk via aanpassingen in een ini-bestand de fix opleveren (link). Een ander voorbeeld is een stuk hardware, een Hello Kitty die je aansluit via USB op je computer en die acties doet op toets-aanslagen. Dat deed niets. Toen kwam hij erachter dat het afgevangen werd in een "cliënt applicatie". Want in een Virtuele Machine met Windows XP werkte het wel. Scott komt met het punt dat veel developers hun programma builden voor "alle versies". Maar dan in de 64-bit versie codebibliotheken van 32-bit aanroepen (of iets dergelijks) waardoor het niet werkt. De tool corflags.exe schijnt hiervoor de ultieme oplossing te zijn. De tool wordt meegeleverd met Visual Studio (link). Het is Rafael gelukt en het verhaal is hier te vinden: deel 1 en deel 2. Rafael blijkt dus ook één van de mensen te zijn die het unlocken van je windows phone om er eigen software op te zetten (waarvoor je 99 dollar moest betalen) kon omzeilen en dat met de rest van de wereld gedeeld heeft (dat kwam in podcast 269 ter sprake). Microsoft is met de mannen om tafel gaan zitten en nu is er dus een tool gekomen waarbij het unlocken van je eigen telefoon "maar" 9 dollar kost in plaats van die 99. Een mooie deal/actie. Er gaat wel eens wat fout. Rafael had toegang tot een pre-versie van Bing en kreeg daarbij mooie backgrounds. En deelde die cookie met de rest van de wereld. Maar die cookie was ook je "sessie", waardoor zoekopdrachten van andere mensen in zijn profiel zichtbaar werden.  Voor managed code gebruik je Reflector, voor andere code gebruikt Rafael Ida Pro: link. Rafael geeft in de uitzending al aan dat het een "prijzig product" is, en dat is ook zo. Ik zie allemaal verschillende versies, waarbij je al gauw rond de 2.500 dollar zit.

PC 280: Scott spreekt met Haixun Wang van Microsoft Research Asia over Trinity. Als ik die naam hoor denk ik meteen aan de dame van The Matrix, de beste film "ever", maar het gaat hier over een Graph database en gedistribueerd parallel platform voor Graph data. Graph data is het voorbeeld dat Scott noemt (en ook op de site van dit project voorkomt) dat je op Facebook 150 vrienden hebt, die hebben ook weer 150 vrienden en die hebben weer 150 vrienden. Als je een lijst van al die vrienden wilt hebben en representeren in een eigen database en model, dan heb je heel veel recursie en data. En niet alle code/databases zijn daar geschikt voor, niet als je snel resultaat wilt hebben. Haixun noemt ook het voorbeeld van het zoekmachine-model, waarbij je door een site gaat, waarbij op elke pagina 15 links staan en je daar doorheen "crawled". Het project staat op deze Microsoft Research Pagina: link, er is een eigen project-pagina: link en het project staat ook op Github: https://github.com/Microsoft/GraphEngine. Zelf heb ik het wel eens met een functie in SQL Server gehad. Nadat de aanroepen 99 lagen diep was, kon er niet verder gezocht/geïtereerd worden, omdat dit een beperking is. Scott noemt een paar alternatieven, maar Haixun geeft aan dat die bijvoorbeeld wel werken op 1 server, maar niet verdeeld over meerdere servers over meerdere clusters. Neo4J (link) en Pregel van Google. Die kan ik niet vinden, wel een open-source alternatief van Apache, Giraph wat hier te vinden is en JPregel wat op Github staat:  https://github.com/kowshik/JPregel