Migrating Legacy UUID of MongoDB to standard UUID

MongoDB has a legacy format for UUID which causes problem where the UUID is interpreted differently on different platforms, and the standard UUID solves that exact problem.
However, the C# driver defaults to use legacy format and requires switching to standard format explicitly.

Moreover, after switching to standard format, you might get Exception due to existing UUID. You can fix that Exception by using the Python script below to migrate legacy UUID to standard UUID while maintaining the same C# GUID translation:

After running the script, you can then replace ‘my_collection’ by ‘my_collection_new’.
Based on your actual need, you may also replace CSHARP_LEGACY with JAVA_LEGACY or PYTHON_LEGACY or other legacy format (http://api.mongodb.org/python/current/api/bson/binary.html).

Hope this help!

“Access is denied” when using Microsoft Speech Platform with IIS

When you are using Microsoft Speech Platform in your web service to perform speech recognition, you might find a strange situation when the web app works perfectly in Visual Studio, but keep having “Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))” when you try to instantiate SpeechRecognitionEngine.

After some searches on the Internet, I found 2 suggestions in this article http://stackoverflow.com/questions/3385382/run-microsoft-speech-over-iis:

  • Use procmon in SysInternals to find ACCESS DENIED result and add permission there
  • Grant read permission for the IIS apppool account to folder

I tried the second suggestion first as it is more straight forward, but it didn’t work out for me. I then tried the first suggestion.

Turned out the path is a bit different on my PC, probably due to x64-x86 compatibility.
Access Denied problem

I added read permission for

to the folder above (and some of its parents), and the speech platform works perfectly in IIS now.

I hope this article would help you if you have to same issue. Please also leave a comment if you have a better solution.

Building a small running bot with Windows 10 on a Raspberry Pi 2

I won a Raspberry Pi B+ from a Microsoft event, so I took some time to learn about the Pi to understand more about all the fuzz around IoT. The experience I had is very fun and excited. I study and work mainly on software engineering, so hacking the virtual world is much more familiar to me that hacking those hardware and devices in the real world. However, Raspberry Pi turned out to be the perfect device for me to learn more about this IoT area by providing a bridge between high level programming language (such as Python) and all the “complicated” GPIO and I2C stuffs. In other words, you can write Python instead of C++ or Assembly to communicate with so many electrical boards and devices. There are many interesting and easy to follow tutorials on Adafruit that I strongly recommend you to take a look and give it a try.

With the introduction of Windows 10 on Raspberry Pi 2, the small computing box becomes even more interesting to me. The Pi can now run Universal Windows apps and communicate with devices such as Xbox controller. Therefore, I have decided to buy a new Pi 2 and give Windows 10 IoT a try with a new project: a running robot that is remotely controlled with a Xbox Controller.
Read More

Beta8 and the new hosting model

In ASP.NET6 beta8, Helios (IIS native host) has been removed. Instead you can use Kestrel host and configure IIS server to talk to the host. This hosting model should be very familiar with people using ASP.NET 6 on Linux as they may have already been using this hosting model from previous betas. I won’t write much about the hosting model as Damian Edwards already has a detailed post on that here: https://github.com/aspnet/Announcements/issues/69
However, I will describe some change that everyone that are using Helios on Windows would have to make to their beta7 projects.
Read More

CompositeTransform3D in Windows 10

I believe this has been mentioned in several blog posts (such as this one), but I missed one important part, and it took me almost an hour to figure out why my CompositeTransform3D does not give a nice 3D effect but only a “scaling” effect.

Turn out I need to have to put a PerspectiveTransform3D in the container of the element with CompositeTransform3D.