Friday, November 13, 2009

Upgrading SqueezeCenter to SqueezeBoxServer

Logitech has released an upgrade of SqueezeCenter (now called SqueezeBoxServer btw) and here are the steps for upgrading from version 7.3.2 to 7.4.1.

  1. Uninstall SqueezeCenter 7.3.2
    # /ffp/sbin/funpkg -r squeezecenter-7.3.2-1.tgz
  2. Upgrade and install additional necessary Perl packages
    # wget -r -l1 --no-parent -A.tgz http://www.inreto.de/dns323/fun-plug/0.5/extra-packages/perl/
    # /ffp/sbin/funpkg -u *.tgz
    # /ffp/sbin/funpkg -i *.tgz

  3. Install SqueezeBoxServer 7.4.1
    # wget wget http://www.inreto.de/dns323/fun-plug/0.5/extra-packages/squeezecenter/squeezeboxserver-7.4.1-1.tgz
    # /ffp/sbin/funpkg -i squeezeboxserver-7.4.1-1.tgz


A couple of things to note:
  1. SqueezeBoxServer installs to /ffp/lib/squeezeboxserver and /ffp/etc/squeezeboxserver.
  2. You can delete any remainings of /ffp/lib/squeezecenter and /ffp/etc/squeezecenter.
  3. Before starting squeezecenter, it's safest to reset the database using /ffp/sbin/reset-slimserver-database.sh. Note that all your previous settings are preserved but your music library will be rescanned.
  4. Change the symlink for the logs in /ffp/var/log
    # rm /ffp/var/log/squeezecenter
    #ln -s /ffp/lib/squeezeboxserver/Logs /ffp/var/log/squeezeboxserver

Thursday, November 5, 2009

Kids - Joel's K2 Graduation Concert 2009


Actual dance performance :5 minutes
Actual day preparation :4 hours
Dance practice :8 weeks
Muvee of the whole event :timeless

Saturday, August 1, 2009

Need to sell/swap/throw/RMA/give away your hard disk? Sanitize it first!

Six months after my first NAS capacity upgrade, I finally managed to upgrade the capacity of the second hard drive in my NAS to 1.5TB as well. I had actually wanted to do this since the Western Digital launched the Caviar Green model for this size but stock was hard to come by.

Replacing the old 500GB hard drive with the new 1.5TB one in the NAS is easy enough, especially given my last experience. What to do with the old drive became a problem. In the first upgrade, I re-purposed the old disk as an external backup drive for my folks by housing it in a USB HDD casing. 500GB for a pair of old folks who ain't really into digital content is more than enough hence I figured giving them a second external backup drive will probably be a waste. I won't be needing it too since my storage needs are served by my NAS. As such, I decided to sell it away on my favorite online marketplace.

Now if the item I'm selling is an MP3 player, a CPU or any other components for that matter, I wouldn't think twice about just placing an ad in the forum the very day I decide to sell it. However, this being a device that stores content, and more specifically sensitive personal content (Other than personal pictures and videos, I digitize and store all my paper documents such as bills and statements), I figured I better sanitize it first to avoid subsequent misuse of my personal information. Call me paranoid but hey, better safe than sorry right?

In terms of how to sanitize the disk, there is no safer way than to physically destroy it either by incinerating it or smashing it into pieces. However, that obviously isn't going to work if you plan to sell the disk away.

The next best option is to run some software that will securely delete all your data from the drive. A couple of tools that I know of and have tried personally are:
  1. Darik's Boot and Nuke (DBAN) - a popular, open-source, linux-based self-contained boot disk that wipes any attached hard disks it detects. Incorporates a few wiping techniques such as Gutmann, DoD 5220-22.M standard, and zero/PRNG fill.

  2. Eraser - a Windows based utility that implements most of the techniques in DBAN.

  3. SDelete - a Windows based utility that uses core Windows APIs for its operations. Note that this utility can perform secure deletion of individual files/folders instead of the entire hard disk.

  4. HDDErase - a DOS based utility that relies on the hard disk firmware internal erase functions rather than block writes. Works only with newer hard disks (manufactured after 2001) since the erase function was not part of the ATA specification before that.
My current favorite is number (4) HDDErase. The key reason being that the secure erase is done at the lowest level possible ensuring that the operation is comprehensive (i.e. it also erases certain sectors not accessible by applications) and effective (i.e. it does not depend on assumptions on how the Operating System as well as the underlying physical hard disks perform read/write operations).

The minor grievance I have on this solution is that the software has to run in a true DOS environment (the command prompt window in Windows does not qualify) and the developer has not included a bootable ISO image as a release option.

Having said that, you can download UBCD which is a bootable CD/USB image containing HDDErase and a whole lot of other PC diagnostics tools. Note that its about 100MB in size hence its really an overkill if all you want is HDDErase (which weighs in at less than 1MB!).

For me, I used BootFlashDOS which is a simple executable (i.e. no install required!) that formats your USB stick and create a bootable DOS environment. Note that you will need a Windows XP or 2003 server host to run the executable though.

[EDIT: found an alternative way of creating a boot CD that do not require Windows XP or 2003 server. Check it out here.]

Thursday, June 11, 2009

MP4Cam2AVI - Freeware MP4 & MOV to AVI converter

For the longest time now, I've been capturing videos of my kids and family via my Panasonic digital camera DMC-FX01. The native format is M-JPEG compressed stream wrapped in a MOV container. If you are a Windows user, you will simply need to download the free QuickTime player to view the clips on your PC.

Over the years though, the number of clips I have grew and nowadays my family gets pretty bored when we have to sit through all those raw footage from the past. Hence I decided that its about time I pick up video editing to put them out of this misery.

As luck will have it, there is a pretty nice and powerful (for newbies and amateurs of course) video editing software bundled with the XP and Vista operating system called Windows Movie Maker. But alas, it does not support the MOV container format!

