woensdag, mei 31, 2006

Boek in stukjes

Ik ben altijd in voor een leuk idee :)
Dit boek wordt in stukjes gepubliceerd op verschillende weblogs leuk bedacht! en ik doe graag mee :)

wembley
Dit is fragment nummer 173 van het boek "Wembley" van Richard Osinga.


Ik zwijg en kijk naar de kast vol met boeken. Ik neem een slok van de thee. Mijn vinger klopt in het verband. Cantona is opgestaan en beent de kamer door.
'Mensen doen nooit iets zomaar. Er is altijd een reden. Je moet altijd 'waarom' vragen. Waarom heeft Leolo je geholpen, waarom heeft hij liever dat je een Nederlander bent dan een illegaal? Wat heeft hij daarbij te winnen?'
'Waarom help jij me?'
Cantona is even stil. 'Omdat je hulp nodig hebt.'
Hij vermijdt mijn blik.
'Wil je nog thee?' vraagt hij als hij zich omdraait.
Ik knik.
'Ik moet je waarschuwen, Wembley. Ik denk niet dat je bij Ajax komt.'
'Leolo regelt het.'
'Leolo is een kleine man, Wembley. Hij heeft niets te betekenen. Hij kan een baan regelen en een vrouw, maar hij is niemand.'
'Leolo is mijn vriend.'
'Misschien is hij je vriend.'

Naar het begin - Doe mee - Lees verder >>


Sitecore certification: mission accomplished!

Even bijkomen, de afgelopen drie dagen zijn druk geweest. Ik heb drie dagen Sitecore cursus gehad. Sitecore Developer Level 1 & 2. En er zat best wat druk op. We moesten namelijk een score halen van 90% of meer voor beide trainingen. En ik kan je vertellen, dat is flink aanpoten.



Level 1 cursus is best te doen, twee dagen college wat kleine labs doen en aan het einde een vragenlijst invullen. Veertig vragen, waarvan we er 4 fout mochten hebben. Level 2 cursus daarentegen valt niet mee. In één dag wordt de Sitecore API besproken en worden er labs gemaakt. Elke lab bestaat uit een aantal verplichte en een paar vrijwillige opdrachten. Voor deze opdrachten worden punten gegeven. Volledige punten wanneer alles goed is, halve punten wanneer het bijna goed is.



We moesten ruim 120 punten halen voor de 90%, en met veel bloed zweet en tranen is het gelukt. Uiteindelijk heb ik zelfs 94% gehaald. En ik ben daar echt ontzettend blij mee!
Ik hoor nu bij de groep van vijf mensen in deze wereld die boven de 90% hebben gescoord op deze cursus. Het druk en tempo deed me denken aan de programmeerwedstrijden waar ik vroeger aan meedeed. Zo snel mogelijk, zo veel mogelijk problemen oplossen. Dat waren nog eens tijden!

vrijdag, mei 26, 2006

Casting continued

Na mijn verhaal over casten van een paar dagen terug vond ik het erg leuk om dit artikel van oldnewthing tegen te komen. Mijn gedachte over impliciet casten en constructors was dus niet zo raar. Dat is namelijk de manier waarop het in C++ werkt (en daar dus voor onverwachte problemen kan zorgen..) Ik ben in ieder geval blij dat ze dat niet toegestaan hebben in C#. Al vind ik de huidige oplossing ook niet mooi. Maar zie daarvoor mijn verhaal over casten ;)

woensdag, mei 24, 2006

Technobabbel

Mijn blog publiek is grofweg in twee groepen in te delen: Techneuten en familie/vrienden. De laatste posts zijn nogal technisch van aard dus om niet de helft van mijn publiek te verliezen: zonder beloftes te doen komen er binnenkort posts over

  • DE cappucino pads.

  • Resultaten van het yoursurvey "op jezelf" onderzoek.

  • Den Bosch, heeft het niet: deel 2.

  • En???


Stay tuned.

En o ja Ruben, wat van mijn blogstats:










