KORG nanoPAD2 Stand (DIY)

KORG nanoPAD2 Stand (DIY)

If you’re looking for a stand for your KORG nanoPAD2 series, then you’re in my position. I’m struggling to find a stand (even after stumbling for 3rd party options as well), but the music store in my area (in Kuala Lumpur), they didn’t even know what I mean.

Some people on YouTube even using real drum stand for this device. If you read this and you still have no idea what we’re talking about here, please check this video:

The D.I.Y Stand

So, here’s the tips how to build custom stand for your KORG nanoPAD2 series using something that you’ve already familiar and easily to find.

The first thing I realised that this device have almost same width with your smartphone. That’s when I though that I can use a normal phone holder with tripod screw mount to mount this device.

KORG nanoPAD2 and Smartphone Comparison

KORG nanoPAD2 and Smartphone Comparison

And it is true, when I put a phone holder for my old Phantom 3 Standard remote, actually it’s fits perfectly. If you don’t have this kind of phone holder, just look for similar holder with tripod screw mount at the back side.

Smartphone Holder

Smartphone Holder (notice there’s white rubber on the edge of the holder)

When it’s mounted, it will looks like this:

Smartphone Holder Mounted (Back View)

Smartphone Holder Mounted (Back View)

Smartphone Holder (Front View)

Smartphone Holder (Front View)

From this point, as you can guess, what we need to do next is to mount this setup on your camera tripod. I’m using Benro Tripod on this picture, actually this tripod is a travel tripod and the smallest tripod that I have. But I rarely use it, so that’s why I use it for this. 🙂

Mounted on Tripod

Mounted on Tripod

That’s it! What you need to do next is to adjust your tripod to your preferred heigh and position.

Position Adjusted on Tripod

Position Adjusted on Tripod

Ready for Action

Ready for Action

That’s all for today’s tips. Please subscribe to my email, YouTube channel, and like my Facebook page for more tips and updates from me. Happy jamming!

Candid Photography (Etiquette)

Candid Photography (Etiquette)

One of “genre” in photography (if there’s such thing as a genre) that I really like is “Candid Street Environmental Portraiture” :-). Not the conceptual candid, but real candid. We often hear people ask us to join an event they called “hunting”, but actually it’s a conceptual. Doing candid photography feels like you’re really “hunting” for good moment, interesting character, on the street. We don’t concept the shot, these are real people, this is exactly what they’re wearing that moment, that was their actual expression and that is what they do in that particular time.

Power Ranger Kids Area Volunteer

As you can see in previous photo, I didn’t put the Power Ranger background at the background, neither put that white board (props) near the subject. When I saw her, she completely separate from the crowd which is mostly kids. Another example in the next photo, I think everyone will agree that she’s very interesting character in that event, she’s attracting visitor to buy Power Ranger merchandise.

Power Ranger Toys Sales Girl
But is it allowed to took candid photo? What about the etiquette? I’m going to explain my perception and please don’t use this as your final approval to do this thing 🙂 , you still need to confirm with your local law and culture.

  • You Don’t Need to Ask for The Person’s Permission
    It won’t be a candid shot if you ask for the person’s permission, but however if you’re selling the photo, or use the photo for commercial reason, then you’ll need to ask for their permission.
  • What If I Get Caught When Taking Person’s Photo?
    Usually I pretend to shot in general, not only the subject. After taking photo of the subject, I’m taking another photo for the surrounding. But, if they approach you and ask you to delete the photo, then you must do it.
  • Is There Any Basic Rule I Need to Follow?
    I’m not sure, but my rule is: “I need to take good photo of the subject so when they found out their photo uploaded online, they will be grateful instead of complain”, “Never ever humiliate the subject”, “Work and take shot in the name of art, not freaky paparazzi, but good paparazzi”, “Measure the consequence, what if I publish their photo online?”

Well, that is some of my personal etiquette in doing candid photography. If you have any further question or have more tips on how you do this, please comment below and like this page on Facebook if you want to follow my updates in the future.

Installing MIUI v5 ROM on Lenovo S820

Installing MIUI v5 ROM on Lenovo S820

WARNING!!! Let’s make it clear first, I’m not responsible if you brick your phone or anything happened to it. I wrote this tutorial based on my own experience and it’s working perfectly on my Lenovo S820. This tutorial is only for “Advanced User” who experienced and familiar with flashing and installing Android Custom ROM.

Installing Custom ROM (even rooting your device) will void your device’s warranty.