The good news is that there is a free and easy to use software called MP4Cam2AVI which can convert your videos from MOV into AVI at just the click of a button! The conversion is really quick if you retain the M-JPEG compression format (plus you don't suffer any loss in quality) and you can even select multiple files at one go! Of course, there is also the option to recompress the videos in XviD format during the converison to shrink the file size.

Although I would love to be able to just download the video files from my camera and start editing straight away, putting up with an extra step that takes just a couple of clicks and no more than a few minutes for the conversion (for free I might add!) is something I can live with.

Sunday, May 24, 2009

On demand start/stop SqueezeCenter possible?

My main gripe with SqueezeCenter is the ridiculous amount of RAM (around 90MB) it requires to run. On the DNS-323 which has only 64MB of RAM, this means constant virtual memory swapping even when the process is idle (i.e. not serving any clients).

This is rather annoying as it means the disks in the NAS can no longer spin down even when there are no user accessing the box. It has also made redundant all my previous efforts in getting the disks to spin down as often as possible (e.g. moving ffp, mysql db and www pages to a USB stick).

To get back my desired behaviour, I have three options:
  1. Upgrade to 128MB of physical RAM
  2. Run Squeezed (a lightweight alternative) instead of SqueezeCenter
  3. Start/Stop SqueezeCenter on demand
The first option is my preferred option as it should improve overall performance and not just for SqueezeCenter. However, it is extremely risky (changes of bricking your box is very high) as it involves some hardware modification and low level bios code hacking. Not recommended for the faint hearted and those under warranty. (And I just so happen to fall into both categories)

The second option seems like a good idea but it is really basic right now and lacks a lot of SqueezeCenter's features. Perhaps some time in the future I will reconsider this option.

The third option is a good compromise between having the full feature set of SqueezeCenter and getting my power-saving mode back when my SqueezeBox Boom is turned off. The only drawback is that there is a 2-3 minutes wait (for starting the monster up on the DNS-323) before the SqueezeBox Boom gets connected to SqueezeCenter when it is powered on.

I followed the instructions in Yannick's post and managed to get it working on my box with little trouble. I also made a number of changes to make it more robust, configurable and fit the ffp environment better. If you have followed my previous post on getting SqueezeCenter running on the DNS-323, you may find this approach more friendly.

In addition, I created a startup script for the standby daemon so that ffp will start the standby daemon rather than SqueezeCenter on boot/reboot. The assumption here is that I most likely do not need SqueezeCenter when I boot/reboot the box and I rather let a SqueezeBox client trigger the startup of SqueezeCenter than to have it unnecessarily load up my boot process and increase the boot time.

Here's a log of what I did to get this setup working in my environment:
  1. Set up standby daemon script
    1. Download and install script (link)
      # cd /ffp
      # wget -O standby_daemon.tar.gz http://forum.dsmg600.info/attachment.php?item=497
      # tar -xzvf standby_daemon.tar.gz
      # rm standby_daemon.tar.gz
    2. Configure sudoers to allow user nobody to trigger the script without password. [IMPT: do not blindly copy the code below! replace {your_hostname} with your real hostname!]
      # cd /ffp/etc
      # chmod u+w sudoers
      # echo "nobody {your_hostname}= NOPASSWD: /ffp/sbin/slimserver_standby_daemon.pl" >> sudoers
      # chmod u-w sudoers
  2. Set up SqueezeCenter plugin - Server Power Control
    1. Download and install plugin from here
      # cd /ffp/lib/squeezecenter/Plugins/
      # wget -O SrvrPowerCtrl.zip http://forums.slimdevices.com/attachment.php?attachmentid=7357&d=1241562529
      # unzip SrvrPowerCtrl.zip
      # rm SrvrPowerCtrl.zip
    2. Restart SqueezeCenter to load the newly installed plugin.
    3. Go to the settings page of the plugin (Settings>Plugins, look for Server Power Control and click on settings on the right) after SqueezeCenter has restarted
    4. Check the first two options (Shutdown and Shutdown to SqueezeNetwork) and enter "sudo /ffp/sbin/slimserver_standby_daemon.pl" in the textbox below it (both of them). Leave the rest of the options unchecked as we can't use them on the DNS-323.
    5. At the end of the settings dialog, select the option Monitor idle Players and select Shutdown server for the field Action to take after idle time. Optionally you can also setup the same in End of day action with a shorter idle time.
    6. Save the settings and you are done.

  3. [Optional] Start standby daemon instead of SqueezeCenter on boot/reboot
    # cd /ffp/start
    # chmod a-x slimserver.sh
    # chmod a+x slimserver_standby_daemon.sh
  4. Tips and Tricks
    1. The standby daemon outputs a log file called standby_daemon.log in SqueezeCenter's log directory (i.e. /ffp/lib/squeezecenter/Logs/). It records the timestamps of the shutdown and startup events which I find useful for tracking the uptimes as well as for debugging purposes.
    2. The default settings in the standby daemon script does not shutdown MySQL. (My instance of MySQL is used for other purposes hence I have to let it run independently). If you wish to have the script manage that, change the var $stop_mysql from 0 to 1. The script will, however, start MySQL if its not already running regardless of this setting. (Make sense right?!)

A couple of things still need to be sorted out in this setup:
  1. Wakeup prior to alarm - Since SqueezeCenter is no longer running all the time, alarms that plays from SqueezeCenter will not work. Initial idea is to modify script to set up a cron job to wake SqueezeCenter a few minutes prior to the alarm being triggered. Note that this should not affect you if your alarms are set on SqueezeNetwork and you have configured Server Power Control to automatically switch you to SqueezeNetwork when SqueezeCenter is being shutdown.
  2. Scheduled music library scans - Since SqueezeCenter is no longer running all the time, the scheduled daily scans may not be taking place anymore. Initial idea is to modify script to look for this setting and setup a cron job for it when the daemon is active.
I do not have any urgency to get these features working as I currently do not use them. I will probably get round to them if there is demand for it.

Thursday, May 21, 2009

Setting up SqueezeCenter on DNS-323


One of the best features of the Squeezebox Boom (or any other SqueezeBox devices for that matter) is the ability to remotely control it as well as to stream your own music collection to it. But to do this, you will need to install and run a server software called the SqueezeCenter somewhere on your network. The ideal place to host it will be where you store your music library and in my case, that would be my SOHO NAS, the Dlink DNS-323.

Typically, the first question that comes to mind when you need to install and run a software is the OS platform and hardware requirements. The good news is that SqueezeCenter is written in Perl and stores its data in a MySQL database hence will run on any OS platform which supports those two dependencies; And that practically means all common platforms out there e.g. Mac, Linux and Windows.

In terms of hardware requirements, its alittle heavy but nothing a recent PC cannot handle. On the DNS-323 however, it still runs but performance does take quite a hit. In my setup, the memory footprint is around 90MB for SqueezeCenter alone plus another 20MB for MySQL and CPU utilization spikes to 100% often when using the web interface. Note that the DNS-323 has just 64MB of physical RAM and a 500MHz ARM CPU. Having said that, the web interface is still fully usable (no time outs) although you do feel the lagginess with most operations.

Luckily, the weak server hardware does not affect its streaming abilities and so far (er.. that's just a couple of hours usage since I got my box only yesterday), I have not experienced any issues on my SqueezeBox Boom. From my observations, the CPU hardly broke a sweat (>5% usage) when streaming mp3 format natively and the response on SqueezeBox Boom controls are pretty jiffy.

Here's what I did to get SqueezeCenter up and running on the DNS-323:
  1. Get ffp 0.5 up and running (see wiki or my post);
  2. Setup Pre-requisite 1 - MySQL
    1. If you don't already have MySQL running, see this post;
    2. Create a new database and an associated db user for SqueezeCenter (NOTE: db and user should be called slimserver!) :
      # mysql -u root -p
      Enter password: your_root_password

      mysql> create database slimserver;
      mysql> grant all on slimserver.* to slimserver identified by 'your_password';
      mysql> flush privileges;
      mysql> quit
  3. Setup Pre-requisite 2 - Perl
    1. Download and install all the Perl packages found here:
      # wget -r -l1 --no-parent -A.tgz http://www.inreto.de/dns323/fun-plug/0.5/extra-packages/perl/
      # funpkg -i *.tgz
  4. Setup and configure SqueezeCenter
    1. Download and install SqueezeCenter package (squeezecenter-7.3.2-1.tgz);
      # wget http://www.inreto.de/dns323/fun-plug/0.5/extra-packages/squeezecenter/squeezecenter-7.3.2-1.tgz
      # funpkg -i squeezecenter-7.3.2-1.tgz
    2. Configure SqueezeCenter to start automatically when the box boots as well as to start it up now
      # cd /ffp/start
      # chmod a+x slimserver.sh
      # ./slimserver.sh start
    3. When SqueezeCenter starts up, it can take quite a few minutes before the web console becomes accessible. When it does become ready, you can access it via the URL http://[replace with your nas ip or hostname]:9000/
    4. Once you get into the web interface, the first thing you should do is to setup the path to your music collection. If your music collection is scattered all over, you will need create a "holding" directory and create the appropriate symlinks in there as SqueezeCenter only allows you to specify one location.
    5. Next trigger the scanning process to catalog your collection. Given the weak hardware of the DNS-323, the scanning process can take a long time to complete. (My 2000 odd files took 1+ hour to complete!)
  5. SqueezeCenter Tips and Tricks
    1. The location of the SqueezeCenter installation files (including plugins) are found in /ffp/lib/squeezecenter/.
    2. The location of the SqueezeCenter configuration files (including plugins) are found in /ffp/etc/squeezecenter/.
    3. The location of the SqueezeCenter log files are found in /ffp/lib/squeezecenter/Logs/. Since this isn't in line with where all my other logs go, I created a symlink to it at /ffp/var/log/squeezecenter/.
    4. You can set SqueezeCenter to automatically rescan your music collection once a day via the Schedule Rescan function in Settings>Advanced>Rescan Music Library.
    5. To reduce the memory footprint of SqueezeCenter, go to Settings>Plugins and uncheck all the plugins that you do not use. For me, I turned off the following plugins:
      1. Amazon CD Store
      2. Deezer
      3. Digital Inputs
      4. MP3tunes Music Locker
      5. MusicIP
      6. Pandora
      7. Rhapsody
      8. RSS News Ticker
      9. SIRIUS Internet Radio
      10. Slacker
      11. SlimTris
      Restart the slimserver process for the changes to take effect.
    6. If you find the display only shows the time and does not show the date in the "off/Standby" state, it is most likely because of your font setting. Change it (Settings>Player>Display>Standby Font) to "Standard" to see the date information.

    7. The slimserver startup script provided by fonz does not guard against firing multiple instances of the slimserver process. To fix this problem, include the following chunk of code at the top of the slimserver_start() function.

      # check if daemon is already running, if yes, do nothing
      if proc_status $command | grep -q "running as pid"; then
      echo "INFO: ${name} already running! Nothing to do."
      return
      fi
      # check if mysqld is already running, if not, prompt user and exit
      if proc_status "mysqld" | grep -q "not running"; then
      echo "ERROR: mysqld has to be running before ${name} can be started!"
      return
      fi
    8. The pre-configured SqueezeCenter settings uses named pipes for accessing MySQL, if you are having problems like database time-outs; e.g. you can connect to the web console but find that the scanning process did not find all your music files, check in the scanner log (/mnt/usb/ffp/lib/squeezecenter/Logs/scanner.log) for the following error messages:
      Slim::Schema::forceCommit (1496) Warning: Couldn't commit transactions to DB: [DBD::mysql::db commit failed: MySQL server has gone away at /mnt/usb/ffp/lib/squeezecenter/Slim/Schema.pm line 1493.
      ]
      Slim::Schema::Storage::throw_exception (70) Error: DBI Connection failed: DBI connect('database=slimserver','slimserver',...) failed: Can't connect to local MySQL server through socket '/ffp/var/run/mysql/mysql.sock' (2) at /mnt/usb/ffp/lib/squeezecenter/CPAN/DBIx/Class/Storage/DBI.pm line 652
      If it exists, then you may want to change SqueezeCenter to connect to the DB via TCP/IP instead. To do that, in your server config file, change the value of dbsource to "dbi:mysql:hostname=localhost;port=3306".

Overall, I'm very pleased with the setup. The only gripe is that my HDDs no longer spin down when the NAS is idle due to the virtual memory swapping caused by the SqueezeCenter process (which still consumes some CPU even when no clients are active!). I contemplated putting the swap space on the USB stick where ffp lives to circumvent this but decided not to as I'm not confident that my relatively new USB stick can take that kind of abuse (flash drives have limited write cycles). Perhaps its time to go for the 128MB memory upgrade hack!

Saturday, May 2, 2009

Squeezebox Boom is on the way!

As part of my ongoing project to build a connected home, I wanted to add a dedicated network music player for accessing my digital music library. This will complement my current pool of access points which comprises of solely multi-purpose network media players (i.e. XBMC on Xbox, VMC on HTPC and WMP on laptops).

This device will be used mostly as a bedside music player for my kids to access their music collection (yes, they have one!). In addition, I intend to also use it as a portable boombox around the house such as the patio and yard area where I can't access my other media players.

I started looking around for such a device last year and shortlisted a few; the Logictech Squeezebox Boom, Revo Pico WiFi Radio and the Sangean's WFR-20 Wi-Fi Internet Radio.

My top choice is the Squeezebox Boom as I really like the fact that it can work standalone as well as part of a multi-player system (i.e. together with other Squeezebox devices and/or compatible software based player running off standard PC based hardware). Moreover, both modes can be centrally and more importantly, remotely controlled via a web-based interface. This means that I can control my players in or out of the house and via any connected device with a web-browser (e.g. my mobile phone)! And to top it off, you can control them either via a locally hosted application (called the SqueezeCenter) or via the internet version hosted by Logitech (called the SqueezeNetwork).

Unfortunately, the Squeezebox Boom was not available locally and almost a year later, it still isn't. In the mean time, my kids have been bugging me relentlessly about having no access to their music in bed. So yesterday, I took the plunge and bought a Squeezebox Boom off ebay Australia for AUD$300 inclusive of local shipping.

Why Australia? Well, for one thing, I am going to get the overseas shipping free thanks to my cousin Yuan who has a friend returning from Australia in a couple of weeks time. And secondly, it is priced cheaper in Australia than the US. So its a no-brainer really.

ETA for my set to reach my hands is 20th May. In the mean time, I need to start figuring out how to get SqueezeCenter working off my DNS-323!

Sunday, April 26, 2009

Setting up MySQL on DNS-323

It took me awhile to get round to this (more than a year apparently) but I finally managed to get it done over the weekend. The trigger was because I am going to get a SqueezeBox Boom and will be running the associated controller software called SqueezeCenter (which requires the MySQL database) off the DNS-323.

Compared to the last time I was looking at doing this, the installation and setup is now a breeze, all thanks to fonz for creating a funplug package for it:
  1. Download the package from fonz's website
    # wget http://www.inreto.de/dns323/fun-plug/0.5/packages/mysql-5.0.67-2.tgz
  2. Install the package
    # funpkg -i mysql-5.0.67-2.tgz
  3. Setup the MySQL config file using the small version of the included examples (remember that the DNS-323 has limited resources)
    # cp -a /ffp/etc/examples/mysql/my-small.cnf /ffp/etc/my.cnf
  4. Define a storage location for your database files in the config file. For me, I have it on my USB stick as my usage pattern is mostly reads and I want to my HDD to remain in spin down state longer. Add in my.cnf after [mysqld] : datadir = /ffp/var/mysql
  5. Initialize MySQL
    # mysql_install_db
  6. Now create a database and have fun!
    # mysql -u root -p
    Enter password: your_root_password

    mysql> create database testdb;
    mysql> grant all on testdbuser.* to testdb identified by 'your_password';
    mysql> flush privileges;
    mysql> quit

  7. In case of errors, look up the log found in /ffp/var/mysql/[replace with your hostname].err

Besides using it with SqueezeCenter, I intend to also use it for some web-app projects (e.g. Joomla!). Stay tuned!

Wednesday, April 22, 2009

Microsoft Dynamics pains...

My organization has been using Microsoft Dynamics CRM and AX for almost 2 years now and have gone through one cycle of upgrades for both in that short time. And the reason? well, sad to say, is because both products fall short of what we wanted (and promised by vendor) initially as well as even now. Below are just a few examples of our disappointment:

1) AX Multi-timezone issue - we adopted the solution as a regional platform supporting 12 countries spanning 5 different timezones. Amazingly, the so-called enterprise class AX (previous version 4.0) cannot do this OOTB and even our vendor's promised workaround posed serious limitation to the way we do things. Having said that, the latest version 2009 does solve this problem.