Direct request77.37%
Sites13.15%
Search engines 7.95%
No referrer 1.53%


Mijn meeste bezoekers typen dus de URL van mijn blog bewust in hun adres balk :)

Op het moment wordt ik veel gevonden op: "nescafe cappucino pads" en als ik kijk bij www.zoekmachinetest.nl blijkt inderdaad dat deze blog vrij hoog in de resultaten staat op die keywords :)

Regex? doe mij maar een schroevenhamer!

Elke ochtend begint mijn werkdag met een rondje langs mijn favoriete blogs. Mijn favoriet van het moment is "old new thing" op korte afstand gevolgd door "the daily wtf". En wat bijkt gistereb hebben ze allebei een post over een verhaal waar voor mij heel verband in zit.



Raymond van old new thing, schrijft een heel verhaal over regexen, en ik ben het helemaal met hem eens. Regex is de ultieme write-once taal. Niet te debuggen, moeilijk te schrijven. Als een groot zwitsers zakmes wat amper te gebruiken is zonder in je eigen vingers te snijden. Hij geeft een voorbeeld over het valideren van een ip-adres. Het kan in 1 regex maar mooier wordt het er niet op. Terwijl als je een simpele regex en een paar regels code gebruikt je het valideren zo voor elkaar hebt.


Of zoals Raymond het samenvat: Don't make regular expressions do what they're not good at. If you want to match a simple pattern, then match a simple pattern. If you want to do math, then do math. As commenter Maurits put it, "The trick is not to spend time developing a combination hammer/screwdriver, but just use a hammer and a screwdriver.




Deze hele discussie is ook toepasbaar op een discussie die we hier intern voeren. Namelijk dat tables niet gebruikt mogen worden, maar dat men DIV's moet gebruiken in HTML pagina's. Waar dat toe kan leiden is te vinden op the daily wtf. Op zich is het niet willen gebruiken van tables een nobel streven. Maar sommige dingen zijn nu eenmaal makkelijker te doen met tables dan met div's. En dan moet je niet koste wat kost proberen vast te houden aan je regels.

Een goede programmeur weet wanneer hij coding guidelines kan breken. En dingen gewoon praktisch op moet lossen. En regex? "Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems." -- Jamie Zawinski.

maandag, mei 22, 2006

C#, casten met een scherp randje

Persoonlijk houd ik er wel van om op de cutting edge van technologie te zitten. "Where IT bleeds". Echter toen mijn collega een bepaalde cast niet voor elkaar kreeg schrok ik toch wel even.
Dat de volgende cast niet werkt, kan ik begrijpen. (Sirecore is het webapplicatieplatform wat wij gebruiken)

Sitecore.Data.Fields.LinkField linkField = 
(Sitecore.Data.Fields.LinkField)drv["link"];


drv is een dataset (he ik heb de naam niet verzonnen). En de compiler weet dat er geen LinkField in zit. Dus geeft hij een compiler error. Zover niets geks.

Echter, de volgende regel compiled wel:

Sitecore.Data.Fields.LinkField linkField = 
(Sitecore.Data.Fields.Field)drv["link"];


We casten het onbekende object naar een "Field" en daarna doen we een conversie naar een LinkField (impliciete cast). Dit is raar, als je wel mag casten naar een Field en je mag daarna impliciet casten naar een LinkField dan moet de expliciete cast van het 1e statement ook mogelijk zijn. Kijkend naar de Object tree blijkt dat Field direct erft van Object en LinkField van XmlField en dat ze verder geen ouder-kind relatie hebben op welke manier dan ook. Wat wel bleek is dat de LinkField een constructor heeft waar een Field in kan. Is C# dan zo slim dat hij dit herkent en zo automatisch de conversie toe staat?

Tijd voor een test. Ik heb 3 classes en een constructor gemaakt:

public class ZonderOuder
public class Ouder

public class Kind: Ouder
public Kind(ZonderOuder aOuder)


Als mijn propositie waar is moeten de volgende regels zonder problemen compilen:

