post-header-photo

Microsoft’s Open Source Journey – From The Death Star to Open Source .NET Core by Scott Hanselman

Op 29 december 2018 kwam ik een retweet tegen door Scott Hanselman zelf van een tweet van Fanie Reynders over dat Scott op 2 februari 2019 naar Nederland komt, naar Den Bosch, Theater de Parade om exact te zijn, georganiseerd door .NET Zuid.

Meteen naar de pagina gesurfd en me aangemeld, want behalve dat ik de goeroe van Microsoft wel eens in het echt wil zien, ben ik ook wel benieuwd wat voor verhaal hij heeft. Ook mijn collega Anne is geïnteresseerd, dus op 2 februari rijden we naar het zuiden van het land. Onderweg nog een korte stop bij de Esso Groenekan (in de buurt van Utrecht) voor een broodje met een netjes in stukjes gesneden gehaktbal. En een prima cappuccino uit de automaat. Rond 14.15 uur zijn we bij de parkeergarage aan de St. Josephstraat, hier staat een rij van auto’s, maar op de 5e laag is er nog ruimte vrij om te parkeren. Door het in de rij staan hebben we wel een grappig detail gezien, de parkeergarage is een wat ouderwets gebouw, je gaat wat naar beneden en waarschijnlijk loopt er water langs, tegen de zijkant van het tegenoverliggende gebouw hangt een varkenskop met een nonnenkap op, via Google Streetview kun je het zien: link.

Volgens de planning zouden de deuren open gaan om 14.30 uur, maar als we om die tijd naar binnen lopen is het er al druk. Jas inleveren bij de garderobe en even later kunnen we al de zaal inlopen. Scott staat al op het podium met de organisatoren van .NET Zuid te praten. Allemaal wat inschuiven en om 15.00 uur gaat we los. We zouden 2 sessies hebben, van 15.00 tot 15.45 en 16.00 tot 16.45, maar omdat Scott een trein moet halen (en het anders waarschijnlijk te lang gaat duren met weer plaats nemen e.d.) is het één lange sessie van anderhalf uur.  Daarna tot uiterlijk 18.00 uur het “sociale deel” en de drankjes. Jowen Mei doet het intro. Hij vertelt dat de groep .NET Zuid drie jaar geleden gestart is en dat toen gezegd is “als we Scott eens kunnen laten spreken op een door ons georganiseerd event, dan hebben we ons doel gehaald en kunnen we de stichting opheffen”. En dat is het eindelijk zo ver, Scott is here! Scott maakt een grapje dat hij de uitnodiging uit zijn spam-folder gevist heeft 🙂

Daarna nog even een kort praatje door Daan van Ishoven namens ABN-AMRO. ABN-AMRO heeft het mede mogelijk gemaakt en de drankjes na de tijd worden door ABN-AMRO betaald. Een slimme zet, want banken worden ook steeds meer omgevingen waar software wordt ontwikkeld en waar je goede developers nodig hebt.

Daarna volgt de presentatie van Scott. Met de nodige humor. En soms wel wat kritiek. En zoals hij zelf zegt, alleen hij weet of het gemeend is of een grapje is 😉

Zo heeft Scott de plug-in bing-newtab in Chrome. Je krijgt het zoekscherm van Bing met een mooie achtergrond (elke dag wat anders), maar als je zoekt, ga je door naar Google. 

Hij vraagt of mensen weten dat hij podcasts maakt. Dat wist ik wel, maar ik heb ze (nog) niet beluisterd en wist ook niet hoeveel er waren: 669 stuks. Met allemaal verschillende (interessante) personen. Scott geeft de jongens van .NET Zuid het advies om nog niet te stoppen, uit deze personen zijn nog genoeg interessante sprekers te halen! Ik zal die podcasts binnenkort downloaden en op CD zetten zodat ik ze in de auto kan beluisteren (net zoals mijn oud-collega Frank Booij doet). De podcasts noemt hij de Hanselminutes, omdat niet altijd duidelijk is hoelang zo’n sessie gaat duren. Net als bij andere programmeurs, als gevraagd wordt hoe lang een bepaalde klus duurt, dan kan het antwoord 30 minuten zijn. Vraag is dan of het echte minuten zijn of “Hanselman-minutes”. Want een Hanselman-minuut duurt 10 “echte”  minuten. Hierbij de rechtstreekse link naar alle podcasts: link.

We komen op de factor open-source. Volgens Scott is dit een aantal keer eerder gedaan door Microsoft. Minder succesvol. Java was open-source en ook .NET moest eraan geloven. Maar daarbij werden delen uit de code weggehaald (garbage-collection, just-in-time debugging) en als ZIP-bestand aangeboden, dus zonder terugkoppeling uit de community. 

