All posts by jasechong

ANCA WA Choral Festival Concert Photos

ANCA is the Australian National Choral Association – an organisation which aims to encourage and promote choral music and choirs in Australia.   The WA chapter has just been reformed and they had Choral Festival Day to mark this occasion.

No, this was not a “concert” – it was a festival where for a few hours, everyone first did a warm-up, then different choirs sang for each other and it all finished with a big “sing” – where everyone learnt a song together.

It was a fantastic session – the age range of participants ranged from Primary School to people in their 70’s-80’s!  So many choirs and people were interested attending that there weren’t enough seats in the venue!

I was there to take some snaps to document the day.  The hardest part was choosing the right time to click the shutter button as many of the items were quiet – so I had to time my shots with louder parts of songs, or right at the end just before or with the applause.  Maybe I need to investigate a mirror less camera body one day or some noise dampening for the Nikon D700 🙂

Here are some shots from the day!


PCCC Fundraising Concert Photos

A few months ago, I was asked to take some photos for a church fundraising concert.  It was great to see such a huge audience turnout for the concert, which unfortunately pushed me right to the backs and sides only.  However, there were many different acts so I was able to move around between items and get different angles.

The best part of the event was the last item where various ensembles all combined together!  It was wonderful to see the adult choir, childrens choir and orchestra all together.  Was it professional musical standard?  Of course not, these were all amateurs doing something for a good cause.  But what struck me was the gusto – the passion that they all had – well done to all!

Here are a few of my favourite shots from the day!

Applescript to bulk transcode video files using Handbrake

Real life has taken over my life recently so my blog is feeling a little neglected.

However, thought I’d share something I’ve been working on for the last week.

After buying a bigger hard drive, I’ve finally got all my M2TS files from my Sony HDR-SR7 video camera consolidated together in one spot.  But so far, I’ve been using iMovie to capture and organise all my other home video footage from Video8 and miniDV tapes.

I know I can get the AVCHD (M2TS and MTS) files into iMovie by converting them with Voltaic first into a QuickTime MOV file (encoded using the Apple Intermediate Codec), or by opening up the MTS files as a camera archive.

However, one thing that the family have been bugging me for so far is to get them into a format that’s easy for the rest of the family to view.  iMovie is not exactly a media player.  Nor is using Finder with Voltaic easy for the family.

My plan was to transcode all the raw footage into something that can be viewed either on the PS3 or iPad.

Luckily Handbrake is able to transcode M2TS files into any other format.  But I had a few hundred files to process, and even though Handbrake has a queue for processing, it doesn’t have the ability to submit a bulk set of files to transcode at once.

So I ventured into AppleScript land!   I’m a professional programmer and familiar with DOS batch files, VBScript and javascript – but all really on a Windows platform.   What is this AppleScript thing?

After some mucking around, I’ve written an AppleScript which can be run, or be saved as a droplet and files or folders drag and dropped to it, which will convert the files to MP4 using Handbrake.

To help everyone else, here it is!

To use, just:

  1. Copy and paste the code below
  2. Open up Applications -> Utilities -> AppleScript Editor
  3. Paste into a new document
  4. Then either
    1. Click Run to run the script immediately    OR
    2. Save somewhere (e.g. the Desktop) with type of Application, then drag and drop the folders you want to transcode onto the icon

Sorry about the formatting – once you paste into AppleScript Editor it should look all nice again 🙂

** This droplet will convert any file/folder dropped onto it or selected to the Apple Universal format using Handbrake.
** It currently will reuse the same filename for all files except MTS files, with which it will rename using the file’s creation timestamp.
** by Jason Chong
** Revision Description
** 1.0 Initial version

property type_list : {} — e.g.: {“PICT”, “JPEG”, “TIFF”, “GIFf”}
property extension_list : {“m2ts”, “mts”, “mov”, “avi”, “mpg”, “mkv”, “dv”} — e.g.: {“txt”, “text”, “jpg”, “jpeg”}, NOT: {“.txt”, “.text”, “.jpg”, “.jpeg”}
property typeIDs_list : {} — e.g.: {“public.jpeg”, “public.tiff”, “public.png”}

