Apr 11, 2014

Outlook 2010 Visual Basic Script on Rule

I found that Microsoft Outlook gives us a way to run a Visual Basic Scripts.

I was hard to search a good sample script and this was the best one I have found.

http://code.msdn.microsoft.com/office/Outlook-2010-Manipulate-64fead5e

The example shows how to iterate all of "conversation" in a give MailItem.

The script can be executed on Rule.

Apr 9, 2014

I had a chance to enjoy C++11

I had a chance to enjoy C++11 for a few days. I liked std::thread and std::mutex. Now I don't need to borrow thread implementation from MIT p-thread or Boost anymore. I heard file system stuff is very fun to play with but I didn't have chance for that yet.

Lamda expression is fun but I feel little dangerous. It reminded me of the syntax of Perl; more specifically the implicit variable, "$_". It is a powerful toy but it can easily make other programmers suffer from the complex and dense program code.
I am inspired and excited enough to think about making some small programs on Raspberry Pi with C++11. However, it seems that C++11 doesn't have any network features yet.

*PS: BTW, isn't Java new version coming out soon?

Apr 6, 2014

Two player games with MK802IV

After little more struggling, I was able to play two player fighting games with MK802IV. As I described, when I attached two gamepads, only one of them was responsive. I had to find a way to control the second player with Wifi.

I tried RemoteDroid but it required a Kernel that is compiled with uinput. Mine didn't have it and I didn't want to downgrade it.

The factory firmware was shipped with an interesting remote controlling software called "RkGameController". It is a server side input system and there was a client app, "RkRemoteControl". It looks like this:


Now I can play the first  player with wired XBox360 controller and the second player with my 7inch KindleHdx via Wifi.

I found a Video that demonstrate how RkRemoteControl works: 



A tricky part was that I couldn't figure out how to use "Game controller" mode in RkRemoteControl. On client side, I can reposition buttons but I didn't know why I had to reposition buttons on the server side. It turned out that this game controller mode doesn't send key press but it works as touch pad. It remaps touching position data. It still rely on the overlay gamepad feature from FPse.

The re-mapping touchpad screen is very clever but I almost missed it; I am glad I didn't. If the video was verbally explaining what the Chinese was doing, it could be much easier. lol

PlayStation One emulator, FPse, runs on MK802 IV with many issues.

I believe it was last July. I ordered an interesting Android device called, MK802 IV, made by RikoMagic: http://en.wikipedia.org/wiki/Android_Mini_PC_MK802.
 
I was comparing the video play performance to Raspberry Pi. The hardware spec seemed much better because MK802 IV had quad core CPU and 2GB memory while Raspberry Pi has a known to be weak CPU and 512MB memory. From my simple movie play testing, Raspberry Pi was much faster for high definition video play. I think it was because Raspberry Pi has dedicated Hardware video decoding unit.

I was disappointed because it was double times more expensive than Raspberry Pi and whatever I was trying to do, it was super frustrating due to software issues. Many documents were written in Chinese and I couldn't find official firmware downloading website.

I put it in a box and forgot about it until last Friday. What I thought was that it may do better job on Play Station One emulator because it has good CPU power. I tried psx_ReArmed on Raspberry Pi but the CPU wasn't strong enough to emulate it. One of PlayStationOne emulators, FPse, was running very well on MK802 IV. There were some frame drops but it was still playable. I was happy to see old familiar games.

I thought I can take another step further. I was trying to use two gamepads but it didn't go well.
  1. First problem was that although the manufacture didn't mention it, it wasn't able to provide enough power to two USB gamepads. It seems like one gamepad was limit without a USB hub that can supply additional power.
  2. Second problem was that even though I solve power issue, one of gamepad was stuttering a lot. Only one gamepad was working smoothly. This means no two player games. I still don't know if it is my device only issue or Android general issue.
  3. Third problem was where I wasted most of time. MK802 IV has built-in Bluetooth but rumor is that BT feature is not fully implemented. I was trying to use my PS3 controller via the Bluetooth. I found many people gave up. I could give up early and save some time. This means no wireless controllers.

Although it is still not perfect, I am still happy about the fact that I can enjoy old good games.

Apr 5, 2014

I ordered Amazon Fire TV yesterday. We got a new 60inch Samsung TV last week but it wasn't smart TV and it had no fancy features at all. So I was looking for any "smarter TV" devices.

I wanted to do four things with my new TV client: NetFlix, PC/Tablet mirroring, casual gaming and XBMC; in order of priority from high to low.

Candidates were Chromecast($35), RaspberryPi($40), Ouya($90), Roku3($99) and AmazonFireTV($99).

I have been enjoying XBMC with my RaspberryPi for more than a year already. I love it and I cannot live a day without it. But most of time XBMC doesn't go along with NetFlix. NetFlix has been intentionally banning Hackable devices in order to protect their digital contents. So NetFlix doesn't run on any Linux devices while XBMC runs on most of hackable devices. I haven't seen any devices that runs both except Windows PC. Because of the reason, I am giving up XBMC this time.
  • Chromecast is the cheapest solution for NetFlix and it does web browser mirroring. But there is no way to run XBMC on the device.
  • RaspberryPi runs XBMC but no NetFlix. Because RaspberryPi had GPU, it is able to run some casual games such as game console emulators. But it is running Linux not Android so GUI applications are limited.
  • Ouya has powerful NVidia Tegra3 GPU chip and it is a gaming console that can run PlayStation one emulator as well as all the other older gaming console emulators. It comes with a nice bluetooth wireless game controller, which can value about $40. It runs XBMC well and NetFlix too. It is almost perfect for my need but I heard that NetFlix support is poor because the device is hackable and NetFlix doesn't support it well.
  • Roku3 can run NetFlix but not XBMC. It seems that Roku is not a hackable device. Some said it can do some mirroring but some said it is not screen mirroring. It doesn't have GPU and it is not for gaming. It runs on Android so I am sure it had plenty of good apps.
  • AmazonFireTV has a good hardware spec. It runs NetFlix and it is able to do some good gaming. It seems that XBMC is not running well at this point but some said that Ouya version of XBMC runs well. It is strange because Ouya has ARM CPU and AmazonFireTV has snapdragon but it sounds promising so far. I am not sure about mirroring feature yet but I may be able to find some Android app for my need.

I listed descriptions of candidates in order of the price. But if I sort it in order of my priority, AmazoneFireTV, Roku3 and Chromecast come up to the top, because they run NetFlix.The difference among them is on gaming. AmazoneFireTV won.

As I wrote as few days ago, I found that it doesn't feel good to play casual games on PlayStation3/4 or PC. It feels wrong to play such simple games with high horse power devices. So gaming on TV client seems like a good approach. At least I like to try.

PDB file can be accessed with Dia SDK

I was looking for a way to gather useful data from .PDB files. Here PDB mean Program DataBase. It is generated from Visual Studio C++ for debugging.

It seems that Microsoft provides SDK for PDB files. It is called "Debug Information Access SDK" or "Dia SDK". Although it requires some programming, it doesn't seem too hard; an example.

On the other hand, there is a set of utilities for Linux binary format, ELF. It is called "BinUtils". It doesn't require any programming and it works well with shell scripting. I wish there is a BinUtils for PDB too.