Maar goed, dat was 2001, nog geen GIT. Patches werden nog via e-mail verzonden. Er was geen social web. Hierna zien we een overzicht van de ASP (.NET) ontwikkeling. 1996 de classic ASP, 2002 ASP.NET. 

De zaken liggen nu compleet anders. Code is nu eigenlijk “open by default”. Lag de juridische afdeling in het verleden vaak dwars om dat te voorkomen, soms moet dat nu zelfs afgeremd worden. Want er waren in het verleden genoeg regeltjes. Kon code eerst nog openbaar gemaakt worden als je een sample van 100 regels had, vervolgens werden die grenzen steeds meer opgerekt naar 1.000 regels, 10.000 regels. Inmiddels is 62% “outside contributions” aan de code. 

Scott neemt de verschillende .NET’s onder de loep. Zo heb je de .NET Frameworks die in Windows staan. Er bestaat angst om dit te updaten naar een nieuwe versie omdat dan de vraag is “werkt de oude code nog zoals gewenst”. Daarnaast heb je .NET Core en Xamarin. Mono die daarvoor draaide was eigenlijk bedoeld om in C# een mailapplicatie (thunderbird?) te maken. Toen bleek dat je daar het .NET Framework voor nodig had, hebben de developers gezegd “dan maken we die toch ook zelf”? En ze hebben dat gedaan. Zonder de huidige code te bekijken. Waardoor je onder water een andere implementatie hebt van de code maar wat aan de “buitenkant” precies hetzelfde doet als wat je verwacht.

Scott laat wat voorbeelden zien, in Powershell/prompt en browser. Zo heeft hij de developers-tools open in Chrome en doet een rechtermuisklik op de refresh-knop. Je kunt dan voor een “harde reload” kiezen. Ook switcht hij tussen verschillende directory’s in de terminal en heeft daar het volgende trucje voor: met pushd plaats je de huidige map op de stack, als je later ergens anders zit kun je met popd weer terug naar je vorige map. Met F7 kun je de historie zien. Is dit nieuw? Nee, het schijnt al jaren in MS-DOS te zitten. Kan je flink wat cd-commando’s in je batch-file schelen 🙂

Ook heeft Scott een Notepad2 op zijn computer, regelnummers, extra werkbalk. En zien we even Visual Studio 2019 voorbij komen. 

We komen op de standaard bibliotheken van .NET. En hoe je bij Node op 17 verschillende manieren een HTTP-call uit kunt voeren. En hoe als je daar een opmerking op Twitter over maakt het heel snel een flame-war kan worden van mensen die dit juist goed/handig vinden tegenover mensen die het helemaal niets vinden.

We zien een voorbeeld in de browser waarbij mono als een web-assembly meegeladen wordt. Dit is blazor, waarbij je HTML en C# in je browser kunt laden. 

Mono bevat een tree-trimmer, dus alleen de functies/functionaliteit die gebruikt worden, worden mee geladen. “Oude” WinForms-projecten zou je met de .NET standaard libraries om kunnen zetten. Zo zien we een 15 jaar geleden gemaakte “Memory-game” die nu in de browser werkt. En Scott geeft aan, nee, ik heb niet stiekem Silverlight teruggebracht 😉

Bij die conversie zit je er wel mee dat het portable is. Dus doe je zaken met het windows-register, dan zit dat er niet in. Maar volgens Scott kun je dan wel zelf met JSON en interfaces daar zelf wat voor maken, maar eens kijken of hij dat al eens gedaan heeft en daar een blog-post o.i.d. over gemaakt heeft.

We zien een Pro Pi (als ik Google vind ik alleen de tiny pro pi, maar dat is volgens mij de verkeerde?) die Scott in een soort laptop heeft zitten, met touch-screen scherm. Via Visual Studio kan hij met de nieuwe System.Device.GPio leds aansturen. Met SSH kan hij connectie maken (pst, openSSH zit nu al standaard in Windows 10, geen Putty meer nodig).

We zien een micro-controller van Wilderness Labs, de Meadow, die volledig op .NET Core loopt (je moet m dus flashen), link.

Waarschijnlijk ga ik op mijn Technische Blog (techblog.dirkhornstra.nl) binnenkort nog even de stukjes code van Scott uitwerken.

Om 17.30 uur was de presentatie afgelopen (gered door een oplader van de Macbook van iemand uit het publiek). Hierna nog een drankje en na verloop van tijd verlaten we het theater. Nog even gegeten bij Grieks restaurant Rhodos en daarna in de auto weer naar het noorden. Oh ja, er werd nog gevraagd wie de meeste kilometers had gereden. Dat bleek iemand uit Parijs te zijn (!). Ook Groningen was vertegenwoordigt. En Friesland dus ook (211 heen, 422 in totaal). 

Een dikke pluim voor .NET Zuid, die zich richt op developers in het zuiden maar op deze manier zelfs landelijk viral gaat!

Mijn blog met een iets technischer verhaal staat hier: link.