A personal obituary: Rob Cameron

By Pattrick Smellie
Feb. 23 (BusinessDesk) - The last time I heard from Rob Cameron was out of the blue, just before Christmas.
I was hard up against a deadline, but Rob's familiar bark commanded a good half hour, after which I was left in no doubt that he thought Xero's decision to de-list from the New Zealand stock exchange in favour of the ASX was absolutely the right thing to do and that parochial nay-sayers should get back in their box.
A passionate believer in the potential of New Zealanders to make a difference on the world stag...
Subscribe to BusinessDesk
Stay informed on business, government and financial developments across New Zealand.
- Deeply researched, twice-edited and fact-checked news
- Annual subscribers also receive a complimentary subscription to The Wall Street Journal
- Personalised email news alerts, plus gift up to 5 stories a month to non-subscribers
You can cancel anytime with two clicks, an email or a phone call.
Find out more.
We are serious about journalism.
Already a Subscriber ? Sign in here.
{{ registerForm.errors.get('form') }}
We had trouble validating your card. It's possible your card provider is preventing us from charging the card. Please contact your card provider or customer support.
{{ cardForm.errors.get('card') }}
{{ registerForm.errors.get('plan') }}
{{ __(plans[index].name) | capitalize }}
{{ plans[index].attributes.old_price | currency }}
{{ plans[index].price | currency }}
All subscriptions auto renew but are easy to cancel.
Tax: {{ taxAmount(selectedPlan) | currency }}
Total Price Including Tax: {{ priceWithTax(selectedPlan) | currency }} {{ selectedPlan.type == 'user' && spark.chargesUsersPerSeat ? '/ '+ spark.seatName : '' }} {{ selectedPlan.type == 'user' && spark.chargesUsersPerTeam ? '/ '+ __('teams.team') : '' }} / {{ __(selectedPlan.interval) | capitalize }}
Total Price Including Tax: {{ priceWithTax(selectedPlan) | currency }} {{ selectedPlan.type == 'user' && spark.chargesUsersPerSeat ? '/ '+ spark.seatName : '' }} {{ selectedPlan.type == 'user' && spark.chargesUsersPerTeam ? '/ '+ __('teams.team') : '' }} / {{ __(selectedPlan.interval) | capitalize }}
{{ registerForm.errors.get('email') }}
Not convinced yet?
Subscribe to our free 7am Headlines newsletter.
A quick summary of everything BusinessDesk has published in the previous 24 hours. No BusinessDesk
subscription needed.