2) CRM performance issue - The client side component of CRM is _extremely_ heavy (lots of small file fragments to load for a page and heavy use of javascripts) causing poor performance over WAN connections, adding substantial traffic to our regional corporate network (To make matters worse, network infrastructure across AP is still relatively poor, patchy and insanely expensive), and lastly requires reasonably powerful client side PC for snappy processing. We resorted to using Citrix to mitigate these issues (moving the load and traffic back to the server side) and even then, we are starting to find this "workaround" getting really expensive (Client license, rapidly growing Citrix farm increased hosting and management costs) as we scale up and throws our ROI right out the window. To top it off, the bloated and leaky (memory-wise) Internet Explorer in Citrix is NOT a good combination!

So in conclusion, IMHO, Microsoft Dynamics (especially CRM) is probably more suitable for small local shops rather than regional platforms with large number of users spread over geographically diverse locations.

Saturday, April 18, 2009

How to send email from scripts running on DNS-323

In the full installation of ffp 0.5, two email related utilities are installed by default. They are
  1. mailx - a Mail User Agent which allows you to send and receive mail using command line parameters, and
  2. esmtp - a Mail Transfer Agent which transfer mail from one computer to another
Unfortunately, they are not setup properly out-of-the-box hence you won't be able to use them right away. There also isn't any mention of how to do this on the wiki nor the package readme files.