ZonderOuder objZonderOuder = new ZonderOuder();
Object o = objZonderOuder;

Kind aKind = (ZonderOuder) o;


En dat doen ze dus niet:

Cannot implicitly convert type 'CastTest.ZonderOuder' to 'CastTest.Kind'


Hiermee is bewezen dat het niet via de constructor gaat. Maar hoe dan? Het zal toch niet zo zijn dat C# het toestaat de cast operator te overloaden? Even zoeken op google geeft het resultaat. De cast operator is niet direct overloadbaar, echter kun je wel invloed uitoefen op cast (conversies) van bepaalde typen naar je class. En de volgende code doet precies dit:


public static implicit operator Kind (ZonderOuder i)
{
return new Kind();
}

Je kunt hem ook explicit maken zodat een direct cast ook mogelijk is, maar er kan er maar 1 van bestaan.

Duplicate user-defined conversion in class 'CastTest.Kind'


Ik ben oprecht geschokt. Doordat je casts kunt overloaden kun je veel vervelende trucs uithalen. Alleen al door bij een cast nieuwe objecten aan te maken kun je de == oparators onderuit halen. En daarmee wordt je code een stuk lastiger. Zeker als je een framework gebruikt waarvan je niet weet hoe het precies geïmplementeerd is kun je je veel problemen op de hals halen. Daarnaast kun je alles doen in de cast operator, desnoods je hele C-schijf wissen met een simpel statement als Kind a = (ZonderOuder) o; En dat maakt debugging een stuk lastiger.

Misschien win je een stukje schrijfbaarheid met deze constructie, maar je kunt het ook anders oplossen. Bijvoorbeeld door de constructor te gebruiken. Dan zou je krijgen:

Kind aKind = new Kind((ZonderOuder) o);

Iets meer schrijfwerk maar het houdt je code wel leesbaar en onderhoudbaarder. En kom je gek gedrag tegen dan weet je waar je moet zoeken: in de constructor. Eigenlijk win je heel weinig met deze taalconstructie, het voegt geen functionaliteit toe die je niet even makkelijk op een andere manier voor elkaar kunt krijgen, zorgt ervoor dat de code moeilijker onderhoudbaar is, en dat je weer een constructie toevoegd aan de taal die je je moet herinneren als je code gaat debuggen.

Mijn conclusie: C# bites!

donderdag, mei 18, 2006

Worst music video ever

Deze week is het zwaar. De supportdeskdesk draait niet op volle kracht door de vakantie van mijn collega. En vage problemen van 5 jaar oude sites houden ons bezig. Net toen ik bij de pakken neer wilde gaan zitten kreeg ik dit filmpje van mijn collega van een Finse band. Mijn dag is weer goed. (als je weinig tijd hebt, spoel dan zeker naar 1:15 )

dinsdag, mei 16, 2006

Den Bosch heeft het niet, en zal het nooit hebben.

Nederland houdt op boven de rivieren. Al heel mijn leven woon ik in Brabant en ik wil nooit ergens anders wonen. Al vijf jaar woon ik Den Bosch, of zoals ik hoor te zeggen: 's-Hertogenbosch. Vijf jaar, mijn eerste lustrum. Maar voordat we de taart aansnijden wil ik toch even een aantal zaken aan de kaart stellen. Even uitleggen waarom Den Bosch 'het' niet heeft, en nooit zal hebben. Wat ze ook doen nooit zullen ze het halen bij Eindhoven!



Den Bosch is voor een buitenstaander of een tourist een mooie stad. Die mensen zijn de oude binnenstad met de smalle straatjes. De Sint Jan. De binnendieze met de romantische bootjes. Voor de mensen die er wonen is het een heel ander verhaal. Ik woon dicht in de buurt van het centrum. Toch weet ik nooit hoe lang ik erover doe om in de stad te komen. We hebben namelijk een kanaal, met ophaalbruggen. En deze bruggen gaan op de meest onverwachte en onhandige momenten omhoog om een boot door te laten. Als je pech hebt meerdere boten. Als dit in de spits gebeurt heb ik kans dat ik mijn eigen straat met de auto niet meer uit kom. En dan begin ik nog niet eens over het ziekenhuis wat niet meer bereikbaar is. Dempen die sloot!