There are two thing I have in mind when buying this phone, it’s DUAL-SIM Card capabilities and Custom ROM availability. Custom ROM availability is the most important thing for me because community support for software update will last longer (and faster) than vendor support.

Why Lenovo and Why MIUI

Lenovo made good decision in S820 by combining MTK 6589W 1.2 GHz Quad Core processor with PowerVR SGX544 in graphics processing unit, these two combination returning best budget Android smartphone that compatible with most of Android application and games in Play Store.

MIUI is the first Custom ROM on Internet, that available for Dual-SIM MTK Device.


You  have to know that there are two types of Lenovo S820 series, which is S820 and S820e. The international version should be S820, while S820e is exclusive bundled version from China Telecom.

There are two ROM marking for Lenovo S820, which is International (Lenovo S820_ROW) and China marking. The one I bought in Malaysia (might be in other country as well) is Lenovo S820_ROW. Marking is considered as partition table.

China (CN) marking and International (ROW) marking has different partition table (layout) but both are convertible. Means, we can convert ROW marking to CN marking and so on.MIUI ROM based on my experience, only works in CN marking, so you need to convert to CN marking if your S820 now is on ROW marking.

MIUI v5 on Lenovo S820


Let’s Get Started

OK, here is what we need to complete this tutorial:

  1. Please be familiar with SP Flash Tool (including install MediaTek USB VCOM drivers). You can read complete tutorial in this forum. The one that I notice is important in this process is: You must enabled DA DL All With Check Sum option in every flashing process.
  2. To convert ROW marking to CN marking, you need to do a full firmware upgrade. You can achieve this by downloading and flashing this: S820_S137_130711.rar (Flash Tool and manual are included). You may need to register as member first and don’t worry, it’s free … :p)
  3. To install MIUI ZIP package, you will need CWM Custom Recovery (CWM_v6.0.3.4_S820_CN.7z) that you can download here.
  4. MIUI ROM (even the latest version) shipped with old version of radio firmware (V.12). You may need to update this firmware by using new radio firmware (S820.V21_modem.zip) from S820_ROW (V.21) that you can download here. This package is CWM Recovery ZIP install package.
  5. Download MIUI ROM for Lenovo S820 here. (miuiandroid_lang_S820-3.9.20.zip)
  6. I don’t use GApps package that came with MIUI ROM because I’m not able to use Network Location service in all application that required Network Location such as Foursquare, Google Maps, etc. Although GPS still works but It took longer to lock GPS signal. This is happened because by default MIUI use Baidu location service.In order to fix this problem, I use the GApps package from here (gapps-jb-20121212-signed.zip) because the full package will install all Google Service layer to use with MIUI ROM.

Flashing MIUI Custom ROM

After you get all the requirement, here is the steps to install MIUI Custom ROM in your Lenovo S820

  1. Do full firmware upgrade by flashing S820_S137_130711.rar. This process will directly convert your Lenovo S820 ROW marking to China marking. Warning: This process will wipe all data in your phone! Do backup first!
  2. After flashing finish, don’t turn on your phone yet (it’s OK if you did, just turn it off again) and unplug USB cable for next flashing process.
  3. Flash CWM_v6.0.3.4_S820_CN.7z (CWM Recovery) using SP Flash Tool. Please notice that this is CWM recovery that works with China marking. Because we convert ROW to CN marking in first step, that’s why we use this version.
  4. Turn on your phone by holding Volume Up + Volume Down + Power button until Lenovo boot logo appears.
  5. In CWM Recovery advanced menu, mount the USB Storage and copy all required CWM installation package (miuiandroid_lang_S820-3.9.20.zipS820.V21_modem.zipgapps-jb-20121212-signed.zip) to the root folder of you external SD Card (you can use internal if you want) and after finish, Safe Unmount your USB Storage.
  6. You can start to flash miuiandroid_lang_S820-3.9.20.zip and S820.V21_modem.zip firstdo factory reset and boot your phone and complete MIUI setup and turn your phone back off for GApps installation.
  7. You must complete MIUI setup first before installing GApps package. Because this package is not the one that came from MIUI. To install GApps, enter recovery menu (Step No. 4) and flash gapps-jb-20121212-signed.zip package, wipe cache and boot your phone.You will need to do another setup for Google Account. You may experience forced closed on Settings app during Google Account setup, but don’t worry, It’s normal.

Feel free to contact me if you have any question … Happy flashing!


