AFAS-Award-2008AFAS, de leverancier van ons ERP pakket, wil partners en klanten in het zonnetje zetten door het uitrijken van een AFAS Award. Wij zijn genomineerd voor dit award, waarvoor een kort filmpje is gemaakt. Kijk maar eens hoe mijn manager uitlegt dat we een koppeling hebben gemaakt tussen Google Earth en het ERP pakket Profit. Klik hier.

Welke pagina opent jouw Internet browser als je die opstart? Ik heb er vele gehad, en eigenlijk waren ze geen van allen een 'start' pagina. Maar uiteindelijk heb ik hem gevonden. Maar voordat ik daar over begin, lees even mee met mijn history.

Internet provider

Ooit ben ik begonnen met www.tiscali.nl omdat dit door mijn internet provider met een setup is ingesteld. Leuk om een gekleurde site met bullshit te krijgen, want ik klikte vrijwel nooit op de pagina. Het eerste wat ik vervolgens deed, was surfen naar www.google.com.

Google

Op een gegeven moment kom je tot de conclusie dat je toch altijd begint met zoeken in Google, dus wordt dat jouw standaard startpagina. En iedere keer als je naar een bekende bookmark wilt, klik je op een fucking klein icoon om vervolgens uit een lange lijst jouw site te kiezen. Zoals Google Reader die ergens verstopt zit.

Web 2.0 persoonlijke pagina

Toen kwam er www.netvibes.com en later na ook www.igoogle.com. Met enig puzzelwerk krijg je een persoonlijke startpagina met daarom enkele links, RSS feeds, e-mail top 5, agenda en bookmarks. Hier ben ik razend enthousiast over geweest, al was de laadtijd die de Internet browser nodig had om op te starten wel aan de hoge kant. En veelal had ik deze pagina niet nodig, want ik wilde naar een pagina in mijn bookmarks, nadat ik afgeleid was door de ongelezen e-mails en RSS feeds.

{blank}

Er zijn goeroes die 'blank' als startadres hebben ingesteld. Gewoon omdat die het snelst is, en vervolgens niets laat zien waar je toch niet in geïnteresseerd bent. Ik heb dit nooit fijn gevonden, en dus ook nooit gebruikt, want toen was er...

Symbaloo

Symbaloo_logoEn toen kwam er www.Symbaloo.com. Symbaloo is een persoonlijke startpagina met iconen. Je kunt onder ieder blokje een icoon voor een kant-en-klare zoek module, eigen link, widget, RSS-feed, Radio of contact toevoegen. Omdat jouw hersenen de iconen en locaties gaan onthouden, kun je snel en makkelijk bij je favoriete links. Op deze pagina staat 90% van wat ik gebruik. Er staan knoppen op voor mijn mail, RSS-feeds, weblog, sites die ik regelmatig bezoek, en lokale intranet sites (zoals broodjes bestellen bij DA&A). De pagina start snel op, en is makkelijk te beheren.

Symbaloo
Klik links op het plaatje voor een uitvergroting. Dit is mijn huidige Symbaloo startpagina. Deze startpagina heb ik thuis en op het werk, in Internet Explorer en in Firefox.

Symbaloo is mijn startpagina!

CPU_Compile_DevEnv_thumbHoe snel je ook wilt programmeren, uiteindelijk wordt je altijd geremd door de compiler. De compiler van Microsoft Visual Studio 2008 (en waarschijnlijk ook die van 2005, en 2003) is al niet zo snel bij grote projecten, maar om het helemaal mooi te maken: Hij gebruikt maar 1 CPU/Core. In bijna iedere PC zit wel een dual-core processor. De compiler gebruikt er echter maar 1. In het plaatje zie je de CPU belasting van VS 2008. Hij komt nooit boven de 50% uit.

Er is een optie (lees: hack) op beide te core's te gebruiken via een zelf toegevoegde knop die het build process buiten Visual Studio om start, met een vlag om parallel te compileren, zie hier. Dan krijg je wel de build output in VS te zien, maar wordt niet de error/warning lijst gevuld. Leuk om even snel alles te builden als je weet dat het goed zal gaan.

