Useful Links: September 2009

A list of items I’ve come across recently that I found potentially useful, interesting, or just plain funny:

Some say he has silicon innards and eats data for breakfast…

USB StigFans of the BBC’s Top Gear programme may be interested in a novelty “USB memory Stig” that goes on sale today… I can’t take credit for the pun or the title of this post (both were ripped off from a comment on the product page at but if you know anyone that fancies a racing driver 8GB USB flash drive then this might be worth a look.

(And yes, I know that Top Gear is no longer really a motoring programme and more about a bunch of middle-aged guys messing around in cars and generally failing to grow up… but that’s exactly the point! It seems to me that Messrs. Clarkson, May and Hammond have, quite possibly, the best jobs in the world.)

Shooting tethered on my Nikon D700… using PowerShell

About this time last week, James O’Neill was explaining to me how Windows Image Acquisition (WIA) could be used to control my camera over a USB connection. I’m not sure if he told me, or if I suddenly realised, but somewhere along the way came the realisation that I could use this to take a picture – i.e. to drive the camera remotely – and James very kindly shared some Windows PowerShell commands with me.

Today, James published the results of his work, saving me a lot of research into WIA and a related subject – Picture Transfer Protocol (PTP) but, unlike James’ Pentax K7, it seems that my Nikon D700 will allow me to use this to actually take a picture (I haven’t tried on my Canon Ixus 70… with or without the CHDK).

James’ code showed me how to call WIA as a COM object:

$WIAdialog = New-Object -ComObject "WIA.CommonDialog"
$device = $WIAdialog.ShowSelectDevice()

Following this I had an object called $device that I could manipulate as I liked and $device | get-member returned the following methods and properties:

   TypeName: System.__ComObject#{3714eac4-f413-426b-b1e8-def2be99ea55}

Name           MemberType Definition
—-           ———- ———-
ExecuteCommand Method     IItem ExecuteCommand (string)
GetItem        Method     IItem GetItem (string)
Commands       Property   IDeviceCommands Commands () {get}
DeviceID       Property   string DeviceID () {get}
Events         Property   IDeviceEvents Events () {get}
Items          Property   IItems Items () {get}
Properties     Property   IProperties Properties () {get}
Type           Property   WiaDeviceType Type () {get}
WiaItem        Property   IUnknown WiaItem () {get}

$device.Properties was kind of interesting but with $device.Commands I was really getting somewhere:

CommandID                               Name          Description
———                               —-          ———–
{9B26B7B2-ACAD-11D2-A093-00C04F72DC3C}  Synchronize   Synchronize
{AF933CAC-ACAD-11D2-A093-00C04F72DC3C}  Take Picture  Take Picture

Seeing that there was a command to take a picture got me thinking and looking back at the device methods I could see ExecuteCommand so I tried calling it:


I was amazed to find that my camera did exactly what it was told and fired the shutter! I need to do some more testing, to see if I can control the focus, or return a live preview, etc. but controlling a remote device, over a USB connection, using nothing more than a few basic scripting commands made me feel like a real techie again (even if it was James’ code that got me started!). Who knows, I may even teach myself to code again (as I’ve threatened several times over the last few years) and write an application to remotely control my camera.

Ironically, at the start of last week I was trying to figure out how to take time-lapse photos of the extension that I’m having built on my house right now but it wasn’t software that held me back, it was practical issues like leaving a camera outside for days on end in all weathers and providing power to it. Now, if only I had a 25 metre USB cable (!), I could hook up a cheap webcam and set a script to take a picture every hour or so…

Further reading

WIA Camera Devices on MSDN.
WIA Camera support in Windows Vista (part 1 and part 2).
WIA 2.0 and digital camera interaction.

How much is your personal information worth?

We’ve all heard the horror stories about personal information, such as credit card details, falling into the wrong hands and, thankfully, in many cases the banking system limits the damage but it’s a growing problem.

Now Symantec have issued the results of some research which shows that this information may be sold on the black market for as little as a few pence as cyber criminals use generous retail promotions like bulk buying and “try before you buy” to sell consumer information and credit card details to other criminals. According to the Internet Security Threat Report 2009 e-mail addresses and accounts are traded among criminals from as little as five pence to as much as £60, with a full identity going for around £45. I don’t know about you but I find those figures to be alarmingly low – until I read on and discover that, according to Symantec, more than 10 million stolen identities are traded each year on the black market.

The online black market is booming compared to real-world criminal activity. It is more profitable, harder to prosecute and provides anonymity. Whereas on the streets of London Metropolitan Police figures indicate that a crime is committed every 37 seconds, an identity is stolen online every three seconds.

So how does this happen? Well, much of the information is harvested using malware on our PCs with many victims unaware that their computer is a “zombie” acting as part of the botnets that are the main source of online fraud, spam and other scams on the Internet today. In addition, we are putting increasing volumes of personal information onto the web through social networking. Meanwhile, action against criminals is hampered by the fact that national laws typically lag behind technological advances and the fact that the Internet is a global network and so requires co-operation from multiple law enforcement agencies.

So, what can we do about it? Well, much of the information in this blog post comes from Symantec/Norton and it’s no surprise that they would like us to buy the latest version of their security suite but, even if you use another reputable company’s security products, it’s worth checking out the advice on their Every Click Matters site including a victim assessment tool that helps you assess your risk (and black market worth) and 10 simple steps we can all take to stay safe. Maybe you, as a reader of this blog, know what to do – put it may be worth highlighting the advice to less-technical friends and family.

Technology actually saved me some time this morning!

I’ll be spending the next couple of days at Fujitsu Laboratories’ European Technology Forum listening to presentations on some of the new and upcoming technological advances that could well be making their way into our daily lives (disclosure: I work for Fujitsu but that has no bearing on the contents of this blog post). I had considered driving to London (and leaving the car at my hotel) but, in the end, I decided to take the train. As the state of our railways is something that us Brits spend a lot of time complaining about (since long before privatisation), it’s nice to have something positive to write about my journey this morning.

A few years ago, catching the train meant a weekly trip to the bank to obtain sufficient coinage to feed the parking machines at the station (even when credit card payment was introduced, not all of the machines could accept cards), getting up stupidly early to make the 12 mile trip from the small town where I live to my nearest station, parking the car (if there were any spaces left) and joining a queue to buy a ticket. All of this meant that, in order to ensure I was able to catch a particular train, I needed to allow 45 minutes to an hour.

This time, I used the online booking system to buy my tickets in advance (although, because it was only a few hours in advance, there was no option to have a ticket mailed to me but I did have the collection reference sent over by SMS). Then, when I got to the station, I found a parking space and, instead of feeding money or a credit card into the machine, I used the pay by phone service to enter my location code, confirm my car registration, the length of my stay and my credit card details. I then collected my tickets from a machine and, around 30 minutes after leaving my house, was on the platform waiting for the 07:28 to arrive. Meanwhile, the parking system had e-mailed me a receipt ready for my expenses claim.

None of this is exactly rocket science, but it’s a step in the right direction and a huge timesaver. Looking to the future, there is no reason why the parking payment system couldn’t identify my location using GPS (as more and more mobile phone handsets become GPS enabled) and why I couldn’t print my own rail tickets from home (albeit without the magnetic stripe to operate the barriers at the station – although these could use an alternative access control technology).

Now, the fact that I had to pay £13 for parking my car on top of my £40 travel (when there was no public transport alternative to get to and from the station)… that’s an entirely separate issue about which I’m less happy…

Match your Java installation to your browser…

I run 64-bit Windows 7 at work so, when installing the Sun Java Runtime Environment (JRE) in order to access some of my corporate applications, naturally I installed a 64-bit version of the JRE.

Application 1 ran OK, but application 2 (which is a usability nightmare at the best of times) refused to load.  Then, Dave Saxon was trying to access the same application (also from 64-bit Windows 7) and he realised what I had totally missed: I may be running 64-bit Windows but the default instance of Internet Explorer is 32-bit.  Sure enough, I ran a 64-bit version of Internet Explorer, accessed the application and it worked.

I haven’t tested if a 32-bit JRE installation would work with a 32-bit instance of Internet Explorer on 64-bit Windows but the key lesson here is to run up the appropriate browser architecture for the installed JRE version.

A few things for digital photographers to consider before upgrading a Mac to Snow Leopard

If you use a Mac, the chances are that you’ve heard about a new release of the Mac operating system – OS X 10.6 “Snow Leopard”.  I haven’t bought a copy yet, largely because I can’t really see any “must-have” features (increased security and improved performance is not enough – even at a low price), but mainly because I use my Macs for digital media work – primarily my digital photography workflow on the MacBook – and upgrading to a new operating system brings with it the risk that applications will fail to work (I already have problems with NikonScan on MacOS X 10.5 and 10.6 is likely to introduce some more issues).

If you are, like me, primarily using your Mac for digital photography then there are a few things, that it might be useful to know before upgrading to Snow Leopard:

I’m sure that I will move to Snow Leopard in time; however these notes may well be useful if you’re a photographer first and foremost and the whole idea about using a Mac was simplicity.  Don’t be fooled by the glossy cover – Snow Leopard may bite you – and, like all operating system upgrades, it needs to be handled with care.

Live Meeting audio control codes

“Webcasts”, “WebExes”, “Webinars” and “Live Meetings” are all horrible names for meetings conducted across the ‘net.  Admittedly these services cut down on travel (good for the environment and for the soul) and are better than voice conferences (yawn) but, sometimes, a face to face meeting is much more valuable.  Regardless of my personal views on these events, they seem to feature heavily in modern office life (I’ll be attending a few this week…) and I thought it might be useful to publish a few command codes for the phone conference service that is one of three methods for Live Meeting users to connect to the audio stream:

  • Chairperson codes:
    • #1 Participant roll call
    • #2 Participant count 
    • *2 Stop audio playback
    • *5 Mute/unmute participant lines
    • *7 Lock/unlock conference
    • *8 Record start/stop
    • ## End conference
  • Chairperson and participant codes 
    • *0 Operator assistance
    • #0 Conference help menu
    • *6 Mute/unmute own line 

These codes are from my BT MeetMe account; however I’m pretty sure that they are valid for the audio portion of any service based on Microsoft Office Live Meeting (the mute code certainly seems to work when I’m on Microsoft-hosted Live Meetings).

Moving to Linux from Solaris?

Oracle’s acquisition of Sun Microsystems has probably caused a few concerns for Sun customers and, today, Oracle message to Sun customersOracle reaffirmed their commitment to Sun’s Solaris operating system and SPARC-based hardware with a statement from Oracle CEO, Larry Ellison, that tells customers they plan to invest in the Solaris and SPARC platforms, including tighter integration with Oracle software.

Nevertheless, as one of my colleagues pointed out to me today, it costs billions to create new microprocessors and more and more customers are starting to consider running Unix workloads on industry standard x64 servers. With significant differences between the x64 and SPARC versions of Solaris, it’s not surprising that, faced with an uncertain future for Sun, organisations may consider Linux as an alternative and, a few weeks back, I attended a webcast given by Red Hat and HP that looked at some of the issues.

I’m no Linux or Unix expert but I made a few notes during that webcast, and thought they might be useful to others so I’m sharing them here:

  • Reasons to migrate to Linux (from Unix):
    • Tactical business drivers: reduce support costs (on end of life server hardware); increase capability with upgraded enterprise applications; improve performance and reduce cost by porting custom applications.
    • Strategic business drivers: simplify and consolidate; accelerate service development; reduce infrastructure costs.
  • HP has some tools to assist with the transition, including:
    • Solaris to Linux software transition kit (STK)– which , although aimed at migrating to HP-UX, this joint presentation between HP and Red Hat suggested using it to plan and estimate the effort in migrating to Linux with C and C++ source code, shell scripts and makefiles for tools that can scan applications for transition impacts.
    • Solaris to Linux porting kit (SLPK)which includes compiler tools, libraries, header files and source scanners to recompile Solaris applications for either Red Hat or SUSE Linux running on HP ProLiant servers.
  • The top 5 issues likely to affect a transition are:
    1. Complier issues – differing development environments.
    2. ANSI C/C++ compliance – depending on the conformance to standards of the source code and compiler, there may be interface changes, namespace changes, library differences, and warnings may become errors.
    3. Endianness – SPARC uses a big-endian system, Linux is little-endian.  This is most likely to affect data exchange/communications between platforms with access to shared memory and to binary data structures in files.
    4. Differences in commands, system calls and tools – whether they are user level commands (e.g. a Solaris ping will return a message that a host is alive whereas a Linux ping will continue until interrupted), systems management commands, system API calls, software management (for package management) or operating system layered products (e.g. performance management, high availability or systems management).
    5. ISV product migration with issues around the availability of Linux versions of software; upgrades; and data migration.
  • When planning a migration, the strategic activities are:
    • Solaris vs. Linux ecosystem analysis.
    • Functional application analysis.
    • Organisational readiness and risk analysis.
    • Strategic migration roadmap creation.
    • Migration implementation.
  • Because of the differences between operating systems, it may be that some built-in functions need to be replaced by infrastructure applications (or vice versa). Indeed, there are four main scenarios to consider:
    • Solaris built-in function to Linux built-in function (and although many functions may map directly others, e.g. virtualisation approaches, may differ).
    • Solaris infrastructure application to Linux built-in function.
    • Solaris infrastructure application to Linux infrastructure application.
    • Solaris built-in function to Linux infrastructure application.
  • Finally, when it comes to deployment there are also a number of scenarios to consider:
    • Consolidation: Many Sun servers (e.g. Enterprise 420R) to fewer industry standard servers (e.g. HP ProLiant).
    • Aggregation: Sun Fire V890/V490 servers to Itanium-based servers (e.g. HP Integrity).
    • Dispersion: Sun Fire E25K server(s) to several industry standard servers (e.g. HP ProLiant).
    • Cloud migration: Sun servers to Linux-based cloud offerings, such as those offered by Amazon, RackSpace, etc.

Many of these notes would be equally applicable when migrating between Unix variants – and at least there are tools available to assist. But, now I come to think of it, I guess the same approach can be applied to migrating from Unix/Linux to Windows Server… oh, look out, is that flaming torches and pitchforks I see being brandished in my direction?

Exporting images from Lightroom to Flickr

Flickr logoAs I’m uploading a set of photos to Flickr to share with family and friends, it prompted me to finish a blog post I’ve been meaning to write for some months now – on the topic of exporting images from Lightroom to Flickr.

Since my friend Jeremy Hicks showed me Adobe Lightroom back in the spring, I’ve become hooked on the ease at which I can import, tag and post-process my images (with only a few minor annoyances around the way that images are handled when I take them into Photoshop for any advanced editing – thankfully most never need to go that far). But Lightroom is only half of the story – what about those images that I need to put on the web to share with others?

I use Flickr for this and I would like to export images directly from Lightroom to Flickr. Thanks to Lightroom’s extensible architecture, Jeffrey Friedl has written an Export to Flickr plugin (found via Adobe) and it does a good job but there is another way too. Thomas Bouve describes how, by creating an alias/shortcut the Flickr Uploadr application to the appropriate folder (Export Actions), you can select to open Flickr Uploadr as the post-processing editor, allowing the images to be uploaded immediately after export.