Reverting back to Stock ROM is very easy! Download Stock Lenovo S820 ROW firmware here, then flash (firmware upgrade) using SP Flash Tool (tool are included on archive).

Always check latest MIUI ROM for Lenovo S820 here.

TeamCity – Continuous Integration for Everybody

TeamCity – Continuous Integration for Everybody

TeamCity - Continuous Integration for Everybody

TeamCity – Continuous Integration for Everybody

I’m writing this article in English, even my English is not that good :p. The main reason is because the audience of this article is supposed to be my colleague. I will write the article on my blog first to share with the world ^_^ and then I will copy the article to our company’s forum for our internal documentation. For several article ahead, we will discuss about how can we use a “Continuous Integration” system in to support our SDLC.

If you came from Java (Programming not Island :D), maybe you are familiar with Jenkins (Jenkins-CI). Both are similar tools, written in Java, and available for Linux, Windows and Mac OS X.But how does Continous Integration (CI) works? Here is the figure:

Continuous Integration - Summary of Steps

Continuous Integration – Summary of Steps

  1. Developers work to transform the requirements or stories into source code using the programming language of choice.
  2. They periodically check-in (commit) their work into a version control system (VCS)
  3. The CI server is polling the VCS for changes. It initiates the build process when it encounters a change. The build is executed using a dedicated tool for the job such as Maven, Ant or Rake etc. Depending upon the language used, the source code may need to be compiled.
  4. Static analysis is performed on the source code, to ensure compliance with coding standards and to avoid common causes of bugs.
  5. Automated unit tests are executed.
  6. The percentage of the production code exercised by the unit tests is measured using a coverage analysis tool.
  7. A binary artefact package is created. At this point we might want to assist derivation and provenence by including some additional metadata with the artefact e.g. a build timestamp, or the source code repository revision that was used to produce it.
  8. Prepare for functional testing by setting up the test fixtures. For example, create the development database schema and populate it with some data.
  9. Prepare for functional testing by provisioning a test environment and deploying the built artefact.
  10. Functional tests are executed. Post-execution, tear down any fixtures or environment established in 8 and 9.
  11. Generate reports to display the relevant metrics for the build. E.g. How many tests passed? What is the number and severity of coding standard violations?
  12. The process is continuous of course! So rinse…and repeat….

Source Article

For the next series of this tutorial, first of all we will define the scope by using real case example. Maybe not all of the step we’re implemented right now but most of them will done.

To Be Continued …

Android-x86 Installed on SD-Card in 10 Steps

Android-x86 Installed on SD-Card in 10 Steps

As we already know, Android-x86 project is a project to port Android open source project to x86 platform. Basically it could runs on any x86 machine but many people use it on Netbook computer. That’s also what I did on my ASUS EeePC T101MT.

Asus EeePC T101MT comes with dual boot Windows 7 Starter and ASUS Express Gate (based on Splashtop). It’s so risky to install Android-x86 or any other Linux based distribution to hard drive because it has hidden recovery partition that we doesn’t want to mess with it.

In this case, I use 2 GB SD Card to store Android-x86 2.2 OS that I installed from bootable flash drive and modified it’s GRUB configuration so even we setup Card Reader as primary boot device from BIOS, we still able to boot to another OS on hard drive from GRUB menu.

In fact, this is the safest way to install (not live session) Android-x86 without messing up your configuration.

How We Could Achieve This?!


  1. UNetbootin, Flash Drive, SD Card and Android-x86 2.2 ISO Image.

  2. BIOS that capable to boot from Flash Drive and Card Reader.


