From the Blog

Posted by admin at 8:01 am

I'm using ODP.net Oracle as the provider for my database and have an application that was created with a db first approach. The upside of this approach is the ease of use. Just pick the tables you want to use and add them to your project and voila. Unfortunately this doesn't work always and is a source of a lot of grief. The downside of this approach is that is hard to maintain and it requires all environments you may be connecting to, to be the same (development / production). The edmx file is not meant to be manually edited, so you shouldn't be commenting out stuff in there for different environments, unless you are looking for trouble.

From Entity Framework 6 on you can generate code first from your database (yeay !), but I'm currently working in EF5 and need a way to convert my edmx to code first and believe it or not, there is a way ! you can use a tool in the visual studio gallery called EF 5.x dbcontext fluent generator.


These are the steps I followed:

  1. Add EF 5.x dbcontext fluent generator to your project by going to "Tools" (in visual studio 2012) => Extensions and updates => search and install
  2. double click the EDMX file and on the surface right click => add code generation item => pick the fluent generator from the templates => and rename the .tt file to the same name as your edmx file (example : if mymodel.edmx then mymodel.tt)
  3. Click ok and the mappings should be generated underneath your .edmx file
  4. Run your application/web site => it should work fine
  5. now, you can get rid of the .edmx + .tt + .diagram + .designer.cs  => in order to do this, first copy everything in a diferent (backup) folder, then remove the edmx from visual studio (=> this will delete all sub files unfortunately) => then just copy/paste all good files (non .tt, .diagram, .edmx, .designer.cs) in to visual studio on the location where the edmx file used to be.
  6. now, you need to modify your connectionstring, because code first doesn't use the same formatting with metadata etc., you should get the normal ado connectionstring.

    1. For Example <add name="MyEntities" providerName="Oracle.ManagedDataAccess.Client" connectionString="data source=dbname;password=yourpassword;user id=yourusername"/>

I love productivity, luckely there are tools out there that can help me ! Here is a short (not definitive) list of tools that I use for my own productivity.

– Visual Studio (obviously)

-Notepad++ : so many usages for quick text editing or viewing large files. (also a very neat compare plugin (npp-compare))

– Resharper (makes life so much easier for a .Net developer)

– VS10X VS plugin: In Visual studio you need Navigation Navigation Navigation and VS10x helps a LOT in those legacy classes with thousands of lines of code !

– Telerik tools and controls : I use, I like it.

– Snoop / WPF Inspector: Snoop works a bit better for me .. WPF Inspector easily crashes with larger xaml files (in my experience)

– Snaggit: easy snapshots

– Camtasia: not using it so much currently but seriously top of the line for videos

– Xplorer2: Better than windows explorer, whenever you need to copy paste, you'll be happy to have it !