** This function is called if the script is run by executing the script directly.
on run
set these_items to choose folder with prompt “Select a folder to convert:” with multiple selections allowed
set dest_folder to choose folder with prompt “Select a destination folder:”
repeat with one_item in these_items
process_item(one_item, dest_folder)
end repeat
end run

** This function is called if the script is run by dropping files/folders onto the item
on open these_items
set dest_folder to choose folder with prompt “Select a destination folder:”
repeat with one_item in these_items
process_item(one_item, dest_folder)
end repeat
end open

** This function does the high level processing of the items chosen
on process_item(the_item, dest_folder)
set the item_info to info for the_item
if folder of the item_info is true then
— If a folder then call this function recursively for each item within
set these_items to list folder the_item without invisibles
repeat with i from 1 to the count of these_items
set this_item to alias ((the_item as Unicode text) & (item i of these_items))
process_item(this_item, dest_folder)
end repeat
— If not a folder then check the extension, file type, etc
set this_extension to the name extension of item_info
on error
set this_extension to “”
end try
set this_filetype to the file type of item_info
on error
set this_filetype to “”
end try
set this_typeID to the type identifier of item_info
on error
set this_typeID to “”
end try
— Only process if meets all criteria
if (package folder of the item_info is false) and (alias of the item_info is false) and ((this_filetype is in the type_list) or (this_extension is in the extension_list) or (this_typeID is in typeIDs_list)) then
convert_video(the_item, dest_folder)
end if
end if
end process_item

** This procedure does the actual conversion of video files using Handbrake
on convert_video(this_item, dest_folder)
log “Processing file: ” & this_item as string
with timeout of (720 * 60) seconds
tell application “Finder”
if (label index of this_item is 0) then

— Set to gray label to indicate processing
set label index of this_item to 7

— Set original file name
set origFilepath to this_item as string
set origFilepathPOSIX to quoted form of POSIX path of origFilepath

if name extension of this_item is “MTS” then
— If MTS then make destination filename equal to YYYYMMDDHHMMSS.MP4
set origFileCreationDate to creation date of this_item
set newFilepathPOSIX to POSIX path of dest_folder
set newFilepathPOSIX to (newFilepathPOSIX & (getDateAsString of me from (origFileCreationDate))) & “.mp4”
set newFilepathPOSIX to quoted form of newFilepathPOSIX

— For all other files, keep destination filename the same (assume it’s already in YYYYMMDDHHMMSS format)
set nameWithExtension to name of this_item
set nameWithoutExtension to getBaseName of me from (nameWithExtension)
set newFilepathPOSIX to POSIX path of dest_folder
set newFilepathPOSIX to newFilepathPOSIX & nameWithoutExtension & “.mp4”
set newFilepathPOSIX to quoted form of newFilepathPOSIX

end if

— Start the conversion
— Refer to and
— for HandBrakeCLI presets
set shellCommand to “nice /Applications/HandBrakeCLI -i ” & origFilepathPOSIX & ” -o ” & newFilepathPOSIX & ” –preset=\”Universal\””

— display dialog shellCommand — uncomment for troubleshooting
log “Executing command: ” & shellCommand
tell current application
do shell script shellCommand — comment out for debugging
end tell

— Set the label to green in case file deletion fails
set label index of this_item to 6
log “Successfully converted item: ” & this_item as string

— Remove the old file
— set shellCommand to “rm -f ” & origFilepath
— do shell script shellCommand

log “Skipping already processed item: ” & this_item as string
end if

on error errmsg
— Set the label to red to indicate failure
set label index of this_item to 2
log “Failed to convert item: ” & this_item as string

end try
end tell
end timeout
end convert_video