The detail about installation process has perfectly described here. But in order to accomplish our purpose in this tutorial, please follow this steps:

  1. Follow the instruction about how to make Android-x86 bootable Flash Drive using UNetbootin on that link. The point is, you should make a bootable media (CD-ROM or Flash Drive) from Android-x86 ISO image.

  2. Before we start, put your SD Card into your Card Reader and keep your Android-x86 bootable Flash Drive plugged-in.

  3. Restart your Netbook and enter BIOS Configuration Setup and make sure HDD Boot Order similar to this: Flash Drive –> Card Reader –> HDD.

  4. Boot your Android-x86 Flash Drive and enter installation procedure.

  5. Caution: When you chose installation partition during the process, use Card Reader (your SD Card) as target partition. Please notice that Card Reader drive usually recognize as sdc1 FAT32 Card Reader.

  6. Format your SD Card as FAT32 (don’t chose another) and select “Yes” when you asked about GRUB installation.

  7. If asked, make 512 MB user data image and 1024 MB fake SD Card image. You may customize this value as you want.

  8. After reboot, re-enter BIOS Configuration Setup and make sure your Card Reader at the first boot order.

  9. If your Windows partition is not listed on GRUB menu, don’t worry! Just boot into Windows (don’t forget to change your boot order to HDD) and edit menu.lst  (GRUB’s Configuration) located on SDCardDrivegrubmenu.lst and add this line:

    title Windows 7 Starter EeePC
    rootnoverify (hd1,0)
    chainloader +1

    Change the title as you want but please note that I use rootnoverify (hd1,0) and not rootnoverify (hd0,0) as told by lot’s of example, because in my configuration, when we boot from Card Reader, my Card Reader drive became the first drive on system (hd0,0).  So it’s necessary to change those value to (hd1,0) which means, my Windows bootable partition located on second harddrive at the first partition. Here’s my complete menu.lst for example:

    root (hd0,0)
    title Windows 7 Starter EeePC
    rootnoverify (hd1,0)
    chainloader +1
    title Android-x86 2.2 (HDPI)
    kernel /android-2.2/kernel quiet root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode DPI=240 SRC=/android-2.2 SDCARD=/sd/sdcard.img
    initrd /android-2.2/initrd.img
    title Android-x86 2.2 (MDPI)
    kernel /android-2.2/kernel quiet root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode DPI=160 SRC=/android-2.2 SDCARD=/sd/sdcard.img
    initrd /android-2.2/initrd.img
    title Android-x86 2.2 (Debug mode)
    kernel /android-2.2/kernel root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode DEBUG=1 SRC=/android-2.2 SDCARD=/sd/sdcard.img
    initrd /android-2.2/initrd.img
  10. After all set, make your Card Reader as your first boot device and you can enter your Windows session by picking first list on GRUB menu.

Please remind that do this at your own risk, I’m not responsible for any data lost or hardware damage because of any failure. Just be careful and backup your data first if you’re not sure you can do it right! 😉

FFmpeg Tips & Trick

FFmpeg Tips & Trick

According to it’s official site, FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. I personally use it for doing video conversion for my mobile phone and dvd player. I made some bash scripts that can help us to work with those tasks.


ffmpeg -i "$1" -sameq -acodec copy -vcodec copy -ss "$2" -t "$3" "cutted-$1"

How To Use:

cut-video.sh videofile startpos length


$ cut-video.sh video.mp4 00:00:00 00:05:00

The example told the script to cut video.mp4 start from beginning for five minutes length. The result will saved on same directory with “cutted-“ prefix.


ffmpeg -i "$1" -s 480x320 -aspect 4:3 -r 15 -b 512k -ab 128k -ac 2 -ar 44100 -acodec aac -vcodec mpeg4 -strict experimental "$2"

Note: Make sure to put all ffmpeg syntax above in one line! I put it that way only for display purpose.

How To Use:

mp4-mobile.sh videofile resultfile


$ mp4-mobile.sh whatever.flv resultvideo.mp4

The example told the script to convert video from whatever.flv (or any other ffmpeg supported format) to resultvideo.mp4 (MP4 Format). I use this script to convert any video for my Samsung GALAXY Spica (Android) Video Player.

You may change the script parameter as you wish i.e. changing to higher resolution, aspect or video and audio quality. But make sure your player is capable to play it!

As you notice, I use experimental (free) AAC audio encoder (considering that libfaac is not free anymore) so that’s why we have to use -strict experimental option.


ffmpeg -i "$1" -s 480x320 -aspect 4:3 -r 25 -b 512k -ab 128k -ac 2 -ar 44100 -acodec ac3 -vcodec libxvid "$2"

Note: Make sure to put all ffmpeg syntax above in one line! I put it that way only for display purpose.

How To Use:

mp4-dvd.sh videofile resultfile


$ mp4-dvd.sh anyvideo.avi dvdvideo.mp4

The example told the script to convert video from anyvideo.avi (or any other ffmpeg supported format) to dvdvideo.mp4 (MP4 DVD Format/DivX Compatible). I use this script to convert any video for my LG DVD/MP4/DivX Player (should work with another DVD/MP4/DivX player too). Just burn all converted files in one DVD and play them on your player.

Again, you may change the script parameter as you wish i.e. changing to higher resolution, aspect or video and audio quality. But don’t change video and audio codec parameter, also make sure your player is capable to play it!

Don’t forget to make all of those script executable and available on system path and of course you should have fully functional FFmpeg on your system.