Well, as it turned out, it wasn't that hard to get it up and running anyway which might explain the lack of documentation. But for the uninitiated, all you need is to create a config file called esmtprc in your /ffp/etc folder and input your mail provider details there. To learn more about how to configure the esmtprc file, take a look at this sample.

Then to send mail, use the mailx command syntax like this

> cat /bs/some_file.txt mailx -s "the email subject line" -r sender@somewhere.com recepient@somewhere.com

which sends the content of the file "some_file.txt" as the body of the message, or to send it as an attachment, use this

>mailx -s "this is your subject line" -a /bs/some_file.txt -r sender@somewhere.com recepient@somewhere.com

To use gmail as your mail provider, you may want to check out this forum post.

Thursday, April 16, 2009

How much does it cost to run a HomePlugAV network?

This question popped into my head today when I was contemplating leaving my HomePlugs on 24/7 instead of having to run around the house turning them on/off as required. So here's what I figured out:
  • Power consumption of the Aztech HomePlugAV HL109E is 4.5W (based on paper specs)
  • Running it all month will give consume 3.285kWh (4.5W x 730hr /1000)
  • At the current electricity price of $0.1803/kWh, monthly electricity bill will increase by $0.59
  • Over the course of a year, I will need to spend $7 to maintain 1 point.
  • Assuming I have 6 points in my house, that will be $42 a year!
Not cheap but still quite affordable considering that we are talking about six devices that are always on.

However, compare this with a 8 port LAN switch such as the Netgear GS108 whose paper specs say a maximum power consumption of 4.92W which works out to be just $7.70 a year for eight devices!

Hmm.. Looks like I will still be insisting that a wired Ethernet network infrastructure be one of the key requirements in my next house!

Saturday, April 11, 2009

DIY Passport Photos using your digital camera and photo printer!

Every so often, I find myself having to submit passport photos of myself or my kids for various applications. And each time, I find myself needing to go down to the neighbourhood print shops to get those photos taken/printed.

I remember back in the good old days, the process can take days and require professional equipment and a competent photographer. Of course, you have to pay an appropriately high price for the job. Something like S$6 for 4-6 photos.

However, with the advancement of modern digital photography and printers, all it takes is half and an hour (or less) and a common digital camera hooked up to a common photo printer. What's more, the entire process can be operated by a single five year old (ok, maybe 10). You will think that given the simplicity of the process and the cheap equipment required, the prices must have come down accordingly. Well, unless you have been living on another planet, the prices have been creeping up slowly.

To date, I have largely ignored the fact that I'm being over-charged for four pieces of photos that are barely larger than the size of a stamp. However, the last straw came when just two weeks ago, I found myself at a neighbourhood print shop needing to get my passport photos taken.

My usual practice is to just tell the shop assistant at my regular print shop how many pieces of photos I require, get through the process and pay the price shown on the till. This time however, I decided to try out a different print shop hoping that I can perhaps get it done cheaper. And boy was I wrong... this particular shop at IMM quoted me not the usual market rate of $6 for 4 pieces, she quoted me a whooping $12 for 4 instead! In fact, she even told me that its "cheaper" to get 8 pieces since it cost "only" $18! My eyes popped and I let out a loud "WTF?!" and did an about turn immediately. And that was when I decided that perhaps its time I make better use of my investments in my Sonly Alpha DSLR and my recently acquired Canon MFC printer.

The photo taking process is painless enough; just find a bright sunny day, stand indoors in front of a white wall somewhere near the windows where the light is coming through (make sure the sun is not shining on you though), and get someone to snap a few shots of you.

Don't worry so much about your position in the photo, just make sure your head and shoulders are covering at least half of the image. Oh, and don't use flash as that will cast shadows off your facial features (specifically your nose!) and reflections off your glasses (if you are wearing them).

Now here comes the difficult part, adjusting the image such that it complies with the specifications (size of image, position of your eyes, chin and shoulders, etc). Luckily, there is an online service called ePassportPhoto.com that will not only guide you along, but also let you finish the task in under five minutes with just a few mouse clicks!

All you need to do is to take the photo, upload it to the website, follow the few simple instructions to adjust the image and viola, a nicely adjusted image (comprising of 7 passport sized photos and a small text advertisement) that you can easily print on a 4"x6" photo paper and then cut it into the individual pieces.

So what is the damage of this DIY project? All of 30 minutes and $0.35 cents for a 4R sized photo paper! And you get SEVEN (eight if you cut and paste the advertisement away) passport sized photos to boot!

So goodbye to the ridiculously overpriced print shop down at IMM, and thanks for motivating me to find a cheaper way to get this done!

Monday, March 30, 2009

Watch YouTube on the go without connecting to the internet possible? Yes!

Previously, the only way to watch YouTube videos on the HTC Diamond (and the later siblings) is via the YouTube application that came bundled. It is a small application with a nice user interface. However, it does not have an offline mode hence requires an internet connection at all times. This pose a problem when you want to watch the clips on the go and don't want to incur hugely expensive data charges.

Then came freeware alternatives like youtubeplay; It's user interface won't win any awards but the good thing is that it allows you to save the clips and watch them offline. However, it doesn't have a "push" mode meaning that you have to spend time working through (i.e. choosing and saving) the clips you want to watch later which can get rather tedious.

Then I noticed that the YouTube site has rss feeds and figured I can perhaps use the bundled RSS Hub application to download them as podcasts and watch them on the go later. But alas, the native podcasts from the YouTube site are actually embedded flash players hence RSS Hub falls flat on its face here.

Then I found RSSHandler; a website that parse the YouTube feeds and convert the attachments to either FLV, MP4 or PSP formats! This turns out to be the perfect solution as there is nothing to install, its free and its dead easy to setup.

