13 januari 2013

PowerShell

-nerd-alert!-

Ah, keuzes. Voor een klant werd ik gevraagd een import te doen vanuit een CSV bestand naar de database-applicatie waarin ben gespecialiseerd, Commence.

Dat begon heel simpel, maar werd al snel akelig complex. Commence, zo moet u weten, is niet erg gangbaar.  Een van de redenen daarvoor is dat het niet ODBC-compliant is. Que? Het is niet standaard. Je kunt er niet, zoals met MySQL, of MS SQL Server, of MS Access een 'verbinding' mee maken en leuke dingen met queries doen. Het heeft zelfs geen fatsoenlijke importfunctie. Commence Is Gewoon Bestwel Raar. Het is ook geweldig, maar niet als je het wilt koppelen aan een ander systeem.

Wel heeft het een API. Que? Een API is een manier om via het ene programma met het andere programma te praten. Zei ik dat Commence raar was? Nee, dan heb je de API niet bestudeerd! Klopt, hè? Gelukkig kan ik er na 14 jaar mee lezen en schrijven (ha, een kostelijke nerdwoordspeling). Die vaardigheid deel ik met een man of 5 hooguit in Nederland. Het is heerlijk om hyperspecialist te zijn in een applicatie die bijna niemand kent. Pft.

Nu goed, een ingewikkelde import dus. Klant levert een nogal complex CSV bestand aan. Aan mij de taak om de gegevens ervan in een aantal tabellen te frommelen, en deze ook nog een beetje kloppend aan elkaar te knopen. Oh wacht, de klant levert het niet aan. Ik moet het zelf gaan ophalen van een internet locatie. 'Is er een fijne webservice via REST of SOAP of zo?' zult u vragen. Neen, die is er niet. CSV het is, en die CSV moet via het antieke maar fijne FTP worden opgehaald. Daar heb je gelukkig programmaatjes voor, maar ik bouw liever niet nog een extra stap in, dus het liefst haal ik het bestand zelf even op.

Tot zover de inleiding.

Ik moet dus 2 dingen oplossen:
  1. CSV bestand ophalen
  2. CSV bestand verwerken
Ik kan deze uitdaging op een heleboel manieren aanvliegen. Zei ik 'aanvliegen'? Kastijd mij! Vreselijk woord, vreselijke zin. Sowwy.

Eén ervan is met VBScript. Daar ben ik behoorlijk goed in. VBScript is echter niet zo goed met internet. Een hoop dingen kunnen wel, maar zijn erg omslachtig. En VBScript is met zoals dat zo mooi heet 'deprecated'. Dat wil zeggen dat het nog wel bestaat, maar dat het uitgefaseerd zal gaan worden. Een soort computer-Sanskriet, zo u wilt.

Een mooi moment om mij eens te verdiepen in iets meer contemporains. Dat kan een 'echte' programmeertaal zijn. Ik spreek VB6 want ik ben oud, en een woordje C#.NET. Maar de klant wil een 'quick-and-dirty' oplossing, dus dat is geen optie. Dus wordt het een gescripte oplossing. Eentje die door Windows 'native' wordt ondersteund. PHP en Python en zo nog een paar vallen dus af. Blijven over VBScript, JavaScript en PowerShell.

Ik beheers JavaScript wel een beetje, maar ik voel me er niet zo in thuis. Eenvoudige taken zoals string-manipulaties en datum-manipulaties zijn er al snel overdreven complex in. Vind ik. En daarvan ga ik er veel nodig hebben. En JavaScript is verdomd moeilijk te lezen.

Blijft over PowerShell. Nooit wat mee gedaan, maar bijzonder krachtig, omdat je ermee direct toegang hebt tot .NET. Que? .NET is kort door de bocht een collectie van krachtige gereedschappen waarmee je van alles kunt doen. Het ophalen van een bestandje via FTP is met .NET een peulenschil vergeleken met VBScript. Ook heeft het krachtige instrumenten om gegevens heen en weer te smijten. Interessant genoeg om eens een keer mee te stoeien.