Het is toch al triest dat er maar zo weinig programma's zijn die een multi-core PC goed benutten. Langzaam aan komen er API's ter ondersteuning voor multi-core PC's, zoals Microsoft's PLINQ en Intel's Ct. Eigenlijk hadden we al jarenlang ondersteuning voor multi-core's door gebruik te maken van meerdere thread's. Maar dit is erg moeilijk te implementeren en debuggen. Gelukkig heeft SQL server al meerdere jaren ondersteuning voor multi-core's.

Er is wel 1 groot voordeel aan een dual-core CPU. Als Windows druk bezig is met niets, en daardoor de CPU volledig bezet, dan is dat nog altijd maar 50% van de totale CPU performance. ;-)

ps: Om de compile performance eenvoudig te verbeten, kun je de virusscanner tweaken zodat hij niet alle duizenden sourcefiles opnieuw en opnieuw probeerd te scannen. Maak dan een uitzondering voor jouw project directory en voor "C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files"

Nee, niet wegklikken. Je zit nog steeds op Kobuz.net! De inhoud is hetzelfde, maar de schil is vernieuwd.

 

Kobuz.net is omgezet van een maatwerk blog naar de standaard code-base van BlogEngine.net. Dit is een open-source (gratis software) weblog, dat eenieder (die erg goed is in C#, HTML en CSS) kan gebruiken om zijn eigen weblog mee te hosten (draaien).

 

Ik had al langer het idee om het om te zetten naar een andere code-base, maar deze post heeft me 100% overtuigd. In een video van ongeveer 25 minuten laat Al Nyveldt, de ontwikkelaar het BlogEngine.net zien hoe hij een bestaand design (dat niets te maken heeft met BlogEngine.net) oppakt en toepast op BlogEngine.net. Hier ben ik zelf ook mee aan de slag gegaan. Alleen deed ik er niet 25 minuten over, maar eerder 25 uur. Maar dan heb ik ook alle inhoud van mijn vorige blog geimporteerd, vele kleine aanpassingen gemaakt, extra content toegevoegd en een extension geschreven.

 

Extension?

Het is vrij makkelijk om een kleine uitbreiding te schrijven. Er bestaan er al vele, zoals het ondersteunen van smilies in reacties, makkelijk links maken naar wikipedia, eenvoudig youtube of mp3's afspelen door een ingebouwde player, en zelfs een knop die je weblog voorleest. Zelf heb ik al een extension geschreven die het mogelijk maakt om de plaatjes ook te tonen als ik mijn blog lokaal om mijn PC, moet iets ander pad, run. Hij corrigeerd alle relatieve paden.

 

Vanaf nu kun je ook zoeken. Dat kon met de oude kobuz.net niet. Er is echter 1 feature die is komen te vervallen, maar daar kom ik nog op terug. Dat is namelijk het laten versturen van een e-mail naar jullie (op verzoek) als er een nieuw artikel is. Maar ook hier is een extension voor te downloaden. Maar, even geduld...

 

Klik maar eens rond, zoek maar eens naar oude post, kijk eens in het archief, of check maar eens uit wie ik nou eigenlijk ben (op 'Over Kobuz').

Business cards

Software Engineer ⇒ System Integration ⇒ Software Developer

Zoals iedere professional zul je in het bezit zijn van visitekaartjes, die je mag uitdelen aan klanten, relaties en beursstands waar je prijzen kunt winnen. In de loop der tijd heb ik de meeste bewaard uit nostalgie. Maar zo kwam ik er net achter dat ik er toch nog twee mis. Zie hier mijn historie van visitekaartjes.

Op mijn eerste en laatste visitekaartje staat vrijwel dezelfde functie vermeld: Software Engineer/Developer. Maar in de tussentijd heb ik kaartjes (en e-mail signatures) gehad met: System Integration en Technisch Consultant (hier heb ik helaas geen exemplaar meer van). Wie snapt nou wat ik doe, als ik zeg dat ik een System Integrator ben, of een Technisch Consultant?...


Mijn eerste kaartje van Pulse vind ik nog steeds bijzonder. Die is gewoon mooi van lelijkheid. Het logo lijkt op een gevangenis, terwijl het iets van een barcode moet voorstellen. De slogan vind ik overigens wel super: Always in control. { Toen ze die hebben vervangen door Sixth Sense Automation, vroegen onze klanten of we niet meer altijd in control waren }. Pulse Besturings Techniek logo
ps: Het mobiel nummer op de kaartjes van Pulse is niet meer mijn nummer. Dus bel maar gerust.
 

Enkele dagen geleden is er een stunning-cool feature van Visual Studio 2008 gereleased. { Visual Studio 2008 is de ontwikkelomgeving waar ik mijn dagelijkse werkzaamheden mee verricht. } Het is de feature om in de broncode van het .NET framework van Microsoft te kijken. Spreek ik Chinees? OK. Zie het als de sleutel tot een zeer gewilde kluis van Microsoft.

Toen ik vanochtend echter probeerde de stunning-cool feature te installeren, weigerde de download link die opgegeven was. Blijkbaar was de stunning-cool feature niet meer beschikbaar. Maar gelukkig had mijn zeer gewaadeerde collega deze gisteren al gedownload en voor de zekerheid achter de hand gehouden. Ik blij, maar nog niet iedereen blij...

Net voordat ik de stunning-cool feature van mijn collega kopieerde, was ik op forums aan het zoeken naar een oplossing. Blijkbaar had ik de oplossing binnen handbereik. Om het leed van mede softwareontwikkelaars (ja, dat is 1 woord zonder spatie) te verzachten, heb ik de stunning-cool feature download op Kobuz.net gezet, en dit gepost op het forum. Misschien help ik er wel een paar man mee.

13 uur later zien de statistieken voor mijn site er als volgt uit:

 Tja, Visual Studio 2008 wordt wereldwijd door duizenden ontwikkelaars gebruikt...
 

Stemmen is nu nog makkelijker geworden. Je hoeft niet meer een reactie achter te laten om een stem uit te kunnen brengen. Klik nu direct op de sterren bij het weblogartikel, en de stem wordt geteld. 

Als er staat: "stem hier:" dan kun je nog stemmen. Staat er echter "Gem. gestemd:", dan is er al gestemd vanaf jouw lokatie.

Technisch detail:
Het Rating control ondersteund wel een read-only mode, maar dan verschijnt er evengoed een handje (cursor: pointer;) in beeld. Dit heb ik aangepast door wederom in de Microsoft AJAX Control Toolkit te hacken. Naast een CSS style voor de normale modus, heb ik een read-only CSS style vastgelegd.

Vooraf: Dit is een technisch artikel. Denk je dat je het niet kunt volgen, dan klopt dat.

Het ASP.NET AJAX Control Toolkit bevat vele controls met AJAX ondersteuning die gratis gebruikt kunnen worden voor het ontwikkelen van een dynamische website.

Vol lof ben ik enkele weken terug begonnen om vele controls hieruit te gebruiken op dit weblog. De Collapsible panel voor het tonen van de reacties, de Animation extender voor het plaatsen van een reactie, de Validator Callout extender voor het mooi tonen van een 'vergeten veld', en het Rating control bij het plaatsen van een reactie voor het geven van een rapportcijfer voor een artikel.

Water en vuur
Niet alle controls kunnen samen werken. De standaard validators, en dus ook de Validator Callout, werken niet goed in een floating DIV, waar de reactie in getypt kan worden. Dus de validatie is al komen te vervallen. Ik heb ook gekeken naar de DropShadow extender, maar die functioneert niet in combinatie met een Animation extender. En nog een tip: gebruik geen Flash of ActiveX objecten omdat die altijd 'bovenop' liggen, ook al heb je een floating DIV met Z-order op het maximum.

Rating
Erg vervelend en onverwachts was het gedrag van het Rating control. Het valt op de test site niet op, maar als je op het control klikt, springt de pagina weer naar boven (top). Normaal niet zo'n probleem, maar wel als je halverwegen een pagina een reactie op een weblogartikel van Kobuz aan het schrijven bent, en het invoerscherm verdwijnt zodra je op de rating klikt.

Probleem
Na veel zoeken (Google groups) en testen, bleek het te liggen aan de manier hoe het control gerenderd wordt. Hij renderd een HTML anchor ( <a href="#" ... > ) met als HREF de waarde "#". Dit is nodig omdat een anchor zonder HREF niet geldig is. Maar een # verwijst naar de top van de pagina. Andere rating controls, zoals die van YouTube hebben hier geen last van...

Oplossing
Via Google groups ben ik bij een reactie van een Chinees genaamd fhmsha, dat het te maken had met de onclick. Toen viel het kwartje (of €0,20) bij mij. In de AJAX Control Toolkit zit inderdaad geen onclick in de anchor. Maar hoe los je dit op? Inderdaad: broncode aanpassen.

In file Rating.cs, in method RenderContents.cs heb ik het volgende toegevoegd:

writer.AddAttribute("onclick", "return false;"); // Bugfix by Marco Vervoort


Omdat ik toen toch op dreef was, heb ik ook tevens een duidelijke tooltip toegevoegd aan het rating control: (1) slecht, (2) aardig, (3) leuk, (4) cool, (5) super cool. Toevoeging in RatingBehaviour.js:


  /// <summary>
  /// Initialize the behavior
  /// </summary>
  AjaxControlToolkit.RatingBehavior.callBaseMethod(this, 'initialize');
  var elt = this.get_element();
  this._stars = [];
  for (var i = 1; i <= this._maxRatingValue; i++) {
    starElement = $get(elt.id +
'_Star_' + i);
    starElement.value = i;
    // Bugfix by Marco Vervoort: 
    // Voeg extra tooltips toe.
    switch
(i)
    {
      case 1: starElement.title = 'slecht'; break
;
      case 2: starElement.title = 'aardig'; break
;
      case 3: starElement.title = 'leuk'; break
;
      case 4: starElement.title = 'cool'; break
;
      case 5: starElement.title = 'super cool'; break
;
    }
    Array.add(
this._stars, starElement);
    $addHandler(starElement,
'click', this._starClickHandler);
    $addHandler(starElement,
'mouseover', this._starMouseOverHandler);
  }
  $addHandler(elt,
'mouseout', this._mouseOutHandler); 
  $addHandler(elt,
"keydown", this._keyDownHandler);
  this._update(); 
}

