A saga with Virgin Trains Mobile e-tickets


I've often considered myself an early adopter, but being of the nervous disposition I am in fact wary of things like e-tickets because no technology is perfect. Typically I like to have a paper backup of such things, just in case.

So, this also applied when I recently booked the whole family on return Virgin West Coast tickets from Scotland to London. I hesitantly ordered my tickets to be delivered to my mobile phone because I have been let down by the post before, and we have no self-service machine at our local station. (Sure, I can use the one at the main station on the day, which is 20 miles away, but I always feel it's a bit too late to find out something is wrong just before your train; I like to have these things in my hand in advance).

The thing is, Virgin seem to have changed their delivery of e-tickets and their app a few times lately. There was a time when you could download them into your iPhone wallet and display them on your lock-screen, which was ultra handy. And once they were on the phone, they were on the phone (or so it seemed anyway). I had very little issue with this system other than the risk of my phone conking out.


Now, however, tickets are accessed through the Virgin mobile app. The process seems similar: you "download" tickets, then on the day "activate" them. Well, our outward journey was fine, but it started to go wrong on the return journey.

We were sitting in Euston and about an hour before the journey I went into the app and made sure the tickets were "downloaded". All good. I then activated them, to make sure I had everything ready to present. Again, all good.

30 minutes before the journey I checked my phone again, checked the tickets were ok, and explained to my fellow-travellers that we'd have to show them at the platform entrance. All good.

Where did my tickets go?

About 20 minutes before the departure of the train we got the text notification to proceed to concourse. So, down we went.

I told you I was the nervous type, so I checked the tickets again. This time not good. I had been logged out of the app, and was presenting with a login screen. I tried to login with my regular details and it was rejected. Panic started to set in.

Now, I should also add that the week before when I booked the tickets, Virgin had taken it upon themselves to forcibly reject my existing password as not meeting their "new requirements" and so I had changed password. I started to wonder whether I was making a mistake or if it was them. Either way, whatever I tried, I was not getting in: I could not display my tickets.

I raced to the virgin ticket area to seek assistance - massive queues; one member of staff out front assisting and busy with two people ahead of me. Anyway, politely I waited while my blood pressure doubled, and eventually explained the predicament to him.

Now, I had taken what reasonable and available "backup" precautions I could, in the sense i had screen shots of my booking, the reference number etc. I asked would this be sufficient to at least get on the train and then try and sort the problem? He said no - the best he could offer was go over to the corner where there's a phone to virgin central command and see if they can do something like change your train!

A flash of inspiration

By now I was proper panicking, and was trying to do a password reset.

THEN, suddenly, I just had a light-bulb moment. Was this the internet? I realised my phone was showing a public WiFi connection but I'd not been asked to log in. I killed the WiFi, dropped back to 4G, and fired up the app again. I re-entered my login details and -boom- lo and behold I was back in my account.

However, my tickets were not in the app, despite previously having been "downloaded"! I "downloaded" them again, which thankfully worked, and was then able to activate them, before dragging my family at breakneck speed to the platform. We were back up and running.


This was a terrible experience on many counts: poor process design, poor user experience [failing a login attempt because of no internet connection but reporting just a login failure; loss of already "downloaded" tickets for example], poor customer service. It may have expanded my child’s vocabulary somewhat, but it didn’t do my cardiac system any good.

I had a quick look at the Virgin FAQ on e-tickets, and it says this:

Q: What happens if I run out of battery?

A: Ensure your mobile is charged, if you are unable to display your mobile ticket, you'll need to buy a new ticket at the full fare.

In other words: "no-show, no go.."

Obviously anyone reading that FAQ ought to realise that it would include any reason for failure to display the ticket; but what it doesn’t say is that mobile app appears to rely on an internet connection to display tickets. Had I known this at the outset this whole saga could have been avoided. Although, it does then beg the question, if the tickets are "downloaded" and "activated" why is an internet connection required at all after that point?

I suspect the answer is the tickets actually only live on the virgin server, and unless you can display that, you are stuffed.

back to good old paper

Suffice to say, I won't be using this system any time soon again in future unless I really have no option or Virgin introduce some kind of mitigation for device or connectivity failure. And if I do end up having to use the app again in future, at least I will take screenshots of all the tickets and bar-codes from inside the app in advance.

You have been warned.


Sending smartphone notifications from Ubiquiti EdgeRouter Lite

Following on from my success of getting my Edge Router Lite to successfully run multiple load-balancing schemes for dual-WAN, and more importantly, assign different devices to different load balancing schemes, the next natural evolution was to send iPhone alerts when any of the links went down.

In principle it is quite easy, because the ERL already makes provision to run an arbitrary script when a link transitions (from active to inactive and vice versa). So, it's really just a question of having the right script. 

If you Google, you'll find examples for sending email, but I wanted something more immediate (and less configuration effort - i.e. to not have to set up sendmail).  Based on another example I considered using the pushover.net service, but wondered if I could use IFTTT to do the same, as I am already a user. (Saves me signing up to something new). 

Turns out you can, by using their "webhooks" service; and turns out it's so simple, it's almost untrue. 

IFTTT Webhooks allows you to generate simple triggers from a single web request

IFTTT Webhooks allows you to generate simple triggers from a single web request

Step 1

First go to your IFTTT account and add the "webhooks" service. This will generate a unique key for you, which you need to make a note of. Annoyingly this is done in a font which does not distinguish between capital I and lowercase l, but you can regenerate the key, or paste into something where you can change the font. 


Step 2

Next, log in to your Edge Router and navigate to /config/scripts and create the following script (I called mine failover-notify) :

A script to generate IFTTT phone notifications. Obviously use your own key.

A script to generate IFTTT phone notifications. Obviously use your own key.

Don't forget to make the script executable with the command chmod +x failover-notify

Step 3

Return to IFTTT and create an applet which uses the webhooks service as a trigger and the notifications service as the action:

Note how I have called the event "bb_failover". It is crucial this matches the name in your script (it comes in the URL after /trigger/ ). It is this name that allows you to configure many different triggers on IFTTT to do different things. Obviously you could use a different name, providing it matches in both places. 

Value1 will be populated with the Load-Balance group name; Value2 will be the Port (eth0, eth1 etc.) and Value3 will be the status (either active or inactive). 

Also, you will need the IFTTT app installed on your iPhone, to generate the notifications at the device end. (The app doesn't have to be running though).

Step 4

Return to the edge router for the final bit of configuration.  You might want to test your script at this stage. If you type ./failover-notify A B C the script should run and give a success message, and shortly after you should get a notification on your phone. There's not much point proceeding until you can get this to work.

Once it does work, you can come out of the command line and go to the config tree. Here you choose the load-balance group you want the script to apply to.

Now, if you only have one group configured, you will apply it to that group. If, like me, you have more than one group, you might want to only apply it to one of the group to prevent duplicate alerts. This will depend on what your groups do and what alerts you want to get.  

In my case, for example, both my load-balance group balance across both my only WAN links, so in fact I only need to apply it to one load-balance group, as both WAN links will be covered, and it doesn't matter which group I choose. I wouldn't apply it to both groups, as then I'd get double notifications - i.e. one from each. 

Choose the Config-Tree tab and navigate to the load-balance group you want to monitor

Choose the Config-Tree tab and navigate to the load-balance group you want to monitor

After deciding which group(s) to receive notifications from, navigate to it, and put the full path to the script in the transition-script box, then click preview and save. 

And that's it. Test it by disconnecting one of your WAN links, and see what happens!

How to set up iMessage sharing across multiple devices (especially after 2 factor authentication)

I recently set up 2-factor authentication on my apple account to provide stronger protection of my account. 

Around about the same time I noticed that iMessages and calls were not being shared across my multiple apple devices as they had been. I went into settings -> icloud -> <your apple id> -> where there are settings for:

  • contact information
  • password & security
  • devices
  • payment

I made sure that in "devices" all my devices were showing up (they are listed automatically if signed in against your apple id) - which they were

In password and security I made sure that both my mobile phones were "trusted phone numbers"

I figured that should now do the trick.. 

It didn't

After googling a bit, turns out you also have to go into settings -> messages -> Send & Receive and in there make sure that all your devices and email addresses are listed. You can also define which number/email messages appear to come from when you compose them; which means each device can initiate from its own number, or if you like, they can all initiate from the same ID. 

After I'd done that it all worked :) 

by the way, you can also go into facetime settings and do the same.. 

Why Apple integrated iOS5 with Twitter, not Facebook

If you look around the blogs there's lots of speculation about complexity of integration, history of sour  negotiations over things like Ping.

I don't think it's anything like that - here's my really simple list of reasons:

Raison D'Etre

Facebook is essentially an "Application" - it collects content, stores it, aggregates it, distributes it. It allows users to have "space" on the web - a virtual home, so to speak, albeit connected with their circle of interests. 

This is nothing like what Apple/iOS needs. As a device and operating system, iPhone/iOS needs connectivity; it needs conduits for information - channels if you like. That's what email is, that's what SMS is, that's what instant messaging is.

That's also what twitter is - twitter is not an application as in the sense above; it is a transport hub, a conduit for realtime data to flow between relevant users. It might be described generically as "social media", but its modus operandi and purpose are entirely different to facebook. Twitter is a way for information, of almost any type, to flow between users. Facebook on the other hand is designed as a place to land to consume content.

That's not to say that Twitter doesn't intend to move up the "value chain" to become a place of higher value consumption - indeed, its acquisitions of the likes of tweetdeck and the long overdue enhancements to its online experience, such as the tie in with photobucket, clearly signal this intent. 

But quite simply, the DNA of twitter is more akin to the phone line as Facebook's is to the phone. 

Culture Clash

There is a complete cultural mismatch between Facebook and Apple. Apple lead the way on user experience and strive for total customer satisfaction. Apple's mantra is to put users first. Apple is slick and consistently good. (Yes, they've had their hiccups, but they deal with them sensibly.)

Little could seem to be further from the truth for facebook. Facebook acts first in its own interests, then retracts if the backlash is sufficient. Their mantra is clearly "It's easier to ask forgiveness than permission". Facebook is clumsy and self-centred. 

Shoddy user experience and scant regard for user privacy have been demonstrated by Facebook time and time again. These two brands do not make good bedfellows. 

And that's it - these two reasons alone, in my opinion, have killed for the forseeable future any likelihood of Apple and Facebook joining forces. Personally I see it as no great loss. 

Installing an iPhone TomTom power cable behind the dashboard

Here's some pictures of how I wired a TomTom iPhone mount behind the dash of a VW Passat.

Note, this didn't involve finding a new power source or wiring to the fuse box. Instead power was taken from the 12v lighter/accessory socket in the ashtray. The actual ashtray was removed (it is designed to be removable) so it can be put back at a later date.

The jack end of the tomtom power cable can be stowed in the ashtray cavity when not in use, with the lid closed - hiding it from view. 

To perform this job requires a couple of tools designed for the job. Ideally you need "dash tools" - these are strong plastic wedge shaped tools that allow you to pop the fascia off the front of the dash. The fascia in all modern cars is just clip on plastic. You also need a suitable star-shaped spanner set - as most car fittings use this form factor. This is used for removing bolted in items such as the ashtray container and air conditioning controls. A set for about £20 is a good investment if you intend working on your car a few times or on several cars. Finally, i also used a "magnamole" - a new invention (as shown on Dragon's Den") of bendy flexible sticks with a magnetic end - very handy for routing and picking up wires in small spaces you can't get your hand.

The tomtom itself is mounted on the dash using the standard suction mount onto a tomtom-supplied sticky disc, designed for the purpose. They cost about £5 for two. (I've also used one to mount a video camera in the rear of my car)

Pictures of the installation follow:


starting the job: dash fascia removed (tools shown on seat)


upper cable routed behind air vents

 This was a bit tricky getting the USB end through the small hole. Ideally I'd have gone through the gap at the side, but it was just too small.

cable routed behind A/C controls to drop down behind lighter socket

This was the bit that needed the Mangamole to pick up the USB cable from behind the lighter power socket. I removed the A/C controls and dropped the rod down behind to grab the metal end of the cable from inside the lower part of the dash.

 Hole drilled in ashtray cavity to route power cable

     Drilling the hole was unavoidable - the ashtray cavity is totally sealed and any attempts to come round/over the side/top prevent the flap from working. However, the actual ashtray has been removed (it's designed to for cleaning/emptying) so the hole is easily covered if the cable is removed and the ashtray replaced.  


finshed job - mounted on a tomtom dash suction plate

The final job is pretty neat and discreet. It avoids those tell-tale suction marks on the windscreen that thieves love and with or without the mount in place is easily covered with a small hat :-)  It is also much safer for driving as there is no risk of the trailing cable getting caught up in anything (gear lever, hand) and the iPhone is in much closer reach of the driver.

The power cable stows neatly in the ashtray when not in use and is plugged into the lighter socket when required.

The positioning of the iPhone tomtom also improves handsfree performance as both speaker and mic are closer to the driver.