to getDateAsString from t
set creationDateString to year of t as string
set creationDateString to creationDateString & text -2 thru -1 of (“0” & getMonthNum(t) as string)
set creationDateString to creationDateString & text -2 thru -1 of (“0” & day of t as string)
set creationDateString to creationDateString & text -2 thru -1 of (“0” & hours of t as string)
set creationDateString to creationDateString & text -2 thru -1 of (“0” & minutes of t as string)
set creationDateString to creationDateString & text -2 thru -1 of (“0” & seconds of t as string)
return creationDateString
end getDateAsString

on getMonthNum(theDate)
— French Vanilla, by Emmanuel Lévy
— set theDate to the current date –or any other date
copy theDate to b
set the month of b to January
set monthNum to (1 + (theDate – b + 1314864) div 2629728)
return monthNum
end getMonthNum

to getBaseName from t
— by Kai Edwards
set d to AppleScript’s text item delimiters
set AppleScript’s text item delimiters to “.” — separated at periods
if (count t’s text items) > 1 then set t to t’s text 1 thru text item -2
set t to t’s text items — splits t into a list again at the periods
tell t to set t to beginning & ({“”} & rest) — puts it back together to
set AppleScript’s text item delimiters to d — always set them back again!
return t
end getBaseName

Too Wicked?

Oh My Gosh..

Is it possible to get too much Wicked?

The entertaining musical Wicked is currently playing in Perth, after seasons in Melbourne and other Australian cities.  Our whole family just could not resist going.  After all, we were hooked after seeing it on Broadway and then later in Melbourne.  Unfortunately, we just missed out on seeing it in Japan which I’m sure would’ve been a blast!

Last Saturday, we made our way through an extremely happening and crowded Burswood to join the packed Burswood Theatre to watch Wicked again.

It’s such a well done, well produced show – I still am taken aback by how smoothly everything runs, how fantastic the set and costumes are, how memorable the songs are that take you on a rollercoaster ride, the clever story and how the story weaves around The Wizard of Oz.  It’s awesome. 

But for some reason, I was not blown away this time. 

Maybe the initial euphora of the first time viewing the show and ensuing excitement has dissipated. 

Or maybe I’ve listened to the Official Broadway Cast recording so many times that anything different makes me think it’s not right.

Or maybe the tempos were just a tad fast on Saturday night, giving the feeling that they were rushing through parts of the first act.

Or maybe it was me being annoyed that Bert Newton got more applause as the Wiz than the other musical theater performers.

Or maybe it was the guy sitting next to me who didn’t clap after any song until the very end of the show, obviously having being dragged there by his partner.

In any case, if you HAVEN’T seen Wicked before, definitely go – it’s worth seeing at least once!  And by going, you’re “voting” with your feet and money that productions like this should continue coming to Perth.

And if it’s too expensive, you might want to try the Wicked lottery tickets each day, or keep a lookout for some cheap last minute discounted tickets that are going around now.

Only with the Nikon AF-D 50mm f/1.8

Wow, what a few weeks it’s been.

I’ve sold my Nikon D80, crop mid range zoom and wide angle zoom to fund an upgrade to a D700.

I absolutely LOVE the low light performance and robustness of the new camera body.


I’ve lost a lot lens and focal length range!

So, on a recent family getaway, all I had was my 50mm.  At first I thought it was going to be very restrictive and I would not be able to get the shots I wanted, but in the end I think it’s been a very liberating experience!

No more having to play with 2 variables of distance to subject as well as zoom for viewing angle.  No big heavy zoom to lug around.  And I found having no zoom has FORCED me to be more creative in my shooting and composition.  I was very happy with the results and don’t think I missed out on too many shots where I needed a different focal length.   It forced me to think more about the shot and pre-visualise it instead of just standing on the spot and twisting the zoom ring.   And now it’s really made me think twice about whether I should get the 24-70 f/2.8 at all.