Waar andere gemeenten de zware industrie uit de binnenstad weren heeft Den Bosch ongeveer in het hart van de stad Koudijs. Een fabriek voor diervoeder. En dat kan stinken. Zeker als de wind verkeerd staat ruik je dat door een groot gedeelte van de stad. Lekker! Even een terrasje pikken is er niet bij in de Den Bosch. Meerdere keren heb ik uren op het terras gezeten met maar één drankje. Niet omdat ik zo langzaam drink maar omdat ik gewoon niet geholpen werd. En met mij de rest van het terras. De bediening was zo slecht dat de ober dacht dat we andere mensen waren omdat twee van de vier even naar de wc waren.



Markt. Vrijwel elke dag is het markt in Den Bosch. En die oude, gezellige binnenstad met die mooie oude panden is daar niet op gebouwd. Zeker op zaterdag blijft er amper loopruimte over naast de kramen. Goed bedacht! Den Bosch heeft een prachtig marktplein maar die wordt amper gebruikt, behalve dan door auto's. Wie dat bedacht heeft? Auto's en bussen in de binnenstad? Zeker het stukje van de markt naar de Arena. Wat een ramp! En het mooiste: Den Bosch heeft een prachtig plein naast de Sint Jan waar heel die markt prima kan staan. Maar nee dat prachtige plein is in gebruik als parkeerplek. O was de garage onder het provinciehuis nou maar klaar!



Tot slot de evenementen. In de zomer is het zowat elke weekend raak: Kermis, Jazz in Juketown, TheaterFestival Parade, Geranium markt, Boergondisch brabant, sail en noem alles maar op. En voor elk festival wordt de halve binnenstad afgesloten. Gezellig! En dan heb ik het niet eens over Carnaval. Als eerste grote stad onder de rivieren krijgt Den Bosch veel mensen over de vloer die carnaval niet snappen.



Neem dan Eindhoven: ruim opgezet centrum, met de auto goed bereikbaar. Veel parkeergelegenheid in en rond het centrum. Vriendelijk personeel op de terassen. Alles binnen handbereik. Behalve het kampioensfeest van PSV geen grote feesten. Precies zoals ik het wil. Den Bosch zit niet in mijn hart. Of misschien toch een beetje, ik kan in ieder geval wel klagen als een echte Bosschenaar!

vrijdag, mei 12, 2006

Wie is... de mol? (deel 2)

Vorige week vrijdag zat ik er helemaal klaar voor. Ik was de hele dag al zenuwachtig. Die avond zou de identiteit van de mol bekend worden. Ik was 100% zeker van mijn mol. De stekker van de telefoon ging eruit. Ik had drinken en koekjes klaar gezet en ik ging er eens goed voor zitten. Een hele aflevering lang wachte ik het verlossende woord. Wie is de mol?



Maar Karel weigerde het te vertellen. We moesten nog zeven dagen wachten. En die dagen zijn nu voorbij. Vanavond is het dan echt zover: de mol maakt zich bekend! Maar wie is de mol?

Milouska

Is het Roderick? Hij kreeg een onomstotelijke aanwijzing en nog twijfelde hij bij het invullen van de vragenlijst? Is het toch Milouska die met haar naivieteit iedereen om de tuin heeft geleid? Of is het toch Frédérique? Mijn stem gaat nog steeds naar Roderick.

Roderick

woensdag, mei 10, 2006

YourSurvey samenwonen vragenlijst

Ik kreeg van mijn collega op mijn donder. Hoe ik het in mijn hoofd haalde om een vragenlijst op mijn blog te zetten. Terwijl zij daar zo'n mooi platform voor hebben: www.yoursurvey.nl. Na een korte cursus heb ik nu een echte vragenlijst gemaakt.