Zo gezegd, zo gedaan. Met frisse moed opende ik PowerShell ( Start | powershell). Ik kreeg een fijne DOS-prompt-achtige omgeving te zien. Dat ging hem niet worden, zelfs in DOS schreef ik geen BAT files via de command-prompt. Gelukkig bestaan er ook GUI omgevingen, en ik installeerde het fijne gratis PowerGUI.

First things first: eens kijken hoe we met Commence kunnen communiceren.

In VBScript gaat dat alsvolgt:

Set cmc = CreateObject("Commence.DB")

In PowerShell schrijf je:

$cmc = New-Object -ComObject Commence.DB

So far, so good.

Nu even de naam opvragen van de actieve database.

In VBScript doe je dat met:

naam = cmc.Name

In PowerShell doe je dat met

$naam = $cmc.Name

Maar wacht. Wat blijkt? De object-variable $cmc in PowerShell weet niets van Commence. Dat is gek! Want als ik doe:

$ie = New-Object -ComObject InternetExplorer.Application

dan krijg ik netjes alle eigenschappen en methoden van Internet Explorer te zien als ik '$ie.' typ.

Wat blijkt? (Lang verhaal dat ik u zal besparen) Wanneer ik het equivalent van cmc.Name in VBScript wil doen in PowerShell, dan moet ik schrijven:

$naam = [System.__ComObject].InvokeMember("Name",[System.Reflection.BindingFlags]::GetProperty,$null,$cmc,$null)

Ik sta dus voor de volgende keus: kies ik voor VBScript:

Set cmc = CreateObject("Commence.DB")
naam = cmc.Name

Of kies ik voor PowerShell:

$cmc = New-Object -ComObject Commence.DB
$naam = [System.__ComObject].InvokeMember("Name",[System.Reflection.BindingFlags]::GetProperty,$null,$cmc,$null)

Als ik mij was, dan wist ik het wel. Dan maar computer-Sanskriet :)


29 december 2012

Wit


Onlangs las ik een artikel van Joost Zwagerman, waarin hij hoog opgaf van een schilder die uitsluitend witte werken maakt: Robert Ryman. Wit op canvas, wit op hout, wit op metaal - als het maar wit was. Zwagerman deed, zoals hij dat zo mooi kan, een poging om deze kunstenaar in het zonnetje te zetten. Hem af te schilderen als een onschuldige en bewonderenswaardige gek, met zijn wit tegen de klippen op. Hij plaatste een en ander in historisch perspectief; zo kwamen Rauschenberg en zijn favoriet Rothko voorbij.

Voor Zwagerman was het allemaal kunst. Hij ging daarbij, naar mijn mening, voorbij aan iets heel primairs, iets ordinairs bijna. Want wanneer is iets kunst? Voorwaar geen originele vraag! Daarom is het goed om de mening van anderen te horen. Mijn al dan niet bekrompen definitie is, dat iets kunst is als het ofwel getuigt van een bijzondere vaardigheid, ofwel getuigt van een oorspronkelijk idee, of beide.

Een canvas wit schilderen, daar is weinig vaardigheid bij. Erg oorspronkelijk zou ik het ook niet willen noemen. Natuurlijk, je kunt diepe betekenis toekennen aan witte vlakken, maar dat maakt ze niet knapper geschilderd. En je kunt ze prachtig vinden, mij best. Mij lijkt het, dat je het na drie witte doeken wel gezien hebt. Ze zijn immers vooral wit.

Is het dus kunst? Ik ga mij aan het beantwoorden van die vraag niet wagen, maar ik wil er wel enige woorden aan wijden.