So to recap... to watch YouTube channels on the go with the clips automatically pre-downloaded on your Windows Mobile so that you don't waste time downloading them in real time and more importantly, you save on expensive data connection charges:


  1. Go to RSSHandler website.
  2. Generate the URL for the YouTube Channel you wish to watch by following the simple instructions on the website.
  3. Fire up RSS Hub.
  4. Add the URL in as a new rss channel.
  5. [IMPT] Go into the channel properties, tap on the Podcast tab and change the setting for "Automatically download podcasts" to "If Connected to PC Only" and "Keep this many podcasts:" to "All". (Otherwise, your clips won't be downloaded!)
  6. Hit refresh and wait patiently for your clips to get downloaded. (It can take awhile)
  7. And now enjoy your subscribed YouTube channels on the go... for FREE!

Oh, in case anyone is interested in what I'm subscribed to:

  1. TED Talks (technology) (RSS Hub link)
  2. New Scientist (science) (RSS Hub link)
  3. ThinkGeek (geek stuff) (RSS Hub link)
  4. Apple Movie Trailers (entertainment) (RSS Hub link)
  5. Fail Blog (entertainment) (RSS Hub link)

Tuesday, March 24, 2009

Jarrett can sing!

Managed to capture Jarrett singing "Rain, rain, go away!" on video this morning during breakfast. Check this out!

Sunday, March 22, 2009

Tips for extending the range of your wireless coverage at home

If you are using a wireless router like WRT54G as a secondary AP to extend the wireless coverage in your home, here are a few things that you should take note of:

  1. Use the same SSID, encryption type and shared key as your primary wireless router so that you can roam between the APs transparently.
  2. Use a different channel on your secondary AP if it is in range of the primary no matter how weak the signal is so that you have less interference between your own APs. If possible, use channels as far a part as possible (e.g. 1 and 11).
  3. Disable the WAN settings. Optionally, turn the WAN port into a LAN port.
  4. Disable the DHCP services.
  5. Set the IP of the WAP to a static IP. Remember that it has to be unique and be in the same subnet as the rest of your network (no reason to use a separate subnet unless you have lots of networked devices or special network zoning/security requirements). [TIP: set your DHCP server on your primary wireless router to allocate IPs in a range say 100 - 254. Then you can safely use the IPs from 2 -99 assuming that 1 is already used by your primary wireless router.]
  6. Set the gateway IP to that of your primary wireless router.
  7. Set the DNS IP to that of your primary wireless router or your ISP's DNS servers.
  8. Change the router mode from gateway to router since you no longer need NAT, Firewall and port forwarding services. (can save some CPU cycles and device memory from doing so)

Note that the above tips are only valid if your secondary AP is backed by a wired network. i.e. It is connected to the primary wireless router either via direct Ethernet cables (LAN to LAN port and do use a crossover cable if your ports do not have auto-MDIX feature) or via HomePlugs.

Another way of hooking up the access points is via Wireless Distribution System aka WDS. In this approach, the secondary AP acts as both a wireless repeater for the primary AP as well as an AP for wireless clients (i.e. your laptop).

WDS is cheaper to implement and less messy as it does not require a wired backbone. But do note that your network throughput will generally be halved, latency will increase slightly and the placement of the secondary AP is restricted to locations in range of the primary AP. And lastly, to use this approach, you will most likely need to use a wireless device capable of flashing to third party firmwares like Tomato, DD-WRT or OpenWRT.

Saturday, March 21, 2009

Using all 5 ports of a WRT54G for LAN?

If you are not using a WRT54G as a gateway (i.e. solely as a LAN switch and/or WAP and/or WDS), you can convert the WAN port on the router to a LAN port and have five wired devices connecting to your LAN via the wired ports on the WRT54G instead of four!

To work this magic, you will first need to flash the WRT54G to a third party firmware (e.g. tomato) that allows you to telnet into the box.

Once you have done that, telnet into the box and issue the following commands:
  • nvram set vlan0ports="0 1 2 3 4 5*"
  • nvram set vlan1ports="5"
  • nvram commit
  • reboot
Now you can use your WAN port to uplink to your core switch or gateway and keep the four LAN ports free for your other devices!

Friday, March 20, 2009

Finally found a cheap solution to extending my wireless coverage on level 3!

Recently, I discovered just how cheap it is to finally fixed the lack of wireless coverage at the top floor of my home... at just S$30! The solution? A second hand WRT54G v2.2 wireless router running Tomato configured as a secondary AP.

Originally, I had wanted to run it in WDS mode but realized that I have a problem with placement (its out of reach from my primary AP signal) and didn't like the fact that throughput will be halved.

Luckily, I have a HomePlug network in place hence I just replaced the LAN switch in my study with the WRT54G now doubling as the LAN switch plus secondary AP hooked into the home network via the HomePlug. (Configuration details of my WRT54G can be found here.)

There are plenty of used WRT54G wireless routers for sale on local forum marketplaces like HWZ and VR-Zone and S$30 appears to be the going rate. Do note that if you wish to run a third party firmware (like Tomato) on the WRT54G, be sure that you are getting the hardware revisions 1 to 4 only. Anything higher is not supported.

Wednesday, March 18, 2009

New printer in the house!

I finally decided to retire my four years old HP PSC 2310 AIO printer after it's black ink tank suddenly went belly up on me; the printer just refuse to acknowledge the cartridge even though it has been there and working just a few days ago.

This happened in late December 2008 and since then I had been hunting around for its successor. It took me a while to find a worthy replacement as I had some pretty demanding requirements:
  1. Print
    1. It must be capable of printing photos at par with the photo labs.
    2. It must be capable of printing text and graphics for general business use.
    3. It must support auto duplex printing (no manual flipping of pages!).
    4. It must support individual ink tanks (at least four).
    5. It must have at least two input trays with one tray holding at least 100 sheets of A4 paper.
    6. It must print at reasonably fast speeds and quietness.
    7. It should print from media cards directly and cameras via PictBridge.
    8. It should support network printing.
  2. Scan
    1. It must be capable of scanning at 9600 dpi (optical).
    2. It must be capable of scanning via an auto document feeder (ADF).
    3. It must be capable of scanning via an ADF in duplex mode.
    4. It must scan at reasonably fast speeds and quietness.
    5. It should support scanning directly to media cards
    6. It should support scanning directly to shared volumes over the network. (no PC!)
    7. It should support scanning directly to email via a SMTP gateway. (no PC!)
  3. Copy
    1. It must be capable of copying via an ADF.
    2. It must support 2-sided-to-2-sided copying as well as other combinations.
    3. It must copy at reasonably fast speeds and quietness.
  4. Fax
    1. It must be capable of sending mono and color faxes.
    2. It must be capable of sending fax standalone and via a PC.
    3. It must be capable of receiving fax in memory.
    4. It should be able to receive fax and store them to shared volumes over the network.
    5. It should be able to receive fax and forward them to an email address via a SMTP gateway.

4-in-1 Multi-Function Printers or All-in-One printers are pretty common nowadays. They even come in the price range of just over S$100! Unfortunately, these printers are usually either short in the quality, efficiency and/or features departments. Even the top end ones costing almost S$1k are still pretty lacking in the networking area. i.e. They still require a PC for some of its features like storing directly to shared volumes or sending to email. And what's the point of having networking capability if you still need a darn PC next to it?!

Some claim that these are really enterprise features and I should be looking at AIO printers in the enterprise class instead of the SOHO class. But I beg to differ as having a NAS or even just a shared file server and wanting scan/fax over email are no longer entitlements of the MNCs or even the SMEs; NAS boxes can be had for under half a grand (including 1Tb storage!) and for SMTP gateways, you can simply rely on the ones that came with your email providers.

Anyways, after months of searching, I have finally given up hope of finding one that fits all the above and instead, just settle for the one that come the closest. And there are not one but three choices; Cannon MX850, MX868 and MX7600 (sorted from cheapest to most expensive).

All three models are very similar in terms of quality and features. The differences are just that the MX868 has built-in WiFi and comes in a more compact form-factor while the MX7600 gives laser like quality via the "Pigment Reaction (PgR) technology".


I eventually settled for the MX850 at S$499 during the recent IT SHOW 2009 since WiFi, form-factor and "Laser like" quality ain't enough for me to shell out additional S$100 and S$300 respectively.

And speaking of the IT SHOW 2009, the package that Canon had put together is a real joke; a useless bag, a mandatory trolley since its cash and carry, and... here's the kicker... product training. Wow... since when did product training become a freebie?! At least HP gave away additional warranty and Epson was giving out additional ink cartridges!

I did not feel good at all buying the printer at the fair but at least it has not disappointed me yet in terms of its print quality and speed. Getting it hooked up to my WiFi router and printing/scanning wirelessly is also quite a joy although pretty much an overkill since my laptop has to be almost right next to the printer. DUH!

Sunday, February 22, 2009

HTC reveals successors to the Diamond and Pro!

Woot! HTC has unveiled the successors to the Touch Diamond and Touch Pro! Despite the crappy names (they are simply called Touch Diamond2 and Touch Pro2), the devices themselves do pack some worthy upgrades and they look gorgeous to boot! The screenshot on top is the Touch Pro2 while that on the bottom is the Touch Diamond2.

For one, both get larger screens and slimmer dimensions. Battery life is also supposedly improved; up to 50% more juice for the Diamond which will be a much welcomed relieve! Other upgrades for the Diamond include double the RAM and ROM, expandable memory instead of a fixed internal storage and a 5 megapixel camera!

In terms of availability, both models are expected to hit our shores in Q2 2009 which is really soon! Time to start looking for a new owner for my Touch Diamond!

Oh, and it will run on the Windows Mobile 6.1 instead of the recently announced Windows Mobile 6.5 as Microsoft has put its (version 6.5) GA date to be in the second half of 2009. Darn!

Thursday, February 19, 2009

Switching audio output device on HTPC via Harmony remote

In my HTPC setup, I have two audio output devices connected; The first is my plasma TV via HDMI and the second is my home theater sound system via optical S/PDIF connection. Now normally, I will pipe the audio from the PC via my TV speakers for TV and general purpose use (such as Skype conferencing, watching youTube videos, some games etc). On the occasions where I'm listening to my music collection or watching movies, I will want to switch over to my 6.1 home theater sound system.

Unfortunately, there is no OOTB feature provided in Windows, VMC or the IR receiver software (SoundTech iMon) to allow me to switch the audio outputs via the remote. Hence I will have to use the mouse to enter the dreaded Windows interface, call up the audio devices control panel applet and change it manually. Typically, a five minutes process not including the need to walk up to my HTPC since I don't have a wireless mouse handy. Bummer!

Fortunately, you can maintain your couch potato laziness (and maximise your investment in the expensive Harmony remote!) by using a combination of AutoHotKey (a Windows scripting engine) and custom commands in iMon.

Here's how it works:
  1. An AutoHotKey script will be running on the PC at all times waiting for certain keyboard shortcut to be triggered. In my case, CTRL+F5 to trigger HDMI output and CTRL+F6 to trigger S/PDIF.
  2. Map two unused remote keys via the iMon custom command feature to CTRL+F5 and CTRL+F6 respectively. In my case, star (*) key to trigger CTRL+F5 and sharp (#) key to trigger CTRL+F6.
  3. In summary, when you hit the (*) or (#) keys on the Harmony (or MCE for that matter) remote, the iMon software will capture it and send the respective CTRL+F5 or CTRL+F6 keyboard shortcut in Windows. The AutoHotKey script will pick it up and execute the main sequence to open the audio device control panel applet, select the right audio output device and close (my script actually does more than that like sanity checks and reopening VMC if it is open at the time the script is called).

And here's how to get it working on your setup:
  1. Download and install AutoHotKey.
  2. Download and extract the two necessary addon scripts (COM standard library and Vista Audio Control Functions) to the \Lib folder (create if its not already present) of AutoHotKey's program folder. These two addon scripts are needed to enable AutoHotKey to talk to the Vista audio device APIs.
  3. Now create a text file with name "Audio device switch helper.ahk" and copy the following text into it:
    ; CTRL+F5 = Change audio device to Digital Output
    ^F5::
    ; check if HDMI output is already set
    COM_Init()
    device := VA_GetDevice()
    device_name := VA_GetDeviceName(device)
    COM_Release(device)
    COM_Term()

    vmcOpen := "nothing"

    if InStr(device_name, "Digital")
    {
    ;already set, so lets pop a message and return
    if WinActive("ahk_class eHome Render Window")
    {
    vmcOpen := "VMC Open"
    WinMinimize
    }
    SplashTextOn, 250, , Digital audio output already selected
    Sleep, 1500
    SplashTextOff
    ; TrayTip, ,Digital audio output already selected, 10,1
    if InStr(vmcOpen, "VMC Open")
    {
    WinMaximize, ahk_class eHome Render Window
    }
    return
    }

    if WinActive("ahk_class eHome Render Window")
    {
    vmcOpen := "VMC Open"
    ; Close application with Alt-F4
    WinClose
    ;Send !{F4}
    }

    Run, mmsys.cpl
    WinWait,Sound
    ControlSend,SysListView321,{Down 2}
    Sleep, 200
    ControlClick,&Set Default
    ControlClick,OK

    if InStr(vmcOpen, "VMC Open")
    {
    Run, C:\Windows\ehome\ehshell.exe, , max
    }
    return

    ; CTRL+F6 = Change audio device to HDMI Output
    ^F6::
    ; check if HDMI output is already set
    COM_Init()
    device := VA_GetDevice()
    device_name := VA_GetDeviceName(device)
    COM_Release(device)
    COM_Term()

    vmcOpen := "nothing"

    if InStr(device_name, "HDMI")
    {
    ;already set, so lets pop a message and return
    if WinActive("ahk_class eHome Render Window")
    {
    vmcOpen := "VMC Open"
    WinMinimize
    }
    SplashTextOn, 250, , HDMI audio output already selected
    Sleep, 1500
    SplashTextOff
    ; TrayTip, ,HDMI audio output already selected, 10,1
    if InStr(vmcOpen, "VMC Open")
    {
    WinMaximize, ahk_class eHome Render Window
    }
    return
    }


    ; check if VMC is open, if yes, close it
    if WinActive("ahk_class eHome Render Window")
    {
    vmcOpen := "VMC Open"
    ; Close application with Alt-F4
    WinClose
    ;Send !{F4}
    }

    Run, mmsys.cpl
    WinWait,Sound
    ControlSend,SysListView321,{Down 3}
    Sleep, 400
    ControlClick,&Set Default
    ;Sleep, 1000
    ControlClick,OK

    ;if vmc was open previously, we open it again
    if InStr(vmcOpen, "VMC Open")
    {
    Run, C:\Windows\ehome\ehshell.exe, , max
    }
    return
  4. Notice that in the above code, there are two lines with text in red. You will need to change them according to the order your devices are listed in the audio device control panel applet! So for example, in my case, my HDMI audio device is the first item in the list while the S/PDIF audio device is listed fourth. So to switch between them, the script will need to move up three items to select HDMI (assuming the current selection is at S/PDIF) and move down three items to select S/PDIF (assuming that the current selection is at HDMI).
  5. Save the script and test it (double click on the file to launch).
  6. Once you have it working, open up iMon manager and select "Custom Command" on the left.
  7. Click on the "Add" button, give the new function a name (e.g. "Select HDMI Audio"), configure the shortcut CTRL+F5, followed by selecting the remote key STAR.
  8. Click on the "Add" button again, give the new function a name (e.g. "Select S/PDIF Audio"), configure the shortcut CTRL+F6, followed by selecting the remote key SHARP.
  9. Now select "Program Command" followed by selecting "XPMediaCenter" as the program and finally, remove the (*) and (#) keys from the mapping. You need to do this to allow the custom command to work when VMC is the active application.
  10. Click on "OK"
  11. At this point, you should be able to start using the (*) and (#) keys on the remote to switch between the two audio outputs.
  12. To enable this feature to survive a reboot, add a shortcut to this script in the "Startup" folder of all users.
For those with a Harmony remote, you can add these keys into the startup sequence of your activities so that you don't even need to manually click the (*) or (#) buttons! e.g. in my case, when I start the "Watch Movie" or the "Listen to Music" activities, at the end of the startup sequence, a (#) key will be sent to ensure that the S/PDIF audio output is selected.

Ahhh.... a true couch potato's blessing indeed!

Wednesday, February 11, 2009

My Mobiler - remote control your windows mobile device from desktop

I know of a number of utilities that allow you to remote control your desktop from your Windows Mobile device, including the native Remote Desktop application bundled with the Windows Mobile OS.

However, there are very few tools that allow you to do the reverse; i.e. control your Windows Mobile from your Windows desktop. Why would you need such a software? Well, for one thing, if you use a Windows Mobile software that does not have a desktop counterpart and you need to do alot of data entry (and your device does not have a keyboard), then I bet you will appreciate the usefulness of this type of utility.

An excellent choice for this is My Mobiler. It is small (just 500kb!), easy to install (just download the zip package and unpack to a directory of your choice, fire it up and click connect from the tray menu; no installation on BOTH the desktop and your mobile device!), stable and best of all, its a freeware!

Sunday, February 8, 2009

RSS Hub doesn't auto-update or download podcasts when set to update when ActiveSync is connected

If you are having problems with RSS Hub not updating your news feeds automatically when your device is connected to the PC, it could be due to the following issue: [Info extracted from NewsBreak FAQ (NewsBreak is the engine behind RSS Hub)]

Windows Mobile 5.0 has a new connection method which may prevent NewsBreak from detecting that ActiveSync or Windows Mobile Device Center is connected. To fix this, you need to do the following:
  • On your device, go to Start -> Settings -> Connections and look for the "USB to PC" item. If you have it, un-check "Use Advanced Networking."

OR

  • If you don't have a "USB to PC" item, you may have a "USB Switch" program in your Start -> Programs list. This does the same thing. You want to switch the connection to "USB Serial" instead of "RNDIS".


Not quite sure what "Advanced Networking" does but so far I have not noticed any adverse impact so I'm keeping it that way since its more important that I get my feeds for my hour long journey to work!

Tuesday, February 3, 2009

More Anti-Virus problems! This time its McAfee!

OK, a couple of days ago, I was contemplating shelling out for McAfee as replacement for my household anti-virus standard after my bad experience with Avast!. Good thing I am using it in Office and have the opportunity to discover just how crappy McAfee is when it comes to memory consumption.
The screenshot above shows just how much memory the Mcshield service consumes... a whopping 660MB! And this is when it is idle (note the CPU consumption was only three percent!). This, coupled with a whole lot of Vista bloat, effectively caused my reasonably powerful laptop (Intel Core2 Duo T5600 with 2GB RAM) to slow to a crawl due to all the frequent swapping to virtual memory.

For what its worth, the Mcshield service does not consume that ridiculous amount of memory all the time. What I have observed so far is that it happens after I resume from hibernation or from a long period of inactivity in screen-saver mode. This really hurts productivity and user experience since those are the crucial times when I do want to use my computer immediately and not wait another fifteen minutes (sometimes even half an hour!) for all that virtual memory swapping activity to die down.

Suffice to say, McAfee is now off my list of potential replacement anti-virus products!

Sunday, January 18, 2009

Is browsing photos over your network S L O W? The culprit could be your anti-virus software!

For the longest time now, I have been tolerating some major pain-in-the-ass slowness when it comes to previewing files (especially photos and videos) directly on my NAS. I have conveniently put the blame on my WiFi connection as it can get pretty flaky in my noisy (I can detect up to five APs with signal strength of at least 50% in my vicinity!) multi-storey environment.

The last straw came recently when I wanted to do some major re-organization of my family media stored on the NAS. It was unbearably slow as each thumbnail in Explorer's "Large Icons" view was taking at least two seconds to show up. After some ten minutes, I gave up on my task and decided that its about time I find the root cause of this slowness.

Since I have been blaming the WiFi connection all along, I figured I should at least try to verify this. So I hooked up my laptop to the network via wired LAN (100basedT) and tried to browse the folder again. It certainly is faster but I'm still getting quite abit of lag; about half a second before each thumbnail shows up.

So it is not the WiFi connectivity. Next I switched my focus to the NAS. Could it be that the DNS-323 has poor network throughput? I tried a large file transfer from the NAS to my laptop over the wired connection. I managed to get a sustained transfer rate of 10.5 MB/sec (as reported by file transfer dialog in Windows Vista) which is decent for 100basedT network.

So it is not the network throughput. Could it be the SAMBA server implementation in the DNS-323? I did some research online and found this and this. Nothing conclusive there but seeing that my current version was only v3.0.24 and a new firmware for the DNS-323 is available, it led me to try upgrading firmware to v1.06 and upgrading Samba to v3.2.3. Unfortunately, I was still getting the same behaviour after both upgrades.

So it is not the SAMBA server. Could it be on the client side then? I started trying it using the various PCs I could find in the house; my wife's laptop (running Vista Business x86), my kids' laptop (running XP) as well as my HTPC (running Vista Ultimate x64). All exhibits the same behaviour. Just when I was about to give up, I gave it one last try on my Office laptop (running Vista Business x86). Lo and behold, the thumbnails showed up instantaneously!

Now we are making progress! I dig a little deeper into the difference in configurations and finally found the root cause of the problem.... and it was Avast! Anti Virus! I had it as a household standard while my Office laptop was using my Office standard issue which is McAfee. Once I turned off Avast!, the problem goes away.

Obviously, turning off anti virus protection is not a good idea. Therefore, one option is to switch to a different one such as McAfee since it has proven to work in my scenario. However, I'm not quite ready to junk my time and effort invested in Avast! just because of this nor do I want to shell out more money for McAfee.

I did a little more investigation and here's what I think is happening. Avast! by default will scan any file before opening it, not just executable ones. So when I am browsing the photos on my NAS in "Large Icons" view in Explorer, Explorer will need to open each file in order to generate the thumbnail and this means that Avast! will intercept and scan it (over the network and each file is about 3MB mind you) thus causing the delay.

Poking around the settings available in Avast!, I found out that I can setup an exclusion list. And by adding in the extensions for my images (i.e. *.jpg, *.gif, *.bmp), I effectively solve the problem. Here are the steps to finding the exclusion list in Avast!:
  1. Open the Resident Protection dialog by double clicking on the Avast! system tray icon;
  2. On the left, select the icon for "Standard Shield", then click the "Customise" button on the right;
  3. In the popup dialog, select "Advanced" tab and click on the "Add" button;
  4. Here, you type in the file extensions or paths for exclusion. Use of wildcards is possible.
Although I may have solved this particular problem, I am still puzzled as to why Avast! needs to scan all files and not just infectable files. Sure, by giving us the option to exclude file types/extensions in the configuration helps but this should not be an end-user's job since how many of us knows all the file types/extensions are infectable? Moreover, end-users are less likely to be tracking developments in new exploits hence may end up with out-dated exclusion lists and leave a gaping hole in their anti-virus protection.

Well, perhaps it is time to explore other anti-virus solutions out there in the market...

Thursday, January 15, 2009

Upgrading Transmission to 1.42

Since I'm in the mood to upgrade, I figured I might as well do so for Transmission. More specifically, I want to upgrade so that I can get more fine grain control over the files to download in a torrent; You can do this via the CLI or a third party GUI client like this only. i.e. You cannot access this feature using the web interface (yet). Other things that have changed moving from v1.2 to the current v1.42 include the following:

Notably, the working directory is now /mnt/HD_a2/.transmission-daemon instead of just /mnt/HD_a2/.transmission. (since v1.3) If you are upgrading, you will need to move your existing directory manually if you want to resume your existing downloads. You may also need to amend your custom addon scripts (if any) such as my enhanced transmission script.

Another change (also since v1.3) is that Clutch no longer depends on a separate web server as one is already built in. This sucks as you now have another web server running on the box listening on its own port (default is 9091). Having said that, it does make installation and maintenance easier.

Lastly, access to Transmission is now restricted to local host by default (doesn't matter if you are using the CLI or web interface) (this change was introduced in v1.42). To allow access from other hosts, you will need to edit the rpc-whitelist parameter in the settings.json configuration file.

For an (almost) idiot-proof guide on setting up Trasmission v1.42 on the DNS-323, check out this guide by andy. More info can also be found in this forum thread.

Wednesday, January 14, 2009

Upgrading DNS-323 firmware to 1.06

I knew about the existence of the new firmware when I bumped up the capacity of the NAS a couple of weeks ago. However, I resisted the upgrade as none of the changes/fixes mentioned in the release notes (see below) interests me.

Just today, while troubleshooting slowness in browsing files on my NAS from my Vista laptop, I came across the news release for Samba 3.2 which states better integration and support Vista (and Server 2008!). Hoping that the new firmware will have incorporated this version (or later), I decided to give it a shot and upgraded the firmware tonight.

Like my previous upgrade, the process is straight forward and quick; just download the file, unpacked it into a temporary folder, and upload it to the DNS-323 using the web admin console.

After a mandatory reboot, my NAS is happily running v1.06. Unfortunately, Dlink has chosen not to touch the Linux kernel nor the Samba server hence they remain as version 2.6.12.6 and 3.0.24 respectively. Looks like if I want to give the new 3.2.x a spin, I'm going to have to go the route of replacing the stock Samba server with fonz's package!


DNS-323 Firmware 1.06 Release Notes
===========================================================

Feature Additions:
1. Supports 1.5 TB Hard Drives
2. USB port supports UPS monitoring
3. Add option to Manually or Automatically Rebuild Raid
4. UPnP AV supports Microsoft XBoX 360, Sony PlayStation 3
5. Support FTP over SSL/TLS
6. Add Unicode support to FTP Server
7. Email Alerts supports Gmail

Function Changes:
1. Turn off Fan at low system temperature
2. Disable UPnP AV Server and iTunes Server by default.
3. Remove static DNS from the DDNS server provider list
4. Remove the DDNS Timeout setting from GUI, and change the Status design. fixed timeout timer as 576 hours
5. Remove the Auto Refresh Timer option for UPnP AV and iTunes Server, instantly Auto Refresh by default.
6. More user friendly Time Settings GUI design

Bug fixes:
1. Fix BT downloaded files sometimes are unable to be deleted
2. UPnP AV support large file (over 4GB)
3. Fix 1st HDD unable to sleep
4. Fix HDD cannot hibernate if UPnP AV or iTunes Server is enabled
5. Time stamp of files are incorrect when DST is enabled

Thursday, January 8, 2009

Transmission Remote GUI - feature rich desktop client for Transmission!

Out of the box, Transmission offers you two ways of accessing its features and functions; via the command-line interface (aka CLI) which is clumsy or via the web client (formally known as Clutch) which is basic. Now, there is a third and better way of accessing Transmission.... introducing Transmission Remote GUI!

This is a cross platform (Linux and Windows for now. Mac OS X on the way) desktop client with a look and feel similar to uTorrent. It offers a lot more control and status information on your torrents than the web client, not to mention fast too.

If you are a power user, this client is definitely for you! Note that to use it, you will need Transmission v1.40 and up. *Sigh*, looks like an upgrade is in order for me!

Tuesday, January 6, 2009

Top ten things to do on a hour long train ride

Starting this week, I will no longer be driving to work as I figured that the car is better served as transport for my two school-going kids. So instead, I now commute via public transport (MRT and Bus) which takes a whole hour (and slightly more) for just one way!

As such, I suddenly find myself having quite a fair bit of time to kill... Two hours a day, ten hours a week, forty hours a month! *Gasp!* That's equivalent to one entire work week! It will be a real waste if I can't find anything productive or interesting to do. So here, I have come up with the top ten things I can do during the journey that is free or cost little (yeah I'm cheap) and don't require me to carry additional barang barang (yeah I'm lazy too!).
  1. Listening to my MP3 collection using the stock HTC Touchflo 3D music player on my Touch Diamond;
  2. Reading ebooks using Adobe Reader on my Touch Diamond; (still hunting for a better one, may try Mobipocket ebook Reader; winner of Smartphone & Pocket PC Magazine's "Best Software Awards 2008" in the ebook reader category. Currently also trying this interesting approach to book reading - via RSS)
  3. Catching up on news/blogs/discussions using RSS Hub (based on NewsBreak) on my Touch Diamond;
  4. Training my left brain by playing SPB Brain Evolution (review) on my Touch Diamond; (may give Brain School a spin after this)
  5. Reviewing my daily calendar and todo list using Pocket Informant (review) on my Touch Diamond;
  6. Training my hand eye coordination by playing Teeter on my Touch Diamond;
  7. Learning a new foreign language using MobiLearn Talking Phrasebooks on my Touch Diamond;
  8. Watching interesting YouTube videos using youtubeplay (remember to download the video first or it can get pretty expensive using 3G data connection!); [edit: you can now easily grab the videos automatically via RSS and RSSHandler! More info here.]
  9. Texting friends to catch up using the stock SMS application on my Touch Diamond;
  10. Taking pictures/videos of inconsiderate/weird/interesting people on the train using the camera on my Touch Diamond (remember to turn off the camera snapping sound first!) and sending them to STOMP!
Why no "catching a nap" in the list? Well, I would love to except for one thing, do you know how crowded the rush hour traffic is? I will be grateful if I can find some standing space without bags, umbrellas or newspapers poking into me; let alone finding a seat to catch some Zzz!

Another observation: ten out of the ten activities involve using my Touch Diamond! I never thought I will say this but... I love my Diamond!