I have a huge XML document (over 2GB) exported from an automotive company system which I wanted to be able to export data from it to a CSV file to import into a legacy reporting system. Yes I know this is a bit back to front but a job is a job.

My first thought was to write some C# code to extract the data, but this quickly became difficult as the XML document’s schema was non-trivial due to its use of substitution groups. I may have been able to use XSLT, but this is not a strong point for me, and I think I would have the same complexities with the XSD.

So instead I looked at using the Liquid Data Mapper which is part of Liquid Studio 2017. There is a video explaining how to go from CSV to XML, so I just reversed the Source and Target and this seemed to work OK.

In fact it was quite easy as a lot of the field names matched so the automatic ‘Connect Child Nodes’ connection matching function connected many of these for me.

However, when I clicked the run button I received an ‘Out of Memory’ error. Not so good.

I contacted the Liquid Technologies support team and they responded very quickly suggesting that I try running the generated transform .exe file from the command line rather than from inside Liquid Studio as shown in the video ‘Generate an Executable (.exe) Data Mapping Transform’.

The size of file that can be processed is ultimately dependant on the memory of the PC, but they say they have tested with files > 5GB using a 32GB PC and it works OK.

Anyway, I followed the instructions on the video and it worked straight away. This is very impressive and I would highly recommend using this approach for mapping data.


I was interested to see a tweet from Liquid Technologies promoting free licenses of its XML products for Microsoft Most Valuable Professionals (MVPs).

So this got me wondering what else is available for free, and guess what, lots…


You can request a free Liquid XML Studio 2017 license here:



This has been annoying me for a while, but as usual the solution was simple. It turns out Visual Studio 2015 removes some key entries form project.json when you update Microsoft.NETCore.App using NuGet Package Manager.

Before updating to Microsoft.NETCore.App v1.1.0 project.json:

"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true

"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.1"

"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"

After updating to Microsoft.NETCore.App v1.1.0 project.json:

"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true