Volgens mij is hij binnen 10 minuten in te vullen en hij is anoniem!

Ga naar de vragenlijst!

Stuur hem door naar je vrienden en kennissen!

dinsdag, mei 09, 2006

Nieuwe serie: op jezelf/samenwonen voor beginners

Na veel overdenkingen ga ik het toch doen. Een serie posts maken. En dit is de eerste. Een inleiding: Ik woon nu ongeveer drie jaar samen met mijn vriendin. En om mij heen zijn veel mensen gaan samenwonen of op zichzelf gaan wonen. En al deze mensen lopen tegen dezelfde dingen aan als wij: Hoe verdeel je het huishouden? hoe worden de rekeningen betaald? welk geld wordt waarvoor gebruikt? Met welke rekeningen moet je rekening houden? Welke verzekeringen heb je nodig? Heb je een samenlevingscontract? Welke programma's/methodes gebruik je om alles bij te houden



Wij zijn altijd geïnterresseerd hoe andere mensen/stellen dit geregeld hebben. En daarom vraag ik jullie hulp. Vertel me hoe je het doet en ik maak daar (anoniem) een post over. En misschien heb ik aan het eind van deze serie wel een mooi boekwerk om cadeau te geven wannneer er weer mensen in mijn omgeving gaan samenwonen of op zichzelf gaan :)



Stuur alsjeblieft een mailtje naar: hansvanleuken@gmail.com met een beschrijving hoe jij het geregeld hebt thuis. En wat je graag zou willen veranderen. Denk aan:

  • Hoe lang woon je opzelf?

  • Hoeveel ben je kwijt aan vaste lasten (huur, gwl, boodschappen)?

  • Waarvoor ben je (extra) verzekerd

  • Heb je een samenlevingscontract?

  • Hoe ga je om met onvoorziene uitgaven?

  • Hoe lang woon je samen?

  • Hoe wordt het inkomen verdeeld?

  • Hoe is het huishouden verdeeld?

  • Wat zou je graag veranderen?

zondag, mei 07, 2006

Close cappuccino encounter of the first kind

Eindelijk is het gelukt. Een pakje nescafe cappuccino pads in mijn bezit! Een verslag in beeld en tekst door uw verslaggever!



Het begon de afgelopen weken met vage radioreclame's en berichten uit het roddelcircuit. Ze zouden er eindelijk zijn: cappuccino pads. Op mijn wekelijkse boodschappen avond was het vak telkens leeg. Maar er was een vak, dus er was hoop.
Afgelopen zaterdag overhandigde mijn vriendin mij eindelijk een pakje met de pads.



Voor 1 kopje cappuccino heb je 2 zakjes nodig: een zakje topping en een zakje met een coffee pad. De topping doe je in een beker. En de koffie pad in de "Café crème machine" . Ze durven het woord senseo niet in de mond te nemen, dat is namelijk van de concurrent. De machine gaat aan, en halverwege het bereidingsproces begin je met roeren. Een stukje handwerk dus voor je kopje koffie.



Het resultaat: een gladde cappuccino. Mijn vriendin is in huis de expert. Haar recensie: "mmm lekker!" (maar dat kwam waarschijnlijk omdat ze koffie kreeg zonder dat ze ervoor hoefde te zeuren ;)) "Wel een beetje zoet, misschien teveel topping. Of eigenlijk teveel kaneel en caccao in de topping. Of de koffie had wat zwaarder mogen zijn". "Eigenlijk wordt je er ook wel een beetje misselijk van..."



Kortom wel lekker, maar niet perfect. Gelukkig valt er over smaak te twisten. Misschien moeten ze de topping apart op de markt brengen zodat je het zelf kunt mengen met de koffie smaak naar keuze (dark, regular, mild of decaf). Ik ben heel erg benieuwd naar de bevindingen van andere mensen.

vrijdag, mei 05, 2006

Fietsen