Conclusie:
Dit is voor mij de reden dat het Rating control van mij geen 10 krijgt.

Hieronder zie je een willekeurig plaatje van Google Images. Een stuk Javascript zorgt ervoor dat er op Google gezocht wordt met een tekst van deze site. Het plaatje is dus gerelateerd aan mijn blog...

 


[Zoeken...]


Bron: Google hack van Douwe Osinga

Mijn weblog is eventjes een dag onderuit geweest. Waarom? Omdat ik MS Access als database gebruik voor opslag.

 

Ik heb ook de mogelijkheid om MySQL te gebruiken, maar vond MS Access erg charmant vanwege het makkelijk maken van een back-up. Copy, Paste, Voila...

 

Ik had in mijn vorige artikel waarschijnlijk teveel rotzooi staan. Een paar regels tekst, met vele html en script tags omdat ik het vanaf GMail gekopieerd heb. Niet doen dus. Hier komt een ander product van Microsoft om de hoek kijken om het op te lossen: Notepad (bij vele van jullie bekend als Kladblok). Paste eerst de tekst in Notepad, copy het vanaf Notepad en paste het in mijn Kobuz.NET CMS.

 

Nu zonder nerd talk: Ik zal gewoon wat vaker een back-up maken van mijn database.

 

[Ron, bedankt voor het melden dat mijn weblog ziek was]