Install fails because module ‘is-property’ isn’t installed

I was having some weird compile errors while trying to use node.js or io.js.

“Install fails because module ‘is-property’ isn’t installed” was another one of them.

This git issue reports there are some bugs in the Windows version of io.js to do with paths of more than 259 characters.

After upgrading to io.js 2.3.1 I seemed to get around at least this issue.

Writing node.js on Windows so far feels like a bit of a battle!

npm Set Visual Studio Compiler Version

Node.js or io.js will sometimes require a C++ compiler to build packages for you. On Microsoft Windows you can use Visual Studio. The newer free Visual Studio Community or the older (and also free) Visual Studio Express editions should get you going if you don’t have a commercial copy of Visual Studio.

To check the compiler npm is configured to use try:

npm config list

and check the msvs_version value.

You can specify a Visual Studio version for npm to use.

npm config set msvs_version 2013


npm config set msvs_version 2013 –global

Another option is to run


You can use other Visual Studio version numbers like 2012, 2010 etc.

There is also a Visual Studio plugin called Node.js Tools for Visual Studio that is quite useful. It is free and open source.

Visual Studio 2015 RC Hanging on Android SDK install

My Visual Studio 2015 install was still going after about 3+ hours on the Android SDK. It seemed like it had hung.

To figure out what is going on, I looked in the %temp% directory and there is a file called AndroidSDK_SI.log. Opening this log I could see that the install was still happening. The problem was how long it was taking. It sped up significantly after I stopped Star Citizen updating!

The Visual Studio installer could really do with a better feedback mechanism to let you know what something is still really happening. Some animated dots aren’t very convincing after several hours. Even an advanced GUI option to display the output of the currently executing log file in a text box would be useful. The Android SDK log was quite useful as it showed percentage of the download, download speed and estimated times.

Anyway, check it out if your Android SDK install looks like it is hanging.

Another option is the kill the SecondaryInstaller.exe in Task Manager if you really think it is hung. This is what is running your Android SDK install. You can try repair Visual Studio later to make sure everything is okay.

Redirecting Users Based on their Country IP Address

I can’t sleep, so it’s time for a rant about redirecting users based on their country IP address.

Just because I am in a country, does not mean I want to be shown a site in that countries language! Okay, some of you might be thinking this sounds perfectly reasonable, because most people in country will be able to read that language. Well, I am here to let you know you are wrong 😉

So what is the correct solution to choosing which language to show your website visitors?

Answer: Web browser cultural settings!

Yes, your browser tells a web server your preferred language.

Examples of why you should check cultural browser settings and not redirect on IP address:

  • You may be a traveler who doesn’t speak that language.
  • You may be a local person who prefers to use a different language. Some countries even have multiple languages, eg Switzerland as four national languages, 3 official languages at a national level. I’ll leave you to go check Wikipedia if you don’t know what they are.
  • There might be more, but the first one is the most important, because that is often me.

Okay, the poor person in an Internet cafe or a local computer may end up out of luck, but that is why you also need a good solution for letting a person change the language. This also goes for a localized site you have sent them to.

Point in case. The other day I logged into the Origin site (a computer game store/publishing platform). For the life of me, I could not find how to change my language settings. Maybe it was there, but after searching for a few minutes I got fed up and quit. Origin seem to have a bad enough reputation as it is without adding more misery to their users.

So… on the landing page, you need to provide the user some options to get where you want to be.

Country flags are often nice. A flag stands out and is recognizable as a way to change a language. Even some text will do with an option to select a new language, especially if you support only two. At the top of the page is nice, although some sites make you hunt down the bottom of the page. Even an animation on entry might be a nice way to where to find the language options.

Another nicety would allow the user to go back to the site you redirected them from. Sometimes I really did want to go to and not (you can look that domain extension up too, apparently it is barren, uninhabited and volcanic 😉

Last time I wrote a site that required multiple languages, I was using ASP.NET MVC. I even made some notes I just found.

Each HTTP request includes a header field “Accept-Language” and contains languages the user’s browser supports, eg:

Accept-Language: en-us,en;q=0.5

ASP.NET will provide you with a Culture and a UICulture.

Culture will let you know preferred date, number and currency formatting, etc. This could even be used to decide a display currency, although I am not sure if this is the best option right now. I’m mainly ranting about languages right now.

CultureUI should be used to decide which resources to load. So this is where you should be deciding which language to display.

So go forth my minions and change all those websites that have been annoying me over the years. Rage against the IP language redirection!

You can use your IP checking for things like Amazon Affiliates program. For some horrible reason, Amazon make you sign up to each or their different countries and send the appropriate affiliate code and URL.

Best Large Archive Format to Extract Files

So sometimes you just want to extract some files from a large archive. It might be a bit late now, but tar.gz is probably not the best archive format for huge archives and removing specific files. It can take a long time to find the file you want and extract it.

Formats like zip (and 7z?) know where the file is located in the archive and can extract it quickly (compared to tar.gz). In the comments of this article some people talk about the length of time tar.gz can take, eg 4 Gig file, 25 minutes.

According to this StackOverflow article, zip, 7z and dar (in non solid mode), can also extract files more quickly from a remote source. They have a list of files and can archive in segments to allow extraction without requiring the whole archive to be unarchived. tar by itself does no compression and harks back to the days of tape drives (tar is short for tape archive) where this is not really important as they use sequential reads.

An answer here mentions tar can store *nix file attributes. It seems like this is an optional parameter.

this option causes tar to store each file's extended attributes in the archive. This option also enables --acls and--selinux if they haven't been set already, due to the fact that the data for those are stored in special xattrs.

But at some point zip also gained support for *nix file attributes.

A unix zip file attributes answer and here is a python example.

zip can also store MSDOS file attributes.