Toen ik nog een klein ventje was van een jaar of 16, was ik ooit op bezoek in het atelier van mijn tekenleraar, hij ruste in vrede. Hij mocht mij graag, om redenen die ik tot op de dag van vandaag niet ken. Het was zeer beslist niet om mijn tekentalent! (Ook was er geen erotische onderstroom - eigenlijk is het heel erg dat je dat tegenwoordig expliciet moet vermelden.) Hoe dan ook, ik was in zijn atelier en heb daar een vurige monoloog gehouden over waarom ik mij opwond over kunstwerken die 'Zonder titel' heetten. Tegenwoordig denk ik daar genuanceerder over, maar destijds vond ik dat wanneer je een kunstwerk maakt dat abstract is, je er tenminste een idee of emotie bij gehad moet hebben. En dat je het dus op zijn minst een titel mee moest geven, omdat anders de toeschouwer niet snapt waar het over gaat.

Als gezegd, ik denk daar nu iets anders over. Als ik een werk maar mooi vind. Of niet. Hoe het ook heet, of niet heet.

Maar dan moet er wel iets te zien zijn. Alleen wit, of rood, of zwart, in oneindige herhaling - what's the bloody point? Waarmee ik kom op een fenomeen waarover ik mij tot op de dag van vandaag in hoge mate kan opwinden. Iets dat alomtegenwoordig is: marketing.

Ik definieer marketing als de kunst van het mensen zodanig voorliegen dat ze er blij van worden. En ik heb er een haat/liefde verhouding mee. Enerzijds vind ik het fascinerend, zoals ik goochelen fascinerend vind. Anderzijds heb ik er een diepe afkeer van. Want je wordt genept, weet dat je genept wordt, en toch val je ervoor. Soms.

Laten we even terugkeren naar kunst als bijzondere vaardigheid. Sommige mensen kunnen heel goed schilderen, of beeldhouwen, of muziek maken. Om als kunstenaar beschouwd, geaccepteerd en gewaardeerd te worden, is een voorwaarde dat er een publiek is dat van het product van die vaardigheid kennisneemt. Daarvoor is het nodig om een publiek te trekken - marketing dus. Dat kan een publiek van 1 zijn. Hoeveel beroemde schilders en componisten werden niet -vaak noodgedwongen- gesponsord door een rijke mecenas die in hun levensonderhoud voorzag?

Sommige nu beroemde kunstenaars lukte het niet om zelfs naar 1 man publiek te trekken. Denk bijvoorbeeld aan Van Gogh, of Rothko.

Enige marketing heb je als kunstenaar dus per definitie nodig. Maar wanneer deze marketing betrekking heeft op het delen van een kunstuiting die getuigt van een vaardigheid of oorspronkelijk idee, dan zal het uiteindelijk de kunstuiting zelf zijn, die de waardering oproept die het verdient. Korter gezegd: Het werk zal zichzelf bewijzen.

Anders wordt het, wanneer het louter de hype om het werk heen is die de vermeende waarde ervan bepaalt. Wanneer je werken maakt die uitsluitend wit zijn, dan wordt kunst naar mijn idee leeg. Leger dan het wit op het canvas. Zet mij voor een Rothko -ik noem zijn naam bewust opnieuw- en ik zie slechts een gekleurd vlak, al het andere is humbug. Marketing. In Rothko's geval zelfs postume marketing.

Ik wil maar zeggen: je kunt de mensen een drol voorzetten, als je erbij zegt dat het een beroemde drol is vinden ze hem mooi. Dat is bepaald geen revolutionaire constatering. Wel eentje die niet ophoudt mij te verbazen.

9 december 2012

Godsbewijs

Ja verdorie, van die problemen hè? Zit je lekker aan je grote-teennagel te pulken, breekt 'ie zo af dat er nog een vliesje overblijft. Precies waar alle lekkers onder zit. Dan ruik je het al wel een beetje, maar moet je alsnog met je duimnagel de zaak een beetje afscheuren zodanig, dat je erbij kunt voor je toastje. De pest is dan, dat je het dan meestal ook een beetje samenduwt. Vaak valt er dan een stukje op de bank, en blijft een stukje onder je duimnagel zitten, kortom, bestwel gedoe. Wat maar weer bewijst dat er geen god is, want die had dat slimmer ontworpen.