"dependencies": {
"Microsoft.NETCore.App": "1.1.0"

"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"

Which causes the error:

Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'.

So to fix it just add the missing bits back into project.json:

"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true

"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"

"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"


After deliberating forever I finally purchased a big(ish) 4k TV, a Samsung UE55JU6800.


1. Sky+ HD Box –> HDMI –> TV

2. Sky+ HD Box –> Optical Sound –> Surround Sound

3. Surround Sound –> HDMI (ARC) –> TV

4. Sky remote synced with TV using 4 digit code.

With my old TV, when everything was off, all I had to do was turn on the Sky box using the Sky remote and the TV and sound would start automatically. Perfect.

But to my surprise my new TV refused to start my surround sound even though it was wired the same as my old system!

It was clearly connected correctly as, if I manually started my surround sound, the volume would work (using the Sky remote) and it would turn off the external device when the TV was turned off.

After much searching, the internet was no help. Many people suggested it was not possible to turn the external sound on, or some that I had to change the cable or Anynet+ (HDMI-CEC) settings.

However, if I specifically selected the option on the TV settings: Sound –> Speaker List –> Receiver (HDMI), the TV would start the surround sound correctly…so it was possible, but it seamed the TV would forget the sound setting next time it was switched on.

Anyway, I had pretty much given up when I noticed my daughter was watching TV with the surround sound on. I asked how she had done it and she said she just turned it on as normal. When I asked her to show me, she first pressed TV on the Sky remote and then the on button and then the Sky button…and it worked.



If you turn the Sky box on, the TV starts but it DOES NOT respect the Speaker List setting.

If you turn the TV on, then the Sky box, the TV starts and DOES respect the Speaker List setting.



In Visual Studio 2010 the default functionality meant that when you made a file Active, it was automatically selected in the Solution Explorer tree (but only if the containing folder was open).

In Visual Studio 2015, this functionality is turned off by default. Instead, you can also do it on a per file basis using the ‘Sync with Active Document’ button at the top of the Solution tree or by pressing Ctrl+[ followed by S.

However, if you like this to always occur, you need to turn it on in the options as follows:

Tools->Options->Projects and Solutions->Track Active Item in Solution Explorer

The good news is that this appears to find the file in the solution tree even when the containing folder is closed.

Not sure why they turned it off? Maybe performance issues on large projects?



Over the last 30 years, the fortunes of those attempting to break away from safe full time employment as a programmer/software developer/software engineer to be their own boss, developing leading edge software in a small office with a few other like minded professionals has taken significant different challenges. But for a new University Graduate with a few years employment under their belt, is it still worth considering, or are small software companies a thing of the past?

Pre Internet (Hard Times)

Before the internet it was quite a challenge to set up an independent software company. Along with a good idea and a good development team, you also needed traditional sales and marketing (magazines, trade shows, telesales etc.), and possibly more challenging, you needed to create physical copies of your software program on a CD (or floppy disk) and a hard copy of your Help Manual, all packaged into a shrink wrapped cardboard box.

To fund this enterprise you probably also needed to approach venture capitalists and split your company ownership. To borrow a phrase from the young people…”Ain’t nobody got time for that!”. Still the rewards were plentiful if done properly and many leading companies such as Microsoft and Apple started in this way.

Post Internet (Good Times)

With the dawn of the internet, the barriers to entry were significantly reduced. Not only did you no longer need to pre-box you product, either the end user could simply download it or the software was the web site, but it was also easy to do the sales and market of the product yourself with a little SEO (Search Engine Optimization) work for Google ranking and PPC (Pay Per Click) advertising.

More significantly however, your potential audience was massively increased as you automatically had a World Wide presence though your web site. Also, at least in the beginning, the Dot Net Bubble meant investment was easier to obtain as companies clambered to hit on “the next big thing”.

Open Source, Mobile Apps, Crowd Funding and Social Networks (??? Times)

So moving forward, we now find ourselves in a world where most new software is free. Moreover, you can even get the source code for free. Just looking at GitHub or CodePlex you can see a plethora of brilliant new projects…even ASP.NET 5 from Microsoft is built on an Open Source codebase! Can you make money from Open Source as a small developer? MySQL was sold for $1B to Sun (now owned by Oracle), but this seems to be the exception rather than the rule.

The other growth area is Mobile App development. This may be a better bet for a small start up as again it is easy to write an app and add it to the an app store. Just look at the popularity of the annoying but addictive(?) ‘Flappy Bird’ game. This was written by one person as the basis to learn how to develop apps, but in the new world of Social Networks it only takes a matter of days for a new idea to go viral to millions of people.

The other recent change is the notion of using Crowd Funding to help get an idea to production. This is a massive breakthrough for small companies, however it still requires your big idea to be of interest to others, which is probably difficult for someone wanting to develop the next Accounting Software product.

In Summary

So to answer my own question, I’d say probably not, however I think that times are definitely a changin’…again!


My Dad always told me ‘You should learn something new every day’, and today I managed it with my newly found ability to perform an incremental search within Visual Studio using the Ctrl-I key stroke.

For the previous 20 years or so, I have been restricted to using Ctrl-F3 to add a highlighted word to the find buffer, followed by F3 to find the next occurrence and Shift-F3 to find the previous occurrence. But now I can press Ctrl-I and start to type and all occurrences of what I type get highlight throughout the document, and also added to the find buffer, so F3 then works on the typed text.

This is a game changer in the world of document Find functionality, thank you Microsoft!


I recently had cause to reference two libraries which both contained the same class file. The Namespace : Class where therefore ambiguous within my application. Interestingly enough the .Net compiler simply takes it’s bat and ball home and does not allow you to access any of the exported types from these assemblies.

To resolve this you need to create an alias for at least one of the dlls. You do this in the Reference Properties:

  1. Add references in your app to the dlls.
  2. Right click on one of the assembly entries in the References list and click Properties.
  3. In the properties windows you will see an ‘Aliases’ property with the value of ‘global’. Change this to be ‘global, myalias’.

Click build and everything should be OK except when you try to use the ambiguous class. I.e. the .Net compiler will now be happy about the scope of all of the other exported items.

To use the actual ambiguous class you need to add an extern alias:

namespace MyApp
    extern alias myalias;
    public class MyClass
        var myClass = new myalias::AmbiguousNamespace.AmbiguousClass();

Note: you could prefix every declaration using the ‘global::’ scope, but that is the default so we don’t need to bother.


Sometimes you just can’t figure out why stuff isn’t working as expected in your C# code due to odd things occurring within the .Net framework. So the first point of call might be to use a decompiler tool such as JetBrains dotPeek (free). Often this will help you to realize you are making the wrong call or the wrong sequence of calls due to subtleties of .Net.

However, sometimes this just will not shed the required amount of light of the issue at hand, so you think ‘If only I could step through the .Net Framework code!’.

As it turns out this is quite simple as Microsoft allow you to download the .pdb files directly from Visual Studio as described here:


So now when you run your application in Debug and hit a breakpoint, instead of seeing a stack trace full of greyed out entries, you can simply step through the code and work out either the framework has an issue…or more often, as I find, that you’re doing it wrong.

Hope this helps someone.


After a frustrating waste of time I finally worked out how to Uninstall NuGet Package Manager from Visual Studio.

Usually I would just expect to run Tools->Extension Manager, then select the item from the list and click Uninstall, but the NuGet Package Manager Uninstall button was disabled.

I then checked Control Panel->Uninstall a Program, but there was no entry for the Visual Studio extension (I didn’t think there would be as they are managed within VS).

Finally, I had a brainwave, maybe it was permissions? So I right-clicked the Visual Studio icon and selected ‘Run as administrator’ and sure enough the Uninstall button magically became active and the world was a good place again.

Just thought I’d share this as you too may be losing the will to live trying to find a solution.


I've just got round to looking at Liquid XML 2014. I have been tasked with investigating W3C XML Schema 1.1 standard (XSD 1.1) and as if by magic Liquid Technologies have provided 1.1 support in their excellent XML Schema Editor. Here is what they say...

XML Schema 1.1 Support

XSD 1.1 AlternativeThe Liquid XML Schema model now supports the XSD 1.1 standard. This adds many useful constructs including asserts, openContent and alternatives. These constructs can be modelled and edited graphically, and XML 1.1 compliant instance documents can then be validated against XSD 1.1 schemas.

Choice of XSD Engines

The XML and XSD validation processor has been completely re-written for 2014. It now supports a plugin architecture making it possible to select the validation engine to be used for XML schema and XML document validation. These validation engines also operate asynchronously providing background validation as you type. The 2014 edition supports the .Net 4.0 XSD Engine, and the Xerces XSD Engine.


So they are now providing an option to use the Xerces engine for XSD 1.1 support. You can still choose the .Net engine for XSD 1.0 support, the .Net engine appears a little more strict, but as I discussed out in a previous post, it is unlikely Microsoft will support XSD 1.1 in .Net any time soon.

However, the major improvements are the new XSD 1.1 features within the graphical Design view where you can now graphically add XSD 1.1 specific options. I have only really scratch the surface so far, but the improved interface makes things a lot easier, which I guess is the point.

I also like the new inline XSD properties and annotations, this really simplifies things as you can see everything without having to look at the properties or documentation windows and is especially useful when you print your schema out.

One other thing I really like in the 2014 version is the improved support of type restrictions. You can now graphically see which items have been restricted in a derived type. This is really useful when you are looking at a complex schema and cannot figure out why you can’t add a particular item into your xml document without an error.

In summary, I really like Liquid XML 2014. The new features are very useful rather than just a gimmick as in other software upgrades I have seen recently.


Microsoft Visual Studio sometimes crashes when the .sln solution file gets out of sync with the hidden .suo file. The .suo file stores information such as the active project and is automatically created by Visual Studio.

To fix this issue, try deleting the .suo file. Visual Studio will just create a new one for you and the solution should open up correctly.

If you can't see the .suo file, check your hidden file settings in explorer:

Tools->Folder Options...->View->Hidden files and folders->Show hidden files, folders, or drives



My weekly Windows Backup failed with Error code: 0x81000037, which is a bit odd.

I googled the error and got to the Microsoft help page which explained:

0x81000037: Windows Backup failed while trying to read from the shadow copy on one of the volumes being backed up0x81000037: Windows Backup failed while trying to read from the shadow copy on one of the volumes being backed up.

It also contained a work around, but this proved to be incorrect for my issue!

So, I checked the Windows event log 'eventvwr.msc' and found the following in Windows Logs->System:

'Microsoft Antimalware has detected malware or other potentially unwanted software.'

'Name: Exploit:Java/CVE-2013-1493'

Turns out that the Java Cache on my PC had something looking like Malware in:


So the Backup refused to work, which I guess is a good thing if only the error message had been clear.

To play it safe I deleted the folder 'Users\.....\AppData\LocalLow\Sun' and all was well.




XML Schema (XSD) 1.1 was given W3C Recommendation status in April 2012, so do Microsoft intend to add support for 1.1 validation in .Net 5?

I’m not sure this will happen anytime soon. The reason I say this is that they would need to add support for XSLT 2.0 in order to add the ability to define assertions against the document (see summary of XSD 1.1). XSLT 2.0 and XQuery 1.0 are technologies that so far Microsoft has chosen to ignore in favour of developing their own LINQ to XML technology.

So if you are given a schema developed in XSD 1.1 and need to use it to validate your xml data in C# or VB .Net what do you do?

Currently I think the only answer is to resort to using a 3rd party library, but this could be impractical and may add an additional expense that may be difficult to justify to your boss. I suppose you could always strip out the 1.1 references, but the validation would not then be true.

Any other suggestions?



I had always assumed Android was limited to Java and iOS (iPhone/iPad) was limited to Objective-C, but you can now use Mono for Android and MonoTouch for iOS to write your apps in C#.

I didn't know this was possible until I read the What's New for Liquid XML 2013 where it mentioned support had been added for XML Data Binding with Mono from a company called Xamarin.

Xamarin got the rights to develop Mono extensions from Novell in 2011, I downloaded the free trial and it is a really great product. It integrates within Microsoft Visual Studio, and has good examples to get started. Within a few minutes I had an app running within the android emulator that is provide in the install. Note: The install is huge (940MB) but includes all of the third party products such as Android SDK.

I think this is a big step forward for developing on these platforms as cross platform support is now made easier...hopefully I can now make a fortune writing the next app to go viral, hmm I wonder if birds and piggies would work?!



I wasted a bit of time on this issue today, so I thought I’d add it to my blog.

I just wanted to schedule a task in Windows 7 Task Scheduler to run every hour forever. I already had this working on an old XP box so thought porting to a new Windows 7 box would be easy. I copied and pasted all of the options and then clicked run. The task failed and in the ‘Last Run Result’ column in the task list on the ‘Task Scheduler Library’ page I got the error code 0x8007010B.

It turns out that this is caused by enclosing the ‘Start in’ path in quotes! This is surprising as you are required to surround the ‘Program/script’ path in quotes if you have spaces in the path.

Anyway, I removed the quotes and it ran OK.



As a techie it is often useful to quickly look at a file in notepad, so I always add it as a shortcut in the 'Send to' right click option of Windows explorer. Trouble is I always forget where to add the shortcut when I use a new PC! So for future reference...

1. In windows explorer go to the folder:

2. Right-click and select New->Shortcut

3. Choose file: %WINDIR%\notepad.exe

Obviously you can add other shortcuts in here too.



Sky doesn't seem to understand what their own errors mean, so I cobbled together an understanding from some other posts and managed to get it working.

When you see the error [t6013-c1501] instead of your TV programme in Sky Go, it seems to mean:

'You registered a device, but then changed the hardware, so now I'm confused!'

In other words, the Digital rights management (DRM) used between Sky Go and Silverlight stored an old fingerprint of your PC, but rather than recognising this and allowing you to remove the device, it just disappears from the 'Manage Devices' page.

DISCLAIMER: Perform the following steps at your own risk. It worked for me, but I didn't care if it broke stuff. If you care....don't do it!

So, to fix this I did the following:

1. Login to Sky Go and click 'Watch live TV' from the home page. It will attempt to show Sky News and fail with the error [t6013-c1501].

2. Right click on the error and you should see the Menu option 'Silverlight'. Select this and a dialog should appear. Click the 'Application Storage' tab and delete any entry that relates to sky go. Click OK to close the dialog.

3. Close the browser (if you don't the next bit will fail as it will be using the file you need to rename).

4. Open explorer and navigate to the folder C:\ProgramData\Microsoft\PlayReady

Note: This folder might be hidden on your PC, if so in explorer select Organize->Folder and Search Options->View->Show hidden files and folders and click OK.

5. Rename the file mspr.hds to mspr.hds.OLD

Note: Don't rename/delete the folder C:\ProgramData\Microsoft\PlayReady or you will get the error [t6000-c1501]. The folder must exist in order for the new file to be created by Silverlight.

6. Log back into Sky Go and click 'Watch live TV', this time you should see a message saying something like downloading security components.


Techie talk:

So whoever wrote the code to create a new mspr.hds file didn't write code to check the folder existed causing what I assume is a generic error t6000, probably something like:

catch (Exception ex) { WriteToLog("Oops, something broke!"); }





Yesterday I installed Microsoft Visual Studio 2012 for the first time (all 8.5GB) and after 20 years of (mostly) happy times using VS they have removed Macros, one of the most handy features.

The first thing I wanted to do when I upgraded my VS2010 project was to add a #elseif block to each file. This would usually be simple case of find in files of the previous #elseif and then Ctrl+Shift+R to record a macro which would be: F8 (to select the next file from find list), F3 (to find the correct position in file), Ctrl+V to paste the new code. Then all I would need to do is keep Ctrl+Shift+P (Play Macro) pressed until all the files were processed.

But alas Ctrl+Shift+R does nothing! I won’t say that I use Macros every day but it was a very useful feature.

To continue my moaning a little more, I also don't like the bland interface. This has been well documented by others, but now I have used it myself, I find it difficult to tell one grey area of screen from another and the lack of colour makes the icons unclear.

I also don't see why the menus now need to SHOUT in capital letters?

On the plus side, they have now added the ability to see WPF properties in the debugger...a bit of an oversight in Visual Studio 2010. Oh, but you still can't edit and continue on files that contain templated code.

Whilst Visual Studio 2012 is not a complete disaster like Windows 8 (why develop a desk top OS to be the same as a Smart device OS), it does not float my boat.

Rant over.



Liquid XML Editor is one of my favourite tools, but I was slightly concerned with the original 2012 release as the new XML Data Mapper tool was a bit buggy. So I was pleased to see SP1 is now available for download.

Sure enough the issues have been fixed and it's once more a great tool!

The data mapper can also now be run from the command line (this was a little limiting before as you had to open the IDE to run the mapping) and the Help now contains full documentation.



Hi, it's really handy to be able to add Trace to your .Net application using the System.Diagnostics.Trace class.

The only problem is how the heck do you get it to Trace out at runtime?

The simple solution is to add this to your app config file...

    <trace autoflush="true">
        <add name="textwriterListener" type="System.Diagnostics.TextWriterTraceListener"
          initializeData="c:\temp\outfile.txt" traceOutputOptions="ProcessId, DateTime"/>



After clicking a YouTube video link, I was presented with the helpful message ‘You need to upgrade your adobe flash player to watch this video’ along with a link to Adobe to do just that.

After a long and frustrating cycle of install/uninstall Flash Player, I finally realised that this was a bogus message and should instead have said…

‘Looks like you have accidentally clicked Tools->ActiveX Filter option in IE9!’

Arrggghh…hope this helps someone else out who is getting this message (or me again if I misplace another mouse click).



I may be a bit slow on the uptake here, but I'm not sure how excited to get about my social networks influencing my search results?

I think it's good that you can indicate you like something on Facebook as your friends can have a look at the item or choose to ignore it, and I guess it makes sense that if you like something, then some of your friends will like the same thing.

But when I do a Google search, do I *really* want it to show bias towards things my friends have liked? Also, how many clicks does an item have to get before it is seen as noteworthy for others? Isn't the pool going to be too small?

Either way, good or bad, as a reaction to the noise about this stuff I was tasked with adding the +1 button to a site. This was painless enough...the official Google instructions can be found here:


I will now monitor the clicks, but somehow I don't think the count will go up that swiftly!!



I have had to rebuild my Windows 7 PC and all has gone fairly well until I tried to connect to a Samba share on a legacy Linux box running Redhat 8.

No matter what combination of domain / user /password I would just see the same message of:
"The specified network password is not correct."

This is a misleading error, very annoying and a little confusing until I found a hint that Windows 7 default authentication was not supported on older Samba implementations.

I guess I figured this out once before as it used to work before the rebuild! Anyway here is the solution:

1. Control Panel->System and Security->Administrative Tools->Local Security Policy (or run secpol.msc).
2. Select Local Policies->Security Options->Network security: LAN Manager authentication level.
3. Select 'Send LM and NTLM - use NTLMv2 session security if negotiated' and click OK.



I spent most of yesterday removing an annoying virus from my PC. I feel slightly foolish for getting one in the first place, but after so many years I guess I was always going to eventually succumb. I was also a little surprised at the failure of various tools at removing it.

The virus would redirect the browser to websites including ‘licosearch’, ‘hugosearch’ and ‘facebook’, and the disk would be thrashing away infecting dlls in some way.

I had the full up to date version of McAfee installed. This identified that there was an issue in some dlls on the system and was able to ‘fix’ them. But they kept getting re-infected. So I installed Microsoft Security Essentials and this too was able to identify and ‘fix’ the infected dlls.

The system scans take forever and I really expected better results. I also tried Malwarebytes, Hitman Pro, AVG and Sophos to no avail.

Eventually I thought I’d investigate myself. It turned out that on reboot, the virus would start 3 instances of Firefox.exe which I’m guessing would do bad things including infecting as many dlls on the system as possible.

I removed Firefox and the virus cleverly then launched 3 instances of Chrome! So I uninstalled Chrome and yes, it then started to launch 3 instances of iexplore.exe. If I’m honest, by this stage I was just seeing if it would be able to use any of the browsers!

As it was starting these on reboot, I looked in my User Startup folder and there was a <randomly named>.exe and several log files. I deleted these and rebooted. When I looked they had been recreated. So I then looked in the registry Run and RunOnce entries: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. Sure enough there were entries to run a file in C:\Program Files\<random name folder>\<random name file>.exe.

I deleted this and rebooted and it was fixed. I also looked in the event log and found a warning that Winlogon had failed to start the file C:\Program Files\<random name folder>\<random name file>.exe

So I also checked HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon and this entry had also been changed.

Finally I ran a full system scan to clean up any infected dlls. I hope it’s gone for good!


Unfortuately this is the ramnit virus and there are too many infected files to trust that it will be gone for good, so only one solution...format hard drive and start again.

Note: reports about w32.ramnit.a / w32.ramnit.b say that only .dlls, .exes and .html files are compormised, however, my svn source cotrol is showing .doc and .xls files have also changed.

Fortunately I have recent backups which I feel slightly *smug* about as my work colleagues have been less than sympathetic!