When doing modern web development you will probably have to start using NPM sooner, rather than later. Not a big deal of course, since it’s a great addition to the frontend development environment.

However, most NPM packages have quite a bit of dependencies to other packages. All of these dependencies get pulled towards your system also. Still not a big problem as you want a working solution.

The problem arises when you are on a Windows environment, there are a lot of dependencies and you want to delete a project folder on your system. You will stumble across the fact that Windows has a rather low limit on how long a path can be. When all dependencies are loaded, you will probably have some paths which are too long for Windows to handle properly.

This will give you quite a bit of a problem as you can’t delete the folder(s) anymore. One way of solving this is by using PowerShell. By executing the following script you will be able to delete the NPM modules in your project.

ls node_modules | foreach {
	echo $("Deleting module..." + $_.Name)
	& npm rm $_.Name

This will iterate through the `node_modules` folder and remove each module inside it.

The output will be something like this:

Deleting module...grunt-contrib-uglify
Deleting module...karma

Do note, this only works for NPM folders. If your path is too long because of some other reason, you’ll have to think of something else.

As of late I’ve started using the VMWare products for virtualizing my development environments again as a replacement for Hyper-V.

Today I wanted to access some files of my virtual machine on the host in order to write a blog post on some code I had saved in there. The VMWare disk files are stored as a VMDK file and it’s not possible to mount these type of files in Windows like a VHD file.

In order to mount a VMDK file you’ll need some third party software. Most people tell you to download the VMWare Disk Mount Utility (note the date: 2005-11-29). This probably was a valid solution back in the day, but it appears this software isn’t compatible with the recent versions of the Microsoft Windows operating system.

When installing the VMWare Disk Mount Utility I’m receiving the following event when checking out the event viewer:

Windows Installer installed the product. Product Name: VMware DiskMount Utility. Product Version: 1.00.0000. Product Language: 1033. Manufacturer: VMware, Inc.. Installation success or error status: 1603.

While troubleshooting this error you’ll probably stumble across the following KB article which tells you to set the appropriate security permissions on the Program Files folder. I’ve tried setting these permissions for both the SYSTEM account as the Administrators group, but to no avail. So I think it’s safe to assume this software doesn’t work properly anymore.

I did find some other piece of software from PassMark, called OSFMount. This piece of software installed like a charm and it’s capable of mounting VMDK files also.

When staring up the application you’ll see a very self explanatory screen.


Just push the Mount new… button and you’ll be prompted to select the appropriate image file.


After selecting the VMDK file I did have to explicitly select the partition which I was in need for. When I selected the option Use entire image file Windows notified me it wasn’t able to do something with the new disk and I should format it.


Once selected all data on the earlier screen will get updated appropriately and you’ll be ready to use the newly mounted disk.


In my case the mounted disk is automatically added to the Windows Explorer list of disks.


It’s too bad the OSFMount software isn’t high on the search index yet. Hope this post will help a bit.

With Windows 10 we’ve gotten a lot of nice little features which help us modifying the theme. There is however 1 option which the team hasn’t implemented (yet). The option to select different wallpapers for all of your connected displays.

I’m working with a triple monitor setup at home and at work most of the time with a dual or also a triple setup. Of course I don’t really need different wallpapers on all of my monitors, but it’s a nice feature.

Luckily we are still able to do this, using the ‘old’ control panel pages which are still available in Windows 10. If you type in the following command inside a Windows Explorer address bar or the Run command window you’ll be able to get there.

control /name Microsoft.Personalization /page pageWallpaper


On this screen you are still able to select your wallpaper for every connected display.


Just a little tip, hope it helps.

While I was setting up a VPN connection to my Azure Virtual Network I wanted to uncheck the option to use the Default Gateway of the connected network. Normally you’d do this by clicking on the `Properties` button of the selected protocol.


However, there appears to be a bug in Windows 10 and VPN connections for this button which causes the Properties window not to appear.

I have solved this with the help of Todorovic Dragan’s post about this matter. Over there he states you can change the `Default Gateway` setting manually.

Just navigate to the folder `C:\Users\[YourUsername]\AppData\Roaming\Microsoft\Network\Connections\Pbk` and open the file rasphone.pbk file in your favourite text editory.

This file contains all configuration settings of your dial-in connections, like VPN’s. Search for the configuration block of your connection. For me it’s [janhome_manual] and change the option IpPrioritizeRemote to 0.

Changing this setting will disable the checkbox for using the gateway of the remote network.

One of the reasons for me to create an Azure virtual network is being able to connect to my development machines in the Cloud from anywhere, without exposing them to the public. In order to do so, all machines have to be added to the virtual network. You also have to select the option to set up a point-to-site VPN connection to the virtual network.

Setting up a point-to-site VPN connection to an Azure virtual network is documented quite well on the Azure documentation pages. Still, I have come across a couple of problems which I’d like to share.

The first problem I had was executing the `makecert` program via the Visual Studio Command Prompt on my machine. This tool is really useful when creating a self-signed certificate.

d:\Temp\vpnblog>makecert -sky exchange -r -n "CN=RootJanHome" -pe -a sha1 -len 2048 -ss My "RootJanHome.cer"
'makecert' is not recognized as an internal or external command, operable program or batch file.

Apparently the `makecert` program isn’t installed by default on your machine when installing Visual Studio 2015. You’ll have to install the Windows 10 SDK and tools in order to get it. To fix it, just Modify your Visual Studio installation and select the option which installs these bits.


It takes some time, but when the installer is finished, you can start creating your certificates. First you’ll need a root certificate which will has to be uploaded to your virtual network.

# Root certificate
d:\Temp\vpn>makecert -sky exchange -r -n "CN=RootJanHome" -pe -a sha1 -len 2048 -ss My "RootJanHome.cer"

# Client certificate
d:\Temp\vpn>makecert -n "CN=ClientJanHomeUbook" -pe -sky exchange -m 96 -ss My -in "RootJanHome" -is my -a sha1

The second statement creates a client certificate, using the former created root certificate, which will be used for authentication when setting up the VPN.

These certificates will get stored in the `Current User/Personal` store.


I’ve created several other client certificates for my other machines as well which have to be exported in order to install them on the corresponding clients.


Make sure you are also exporting the private key of the certificates, otherwise they will be quite useless for authentication.

After having created all necessary certificates it’s time to upload the self-signed root certificate to your Azure virtual network.


The management portal provides a nice button to upload these type of certificates.

Having finished this initial setup you are ready to download the VPN client from the virtual network dashboard. Select the correct one matching your bits of the OS.


This application, which isn’t signed, creates a VPN connection for you which, in theory, you should be able to use.


Pressing the `Connect` button for this VPN connection will prompt you with a pop-up having another `Connect` button.


When pressing the `Connect` button a warning will be shown telling you the assembly `cmroute.dll` wants to update the routing table. As this software came from Microsoft I’d say it’s fairly safe to let the assembly modify your routes.


Pressing the `Continue` button will show the next problem I encountered. The connection can’t be established:


A certificate could not be found that can be used with this Extensible Authentication Protocol. (Error 798)

When this happens, it’s possible there are some errors with your certificates. In my case I am sure the certificates are correct, so something else is up.

I’m not sure why this error occurs, but do have a solution: Create the VPN connection by yourself!

The tool already created a VPN connection which has the gateway address in it.


Copy these settings to a new VPN connection, for example janhome_manual.


Make sure the Security settings of this VPN connections uses a Smart Card for authentication.


You can also specify in the IPv4 properties not using the gateway of the virtual network. This is especially useful if you still want to use the internet when connected to the VPN.

If you have set this up correctly a connection can be made to the virtual network using your client certificate.


The first time I was connecting to the virtual network I received the following error message:

The remote access connection completed, but authentication failed because the certificate that authenticates the client to the server is not valid. Ensure that the certificate used for authentication is valid.

The reason for this error was on my behalf. While troubleshooting the problems I had, I had created and uploaded a new root certificate, but hadn’t uploaded this to the virtual network yet.

I do hope you are able to set up a VPN connection with a bit more ease as I had.