After doing some research for a backup and storage solution I decided to go with Synology’s DiskStation DS 213. It’s a NAS server that can hold up to two hard drives internally. I use it primarily as a storage and backup device with two 3TB drives.


Especially when it comes to family photos and home movies my laptop and external drives were not a viable solution any more due to capacity limitations. Having all music files in one place and be able to access it with all devices was another good reason for taking the step to consolidate my data.

Although Synology offers some good solutions with the DiskStation’s operating software DSM, a desktop client and a set of great Smartphone apps I wanted the DiskStation to completely take care of my photos and home movies that I feed it through the SD card slot. In my case these are jpg and mts files. However, the underlying exiftool that is used for processing the meta data is able to process all kinds of formats.

UPDATE: After upgrading the operating system to DSM 4.2 exiftool was not present any more. That’s why I had to include the step Get exiftool and made some changes to the script.

UPDATE: The link to the bootstrap script was broken and, therefore, replaced.

UPDATE (2013-10-27): I rewrote the entire script to allow manual use and more flexibility.

Here is how to set this up. I assume that you are able to use a terminal software and open a SSH connection. This process will involve modifying your server. So, before you do so, make sure to read this disclaimer!

  1. Enable SSH
    • Go to the DSM webinterface by typing the DiskStation’s IP address into your browser
    • Navigate to Control Panel > Terminal and “Enable SSH service
  2. Access your server via SSH with your root account
  3. Bootstrapping/ installing ipkg: You need to modify your DiskStation to add some additional software. The instruction on how to do that can be found here. As an example, I will list the necessary commands for my DS 213.
    • cd /volume1/@tmp
    • wget\
    • chmod +x syno-mvkw-bootstrap_1.2-7_arm.xsh
    • sh syno-mvkw-bootstrap_1.2-7_arm.xsh
    • reboot
    • rm /volume1/@tmp/syno-mvkw-bootstrap_1.2-7_arm.xsh
    • vi /root/.profile

      Comment out and save by going to both lines and hit the following keys for both lines “SHIFT+i”, “#”, “ESC”

      #export PATH

      Type “:”, “x” to save and quit. If you don’t have these lines, just type “:”, “q” to exit.

    • ipkg update
    • ipkg upgrade
    • ipkg install bash
  4. Get exiftool
    • cd /lib/
    • wget\
    • tar xzf Image-ExifTool-9.39.tar.gz
    • rm Image-ExifTool-9.39.tar.gz
    • ln -s /lib/Image-ExifTool-9.39/ exiftool-folder
  5. Create directories for the script
    • mkdir -p /volume1/ron/scripts/photo-movie-helper
  6. Downlad the script into the script folder
    • cd /volume1/ron/scripts/photo-movie-helper
    • curl -O\
  7. Reroute the original synousbcopy script
    • cd /usr/syno/bin/
    • mv synousbcopy synousbcopy_renamed_by_ron
    • ln -s /volume1/ron/scripts/photo-movie-helper/\ synousbcopy

Please note that you have to repeat steps 1, 2, 3, 4, 7 after you have updated the operating software DSM.

My script can be found on GitHub and here:

All you have to do now is to insert a SD card with photos or home movies and hit the copy button on the DiskStation’s front panel (marked with a “C”) and the rest will be done automatically. A beep notifies you when the script is finished.

During the copy process the DiskStation creates a folder within the folder SDCopyFolder in the format SDCopy_YYMMDDhhmm. After the script is done with processing the latest folder it should not contain any pictures or movies any more – unless the files already existed.

These folders are not being removed by the script to have the contents intact in case something does not work properly. Additionally, the files on the SD card have to be removed manually as well.

Should you forget to clean the SD card and insert it again with new and old files a new SDCopy folder will be created, but only files that do not exist in the target folder will be moved this time.


Currently Google is transitioning Google Apps accounts to a new infrastructure. If your account was transitioned by you or by Google and you are experiencing problems with mobile syncing now then

  1. go to the dashboard as an administrator (if you only have a user account ask your admin to do so),
  2. click on “Organization & users”,
  3. go to the services tab and
  4. make sure that “Google Sync” is activated.
  5. Go to Settings > Mobile and check if “Enable Google Sync” is enabled (which it should be if you have used Google Sync already)

Ever needed to take screenshots for iTunes Connect without having an iPad or iPhone at hand? There is a actually a way of taking perfect screenshots directly from the iOS Simulator (part of Xcode) – no workaround or editing needed. In my eyes it is even easier than taking screenshots from an iDevice.

Here is how you do it:

  • Start your app in the iOS Simulator. For high resolution iPhone graphics make sure Hardware>Device>iPhone (Retina) is activated
  • Press ctrl + cmd + c to copy the current simulator screen content into the clipboard
  • Open Preview (e.g. through your applications folder or by doing a Spotlight search)
  • In Preview press cmd + n to create a new image from clipboard
  • Press cmd + l or cmd + r to rotate your screenshot as needed
  • Press cmd + s to save to where you want to store your screenshot

When you develop iOS apps with an OpenGL framework such as Cocos2D you will quickly find out that memory is a scarce resource on mobile devices. One useful way to save memory is to use so called sprite sheets that bundle images into a single file and provide textures directly.

A complete tool that makes it easy to create and manage sprite sheets is TexturePacker. Its basic features are free and the pro version costs 19.95$.

I used TexturePacker for my app Snakestein’s Reading Game. You can check out the result in the free or full version on the App Store.

There are great posts by Ray Wenderlich and Chris Fletcher on how to use TexturePacker.