Dit is hem dan: mijn eerste echte eigen nieuwe (gebruikte) fiets! Ik ben er erg blij mee. Nu kan ik elke ochtend (tijdens goed weer ;) ) lekker fietsen naar mijn werk.
Helemaal bezweet en uitgeput kom ik op mijn werk, waar ik me even omkleed. Helaas hebben ze nog geen douche. Fietsen frist echt op. Ik luister lekker naar de radio en rijd mijn hoofd leeg. Ik ben zo blij als een klein kind op zijn 1e fiets zonder zijwieltjes!

donderdag, mei 04, 2006

Augmented Reality

Vandaag leek een dag te worden zoals alle anderen. Totdat mijn collega V. me een filmpje liet zien. Mijn mond viel open van verbazing en mijn ogen rollen nog steeds rusteloos in hun kassen. Ik kan het niet beschrijven kijk zelf maar:

woensdag, mei 03, 2006

Op fietse

"Ik heb mijn banden vol met lucht, en ik heb ja niets te klagen." Nou dat is niet helemaal waar. Mijn banden zitetn inderdaad vol met lucht, maar iets te klagen heb ik altijd. De auto stotterde, hoeste en kuchte de afgelopen dagen alsof hij last had van hooikoorts. Dus werd het weer eens tijd voor een bezoekje aan de garage.



Maar met of zonder auto ik zal toch op mijn werk moeten komen. Gelukkig heb ik de fiets van een vriend kunnen lenen en heb daarmee de 15 kilometer afgelegd die mijn huis van mijn werkplek scheiden. En stiekem ben ik best trots op mezelf. Het was zwaar, koud en ik had ook nog wind tegen. Moe, uitgeput en bezweet kwam ik 's avonds weer thuis. Maar dat was gisteren, vandaag gaat me dat niet overkomen.



Niet dat ik vandaag met de auto ben. Nee, ik ben beter voorbereid. Ik heb genoeg liga's in mijn tas op een week in de woestijn te overleven. En als backup heb ik ook nog chocolade bij me. Vanochtend fietste ik in 40 minuten naar mijn werk. Goed voor mijn conditie, goed voor de portemonnee en goed om mijn hoofd leeg te krijgen. Daarnaast zie je nog eens wat als je fietst: zwanen, ganzen, hazen etc. Nu nog een eigen fiets kopen.

dinsdag, mei 02, 2006

Sociaal huishouden

We kennen allemaal de grondgedachte achter de het socialisme: iedereen is gelijk. En als het aankomt op geld: de sterkste schouders dragen de zwaartste lasten. Gisteren tijdens de lunch had ik een interresant gesprek over hoe er thuis met geld en inkomen wordt omgegaan. En mijn meest socialistische collega (hij woont niet voor niets in Nijmegen ;) ) verraste mij. Begrijp me niet verkeerd, iedereen moet doen waar hij zich het fijnst bij voelt, maar ik ben altijd benieuwd hoe andere mensen dingen oplossen.



Zij hebben het huishouden verdeeld door allebei de helft van de vaste lasten in de huishoudpot te storten. Wat ze overhebben mogen ze zelf. Van elkaar weten ze niet hoeveel geld ze op hun bankrekening hebben. Dit "iedereen betaald evenveel, ongeacht het inkomen" model klinkt wat mij betreft vrij liberaal. En dat had ik niet verwacht.



Zelf heb ik thuis de afspraak dat al het geld wat binnenkomt op de gezamenlijke rekening wordt gestart. Daar van worden de rekeningen betaald, en wordt er gespaard. Elke maand krijgen we allebei een even groot deel "zakgeld" waar we mee kunnen doen wat we willen zonder veratnwoording af te leggen. Alles betalen we samen, ook bijvoorbeeld de studieschuld. Waarom dit model? We werken allebei, mijn vriendin heeft een veel zwaardere baan dan dat ik heb en die kan nu geen 40 uur werken. Maar dat betekend niet dat ze minder hard werkt, of minder over zou mogen houden.



Ik ben heel benieuwd naar hoe andere mensen het huishouden verdeeld hebben :)