8 december 2012

Fris


Vannacht zou het ultiem! keihard! gaan vriezen als je radio, TV en internet mag geloven. Het zal toch niet gebeuren dat de werkelijkheid de media inhaalt! Het moet niet gekker worden! Kamervragen! Zit hier met het raam open, verwarming is inmiddels uit geslagen. Ik zie natuurlijk maar 1 stad, en die mag niet eens meedoen, maar Elfstedenkoorts bevangt me nog niet.

Vroeger, ja toen gingen we op de fiets naar school. Elf kilometer heen, elf kilometer terug, het was niets. Toen niet. Generaties voor ons lachten ons uit, die reden minstens met dubbele. Op houten fietsen.

Op de fiets naar school dus. Elke dag, zes jaar lang. Er ging ook een trein, af en toe, maar dat deed je niet. Veel te duur, ook. Soms regende het. Best vaak. Dan deed je een regenpak aan. Soms stormde het, dat was voor de helft leuk. Soms was het fris. Dan deed je een sjaal om, en droeg je handschoenen. Een beetje zoals vandaag. Soms was het echt koud. Min 20, dik pak sneeuw erbij. De wereld hield niet op. School ging door. Extra shirtje, muts, dikke wanten, hop, fietsen. Soms was het ook glad. Dan ging je op je plaat als je niet uitkeek.

Nee, nu dan. Nu zouden wij jonge fietsers allemaal uit huis geplaatst worden, met PGB en rugzakje, hoppa, pleeggezin in.

Ik heb door de kou gefietst. Ik ben op mijn smoel gegaan als het ijzelde. Ik heb daar niets van gekregen. Nederland is een land van trutten en mietjes geworden.

5 december 2012

Stichting Stille Tochten luidt noodklok


De Stichting Stille Tochten (SST) roept op tot minder geweld. Reden hiervoor is het toenemend aantal stille tochten. Woordvoerder Tammy Marchant: "Het wordt voor ons steeds moeilijker stille tochten te plannen. Mede door succesvolle marketing hebben stille tochten de afgelopen decennia sterk aan populariteit gewonnen. Tegenwoordig is het zo, dat ook als de onschuld van het slachtoffer niet vaststaat, men toch enthousiast de straat op wil."

Dat stelt de stichting voor logistieke problemen. "Met talentenjachten en Champions League op TV wordt het voor ons steeds lastiger om nog gaten in de agenda te vinden", aldus Marchant. Het maatschappelijk belang van deze tochten dient volgens de stichting niet te worden onderschat. "In deze moeilijke tijden is het zeker voor minima vaak de enige manier om nog met buurtgenoten en wildvreemden in contact te komen. Twitter en Facebook hebben hierin een functie, maar voor velen telt ook het persoonlijk contact, zeker als het gaat om bijvoorbeeld The Voice Of Holland."

Indien de hausse aan stille tochten aanhoudt, overweegt de stichting de tochten in doelgroepgerichte varianten aan te bieden. "Voor Nederlandse deelnemers volstaat meestal het rondje snikkend rond de kerk stiefelen," aldus Marchant. "Uit de Arabische wereld weten wij, dat een meer levendige variant voor Turkse en Marokkaanse slachtoffers de voorkeur geniet. Eén waarbij het slachtoffer meer centraal staat of zelfs participeert."

Met dit doelgroepenbeleid denkt SST meerdere tochten naast elkaar te kunnen organiseren. "Het mes snijdt aan twee kanten. Enerzijds creeren we daarmee ruimte in de agenda. Ook verminderen we spanningen tussen deelnemers onderling. Anderszijds moeten we niet vergeten dat deze tochten tot doel hebben om al dan niet zinloos geweld een krachtig halt toe te roepen. Dus hoe meer, hoe beter, maar wel binnen bepaalde grenzen. Anders sterven er mensen voor niets."