– Paint.net: Free alternative for photoshop (and more important enough for me – I'm not a designer)

– DropBox: Doesn't everyone use this, I also use skydrive

– Evernote: keep track of my notes: good for administration and decent tagging system

– Fiddler and WireShark: occasionally you may need to check what kind of calls your pc is making !

– Chrome and Firefox: I'm don't feel bound to 1 browser !

– FF extensions: FireBug (debug your pages), Imacros (automate actions) , FireShot Pro(take full page screenshots even if larger than screensize)

– CryptoLicensing, Crypto obfuscator: if your software is out there, it needs protection (as far as it's possible)

– Advanced Installer: no more screwing around with WIX for msi packages. I luv it.

– Less used:Teamviewer, LogmeIn,



Posted by admin at 11:24 am


Cryptolicensing is a software licensing product that is mainly based on encrypted licences.

Cryptolicensing is flexible but has a bit of a counter-inuitive way of working if you are not familiar with it. It also requires quite a lot of configuration and even coding in some cases.

First things you need to know:

The "Cryptolicensing Generator UI" is used for a few things:

– Create a .licproj file => this is actually the file that is saved whenever a setting changes in the UI
– Create the licenseservice
– Create licenses IF you are not using the licenseservice

the .licproj ( or .netlicproj as it is sometimes called in the documentation) is also saved in the app_data folder of the licenseservice. This file is used to generate licenses should you be using an e-commerce provider.

The .licproj/.netlicproj is not used in validation of a license on the client side. There is a ValidationKey for this. This validationkey can be generated in the UI by pressing Ctrl+K .

Since we live in the 21st centry we like to use automatic license generation. So here are the steps to take:

  1. Open Cryptolicensing Generator UI. Create a new profile with the prefered settings.
  2. Optional: create a second profile for evaluation purposes. make sure the first profile is the active profile (you can do this by pressing the "save" button next to the dropdown of profiles).
  3. Generate the licenseservice.
  4. Open up the licenseservice project in visual studio and modify as stated in the .chm documentation (search for "Configuring the License Service").
  5. Modify LicenseService.cs as stated in the documentation (.chm file)  (look for subscription based licensing) and make sure the "UpdateLicenseTableOnNewOrder" is modified so that the license has an expire date (you can look in UpdateLicenseTableOnRenewalOrder for this) … this is necessary so that in each renewal a new license can be generated with a new expirationdate.
  6. Refer to LicenseService.cs from the "e-commerce" .aspx.cs file to save the generated license.
  7. Copy the "e-commerce" .aspx.cs file and modify it or renewal licensing. refer to "UpdateLicenseTableOnRenewalOrder" (You need this so that each renewal can generate a new license…) .
  8. Go to your e-commerce website and make sure you set the notification url there to your licenseservice …/"e-commerce" .aspx .
  9. If your e-commerce company does not provide e-mail notification to the end-user, you need to code this yourself after generating the license, you will require an smtp server for this.
  10. Modify the code of your software (that needs licensing) to use the sample code ( Applicensing – see method: "btnSubscriptionLicenses_Click").

And remember…Whenever you change something in the UI, you need to re-upload the .licproj to the app_data folder of the licenseservice.





Posted by admin at 7:51 pm


JustCode is a productivity tool from telerik that helps refactoring your code, delivers code analysis and helps in error checking. On first sight it may seem that for MVVM there isn't much available out of the box. But if you look a bit closer you will find that JustCode supports code templates and these allow you to create flexible code snippets. For example, you may want to implement INotifyPropertyChanged and generate a class property that uses the PropertyChanged function.

private $3=GET_ELEMENT_TYPE($1$)$ $1$;

get {return  $1=SELECT_VARIABLE()$;}
if($1$ == value)
$1$ = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("$2$"));

Give the code template an acronim => I use   "In" (for I Notify)

in your class then press  "Shift+Space" and type "In" and you will find that a Property will be generated for you, where all you need to fill in is the field and property names. JustCode will automatically use your field name on several places where necessary. You can just press tab to move between the Three variables to fill in. Once done, just press enter.

Creating a property will take about 10 seconds, while otherwise it could take over a minute or even Two minutes in order to just type it.


Not that hard really, but lost some time with this because I tried to do this in the Original folder where the Original TFS was pointing to.

So, you can unbind your solution on any location, but once you've done this, copy your solution to another location so you can bind it with a different Team foundation system.

You can simply undind by going to File, Source Control , Advanced, change source control.

If this doens't work you can also use a tool for it.


at this current time, you will have to rebuild it because the regex in the code isn't correct. Just look at this post:


Posted by admin at 6:46 pm

Creating a custom control may be necessary in some circumstances where you want to persist a design pattern such as MVVM. In this scenario you will try to bind your data to your control and build it that way. In order to do this it is best to first create a class or WPF Custom Control. Like so:

Public Class CustomGrid:Grid{}

The next step is to work with a "DependencyProperty". I'm not going to go in to detail about this property but if you do some research you'll find that it delivers quite a bit of flexibility and will eventually allow us to bind data in design time.

publicreadonlystaticDependencyProperty MyPropertyValue = DependencyProperty.Register("MyWrapperProperty", typeof(TheTypeofContainer), typeof(CustomGrid), newFrameworkPropertyMetadata(new TheTypeofContainer(), OnCurrentPropertyChanged));

After this make sure you have an OnCurrentPropertyChanged Event handler in order to Build your control in runtime.

privatestaticvoid OnCurrentPropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e){ //Build your stuff here}

And last but not least, you will need a wrapper to allow design time binding towards the "DependencyProperty".

//Wrapper for DependencyProperty

publicWerkplanningCollection ItemsSource{

get{return (TheTypeOfContainer)GetValue(TheTypeOfContainer);}
set{         SetValue(TheTypeOfContainerValue, value);   }


Once all this is finished you can just use a regular "Binding Path" in your Xaml file. Offcourse you will still need a resource that delivers the object to Xaml. (A ViewModel and a reference to this resource from your xaml file)

PS. "TheTypeOfContainer" is here the type or class that you will use as your datasource.



Posted by admin at 10:44 am

Wanneer je wil ontwikkelen voor Sharepoint is het belangrijk te beseffen dat Sharepoint een server technologie is. Dus als je echt wil gaan testen is het wel mogelijk om sharepoint op windows 7 te installeren maar in vele gevallen kan het ook handig zijn om een Server en Client op te zetten die in hetzelfde domein zitten. Om dit te kunnen doen kunnen we op 1 computer werken door te virtualizeren. Dit betekend gewoon dat we onder windows, meerdere keren een besturingssysteem kunnen installeren en opstarten wanneer we dit wensen. Een goede virtualisatie technologie dat we kunnen gebruiken is virtual box.

Stappenplan om een server/client omgeving op te zetten op windows 7 met Sharepoint en VirtualBox:

  1. Installeer Virtual Box
  2. Zorg dat je een trial installatie hebt van windows 2008 r2 (server) (64bit)
  3. Zorg dat je een trial installatie hebt van windows 7 (client) (64bit of 32 bit)
  4. Zorg dat je SQL server express 2008 R2 with tools hebt.
  5. Zorg dat je een trial hebt van Sharepoint 2010 . (64bit)
  6. (Optioneel) zorg dat je een trial hebt van office plus 2010 . (64bit of 32 bit)
  7. Zorg dat je Sharepoint Designer hebt.
  8. Start virtual box op en maak 2 Virtuele machines, 1tje voor windows 2008 en 1 voor windows 7.  Er zijn heel wat tutorials om dit te kunnen doen.
  9. Zorg dat er bij iedere virtuele machine 2 netwerkkaarten aanwezig zijn. 1 netwerkkaart NAT en 1 netwerkkaart Bridged.
  10. Na dat de installatie van windows 2008 en windows 7 is voltooid mag je op windows 2008 een domein installeren. Dit kan je doen door door “dcpromo” uit te voeren van uit het start menu. Daarbij kies je een unieke domeinnaam met extensie “.local” (bv. mijndomein.local). Voor Testing doeleinden mag je dynamic ip laten staan. Volg voor de rest de default stappen. Na dat je deze stappen hebt uitgevoerd heb je een domein en is Active Directory geïnstalleerd. Active Directory is een user/computer management tool voor binnen het domein. Na dat je bent heropgestart mag je in Active Directory een User aanmaken.
  11. Hierna mag je SQL server express installeren. Zorg dat je mixed mode hebt geselecteerd en dat SQLExpress als default database instance geselecteerd staat.
  12. dan mag je Sharepoint Server installeren en worden eerst de Prerequisites geïnstalleerd. Volg de stappen en installeer Sharepoint Server. Na dat Sharepoint Server is geïnstalleerd wordt er een webpagina opgestart (de configuration wizard). Volg hier de stappen en je krijgt je eerste Site Collection. Dit kan een tijdje duren afhankelijk van de snelheid van je PC en de hoeveelheid RAM dat je hebt ge-alloceerd voor uw virtuele server.
  13. Na dit process mag je je windows 7 virtuele machine opstarten (terwijl je windows 2008 virtuele machine nog draait) en je windows 7 in het domein plaatsen. Dit kan je doen door te klikken op start => rechter muisklik op computer en properties. Dan kan je klikken op “Change Settings” en daar het domein veranderen. Verander het domeinnaam naar het domeinnaam dat je hebt aangemaakt op je windows 2008. Voor dat je dit doet moet je wel zorgen dat je IPV4 instellingen zo staan dat de IP van de DNS gelijkstaat aan deze van windows 2008.
  14. Installeer nu nog Sharepoint Designer en Office Plus 2010 op je windows 7 client en je kan gebruik maken van je eigen Sharepoint test-omgeving.

PS. Zorg dat je voldoende RAM vrij maakt voor uw Server. De normale vereisten voor Sharepoint 2010 staat gelijk aan minimaal 4GB ram voor een development Environment. Het is mij al gelukt om 1,5GB vrij te stellen en alsnog een werkende SP installatie te hebben hierbij. Het gevolg is natuurlijk dat je server traag reageerd.

Wil je enkel Sharepoint 2010 installeren om daar naar toe te programmeren volg dan onderstaande stappenplan.

  1. Zorg dat je windows 7 (x64) hebt.
  2. Zorg dat IIS is geïnstalleerd
  3. Installeer sharepoint server 2010 (Je krijgt een foutmelding)
  4. Ga naar C:\program files (x86)\MSECache\oserver2010
  5. Ga naar de Files folder, Setup folder, open config.xml en voeg het volgende lijn toe voor de sluitende </configuration> tag
  6. <Setting Id=”AllowWindowsClientInstall” value=”True” />
  7. Installeer Sharepoint server 2010 (Als je nog foutmeldingen krijgt, voer dan volgende stappen uit)
  8. download en installeer “Windows Identity Foundation”
  9. download en installeer “Chart Control
  10. Installeer Sharepoint Server en alles zou moeten werken !
  11. Zorg dat je Visual Studio 2010 hebt geïnstalleerd uiteraard.

zoekmachine optimalisatie

Wanneer u uw diensten of een product wil promoten dan is er nood aan aandacht. Deze aandacht kan komen via verschillende bronnen. Een klassieke manier is de krant te raadplegen, flyers uitdelen, telefonisch potentiële kanten proberen te bereiken, enz… Al deze methodes hebben vandaag nog steeds nut maar het is belangrijk te beseffen dat ze allemaal hun plaats hebben. Het heeft namelijk weinig zin reclame te maken via de krant wanneer uw doelgroep de krant helemaal niet leest. In een andere blog-post kunnen we ons wat meer verdiepen hierin….

Tegenwoordig zijn er nieuwere mechanismen die de aandacht van uw potentiële klanten kunnen trekken. Facebook, Twitter en Zoekmachines zoals Google zijn bijzonder belangrijke werktuigen om mee aan de slag te gaan. Een zeer groot voordeel aan Zoekmachines is dat mensen heel erg gericht gaan zoeken. Wanneer ze opzoek zijn naar een boekhouder in de buurt, wel dan tikken ze vaak gewoon “boekhouder mijnlocatie” in de zoekmachines. Dit noemen we dan een “zoekwoord”. Op het moment dat u acties tracht te ondernemen om uw website beter te doen scoren in de zoekmachines gebaseerd op een zoekwoord, spreken we over zoekmachine optimalisatie of “Search Engine Optimisation” (SEO).  Wanneer er een degelijke optimalisatie aanwezig is voor uw boekhoud bedrijf, dan is de kans erg reëel dat u de nodige aandacht krijgt op het internet voor zoekopdrachten die van belang zijn voor u.

Het is echter zo dat je niet zomaar alle aandacht kunt verkrijgen voor een gekozen zoekwoord. Heel wat is afhankelijk van de concurrentie. U kan zich vast wel voorstellen dat er meer concurrentie is voor de zoekwoord “boekhouder” dan voor de zoekwoord “boekhouder houthalen”. Uiteraard zijn er in dit geval ook veel meer zoekopdrachten voor de zoekwoord “boekhouder”, maar bent u werkelijk opzoek naar klanten aan de andere kant van het land? Bij het ondernemen van Zoekmachine optimalisatie of SEO starten we eerst met een intitiële analyse waar we eerst en vooral gaan onderzoeken wat haalbaar is en welke zoekwoorden het best passen bij uw bedrijfsprofiel.

de micro niche

De Micro niche is ook een heel populair begrip bij zoekmachine optimalisatie(SEO). Een micro niche is een marktsegment waar er beperkte concurrentie is maar alsnog een zekere hoeveelheid aan mensen die opzoek zijn naar dat specifiek onderwerp (er zijn bijvoorbeeld 100 mensen per maand opzoek naar “boekhouder gent”). Heel wat experts in zoekmachine optimalisatie gaan opzoek naar micro niches omdat de concurrentie lager ligt. Op die manier kunnen ze met beperkte inspanning alsnog een deel van de aandacht opeisen.

de long tail

Wanneer we spreken over gerelateerde micro niches binnen zoekmachine optimalisatie dan komen we al snel bij het begrip, de “long tail”. Hieronder ziet u een grafiek wat de “long tail” representeerd.

long tail - zoekmachine optimalisatie - SEO - micro niche

long tail - zoekmachine optimalisatie - SEO - micro niche

De “long tail” kan het makkelijkst geïllustreerd worden in verhaalvorm. In het onderstaand TED filmpje van “Malcolm Gladwell” ziet u hoe dat men vroeger keek naar de markt. In de jaren 70 werd er van uitgegaan dat er slechts één beste product of dienst kan zijn. Er is maar één beste advocaat, één beste programmeur, één beste spaghettisaus. Niet is minder waar. In het kort samengevat wou “Prego” een spaghettisaus producent de beste saus op de markt brengen en om te achterhalen wat de beste saus is hebben ze besloten om enkele tientallen verschillende soorten klaar te maken en heel wat steden in de verenigde staten te bezoeken en iedere keer tientallen mensen hiervan te laten proeven. Men had verwacht dat er wel enigszins  verschillen zouden zijn in smaak maar men had vermoed dat als smaken zouden verschillen dat er een geleidelijke groei zou zijn naar de centrale smaak. Echter bleek dat er heel wat fans waren voor de extra dikke saus, de extra pikante saus en de standaard saus. Dit was een manier om een notie te krijgen van de “long tail”. Als u het filmpje hieronder kijkt wordt het allemaal duidelijker.


Op welk manier slaat dit op zoekmachine optimalisatie? In zoekmachine optimalisatie wil je als bedrijfseigenaar ook scoren op populaire zoektermen, maar de optelling van micro niches of de “long tail” kan zelfs betere resultaten opleveren dan heel erg hard je best doen om te winnen in een titanenstrijd  in zoekmachine optimalisatie.

1000 echte fans

Wanneer je kijkt naar de illustratie van de “long tail”, zie je dat er een “head” en een “tail” sectie is. De “head” sectie representeert de hoge concurrentie en hoge populariteit van een onderwerp en de “tail” sectie representeerd alle lage concurrentie onderwerpen. Vaak is het zo dat bedrijven een cumulatie van “long tail” onderwerpen nodig hebben om voldoende inkomsten binnen te halen. Maar naast heel dit gegeven is er tussen de “head” en de “tail” nog een derde sectie die nog niet besproken is. Deze derde sectie kunnen we representeren als het hebben van 1000 echte fans. Een product dat niet zo populair is als de “main stream” in de “head” sectie maar waar er toch een minimaal aantal aan geïnteresseerden voor zijn. Wanneer deze geïnteresseerden echte fans zijn en volledig geloven in het merk en handelswaar  dan volgen ze deze overal en kan het product alsnog overleven. Zeker de moeite waard om de artikel eens volledig te lezen. zie hier voor meer over 1000 echte fans.

De conclusie is dat Zoekmachine optimalisatie (SEO) een erg belangrijk onderwerp is voor eender welk bedrijf. Het is echter van belang dat u een expert er bij neemt want er komt toch meer bij zoekmachine optimalisatie kijken dan het eerst lijkt.