The only complaint about the Nikon AF-D 50mm 1.8 is that the bokeh can sometimes produce circles with quite a hard circumference line in conditions with spots of light coming through (like light through the leaves of a tree).  Besides that, it’s extremely good value and every Nikon shooter should have a 50mm!

Here are a few of my favourites from our trip away…

Getting rid of the duplicate JPEGs of raw files

I don’t know why I chose this option, but a few years ago when I moved from JPEG to shooting RAW, I decided to choose the RAW+JPEG option on my Nikon camera.   I guess I thought it would be handy having a lower resolution JPEG just in case I wanted to email it off or view it straight away on some device or software program that didn’t support Nikon raw files.

Well, it turns out, I never have used the JPEG.   I always do some post processing on my photos and if I wanted to blog or email or upload a photo, I’d always process the raw file (NEF) and then convert it to JPEG.  Plus I think most photo library or processing programs support raw files nowadays.

Unfortunately the workflow I used was to import both the JPEG and NEF files from my camera to my photo storage folder – resulting in 2 files for every photo.   No real problem right?

Well, for applications like Lightroom that are intelligent – no real problem, Lightroom knows that cameras can do this and if you have the right option turned on, it will treat the JPEG and NEF together as one – practically “hiding” the JPEG.

But for iPhoto, it’s not so clever so I ended up with two of every image.  And since the JPEG is slightly processed by the camera, they look different (different temperature, etc).   (Why do I use iPhoto too?  Because it’s the easiest way for my wifey and kids to see ALL our family photos, select them into albums, email them, etc).

Also it bugged me that I had all these JPEGs lying around on my hard disk, taking up space, slowing down my Lightroom and iPhoto libraries.  On my camera, I now use just RAW with no JPEG option.

So I started a project last week to get rid of these JPEGs.  But how?

After some messing around, I found these steps to work:

1) In Lightroom, turn on the option to treat the JPEG and RAW as separate photos.   This effectively turns Lightroom into the dumb iPhoto and you’ll end up seeing two photos now – one for the JPEG and one for the RAW.

2) In Finder (I use a Mac), I actually manually deleted all the JPEG’s that were duplicates of the RAW file.   I know – TEDIOUS!  I could have written a script to see if filenames were the same, if the raw file (NEF for my Nikon camera) existed, then delete the JPG.  But I was so paranoid that a script may just delete some required files that I decided to do this by hand instead.  In reality, with proper sorting of files, it didn’t take too long.

3) Now – I’m in a state where I’ve pulled the rug out from under the feet of iPhoto and Lightroom.  It’s time to get their databases back in a valid state.

4) For Lightroom, just go to the Library module, then right click on a folder and choose “Synchronize Folder…”.  This will prompt Lightroom to look at the folder and match them up – import any photos that are on disk but not in Lightroom, and remove any photos from Lightroom that are not on the disk anymore.

5) For iPhoto, unfortunately there is no synchronize option.   However, I did find a post on a blog called Phil at Warrimoo who posted an Applescript that walks through photos in iPhoto and deletes them from the iPhoto library if they don’t exist on disk.  It does work, although a little slowly and I had to tweak it to work for iPhoto libraries where the photos aren’t copied into the iPhoto library.

Hope this helps someone out there!

Miss 10’s first pop concert!

Wow!  This weekend marks a special occasion for our Little Miss 10.  She’s going to her very first pop concert – Wifey is taking her to see Justin Bieber at the Burswood Dome!  

I’m trying to rack my brain to remember what was my first concert – I think it was either INXS or John Farnham at the Perth Entertainment Centre, many eons ago. 

The cool thing for Miss 10 is that we got her a special ticket that came with some goodies – a Justin Bieber fan pack, that arrived in the mail yesterday.  Let the Bieber-Fever begin…

I wonder if I should get wifey some ear plugs…  I heard that the crowd screams have been reaching 110db in the last few concerts in the rest of Australia (