I’ve had the x100 around for a couple of months now. I’ve been using it a lot, and it is my only camera equipment that spends very little time in my dry box. It is always at my side, either in my work bag or in a small camera bag during weekends. After so much time with it, and having past the initial euphoria of the purchase, I think I can write about it a bit more objectively.
After a contemplating a purchase for a while now (like from the Kindle 2 days), your’s truly decided to splurge on one. It’s gotten cheap enough, 650 ringgit (~$215) for a WiFi-only Kindle 3. After a few days of reading on the device, I really couldn’t imagine going back to either the iPad or the Nexus One to read ebooks.
Tags: books, kindleI wrote this because I find myself keep having to backup certain set of files, preserving its directory structure. It’s really simple, but simple scripts like this can save a lot of time but coming up with it usually takes too much time than I like so I’m documenting this one here.
BACKUP_DIR='/my/backup/dir'
files=( "/complete/path/to/file1" "/complete/path/to/file2" )
echo "=======BACKUP STARTED======"
for i in "${files[@]}"
do
:
source=$i
# dirname
dirname=`dirname "$file"`
# everything before last '/'
dirname=${file%/*}
target=$BACKUP_DIR$dirname
echo "Copying from $source to $target"
`mkdir -p $target`
`cp $source $target`
done
echo "======BACKUP COMPLETED======"
If for some reason you can’t run yum or don’t have access to the internet, download the following packages (I got mine here):
Required
- perl-Error-0.17010-1.el5.noarch.rpm
- git-1.7.4.1-1.el5.x86_64.rpm
- perl-Git-1.7.4.1-1.el5.x86_64.rpm
Optional
- git-daemon-1.7.4.1-1.el5.x86_64.rpm
- gitweb-1.7.4.1-1.el5.x86_64.rpm
- git-gui-1.7.4.1-1.el5.x86_64.rpm
- gitk-1.7.4.1-1.el5.x86_64.rpm
Run rpm -ivh as root on the required RPMs.
I’ve recently acquired a 32GB UDMA compact flash by Duracell. Yes, the same Duracell that produces batteries. I’ve learned that this CF card is actually a re-branded Dane-Elec compact flash. Dane Elec is a compact flash manufacturer from France. So how large is a 32GB CF? 1200 losslessly compressed 12MP RAW (NEF) file, that’s how big it is. Yes, 1200 12MP RAW files! I’ll probably need to swap at least THREE batteries on my D700 before filling up this card. That’s insane.
Below are some numbers I sourced from some other site. Couldn’t benchmark it on my Mac as I don’t have a UDMA-capable reader right now.
Test Data
CrystalDiskMark 3.0.1 x64(Test size = 100MB(x5)
Card reader model:LOAS CRW-37M51Duracell DU-CF6032G-C
Sequential Read : 81.184 MB/s
Sequential Write : 60.185 MB/s
Random Read 512KB : 66.832 MB/s
Random Write 512KB : 15.553 MB/s
Random Read 4KB (QD=1) : 3.370 MB/s
Random Write 4KB (QD=1) : 0.518 MB/sCase of Transcend TS32GCF400
Sequential Read : 66.146 MB/s
Sequential Write : 34.867 MB/s
Random Read 512KB : 57.585 MB/s
Random Write 512KB : 6.708 MB/s
Random Read 4KB (QD=1) : 4.628 MB/s
Random Write 4KB (QD=1) : 0.078 MB/s
So as you can see, it outperforms a 400x rated card, though it does not actually hit its rated capacity of 600x (90MB/s). Still, the card is very cheap when compared to the equivalent Sandisk, Kingston and Transcend cards. The numbers reflects my experience using the card. Compared to an old 8GB Kingston 133x card, it actually make my Nikon D700 more responsive as the camera is able to complete writes to the card faster.
Verdict
Pros: Fast, cheap, roomy compact flash card. Excellent as a backup card if you’re concerned about reliability. Personally, I don’t mind using this as my primary card with my older cards as backups.
Cons: Warranty may be a concern, as Duracell is not in the memory business.
The motivation for this? Often I have a Linux machine running somewhere, headless. Then out of the blue I need to transfer a large file over, so large that doing so via the network is too time consuming. A logical choice would be via a USB drive, right?
Most Linux distros does not mount the drive until you’ve accessed it (if you have a GUI running, that would mean clicking the drive to view its contents). If you’re on CLI however, you’ll often need to mount it manually. Here’s how to do it.
- plug in the drive
- ssh or telnet to the machine
- run ‘dmesg’ and look for relevant entries e.g
# dmesg usb-storage: device found at 8 usb-storage: waiting for device to settle before scanning Vendor: SanDisk Model: Cruzer Rev: 8.02 Type: Direct-Access ANSI SCSI revision: 00 SCSI device sdb: 31301631 512-byte hdwr sectors (16026 MB) sdb: Write Protect is off sdb: Mode Sense: 45 00 00 08 sdb: assuming drive cache: write through SCSI device sdb: 31301631 512-byte hdwr sectors (16026 MB) sdb: Write Protect is off sdb: Mode Sense: 45 00 00 08 sdb: assuming drive cache: write through sdb: sdb1
- create a handle to access your drive e.g. ‘/mnt/usbflash’
- mount the drive (replacing ‘/dev/sdb1′ with your device)
mount /dev/sdb1 /mnt/usbflash
And you’re done. Don’t forget to unmount once you’re done.
umount /dev/sdb1 /mnt/usbflash
A group of geeks got together to code for 24 hours last weekend for AppEngine. Venue (and drinks?) were graciously sponsored by F-Secure. We had access to their very nice office at Bangsar South and fat Internet pipe for the weekend. Shout-out to GTUGKL for organizing this and sponsoring a Nexus One. Last but not least, Google was awesome for sending a developer to assist us and for creating AppEngine in the first place.
It was an eye-opener for me as it really showed that we have good developers around in Malaysia. We just need to get out more :)
Our project – awanBot
We wanted to call our project CloudBot or Cbot but both names have been taken on Appspot. Don’t know why we care, but we do. So awanbot it is (awan, by the way is cloud in Malay). The goal was to be able to control a Lego Mindstorm remotely, via the cloud. So we hooked up an Android phone to the Mindstorm via bluetooth, setup a simple AppEngine app to queue the directional commands, and have another Android phone act as the remote controller. We also transmitted video from the Nexus S on the Mindstorm to the remote controller so that you can ‘see’ what it sees.
Here’s a demo after 24 hours:
We were voted the best project (I’m sure we won by a small margin, judging from how good the other projects were), and got a bag of goodies:
![]() |
| From AppEngine Hackathon |
It was a fun and exhausting experience. Shout-out to my fellow team members – Yap Wen Jiun, Kevin Tan and Hanzo.
Pictures of us & gadgets at the event:
![]() |
| AppEngine Hackathon |

Posted in



