I get to visit the Open University campus in Milton Keynes with alarming regularity and getting there is always a bit of a trauma; I need to take three trains and then a shuttle bus. After doing this journey for about two years, I’ve managed to get the timing down to a fine art, but sometimes things don’t go as smoothly as you hope: I sometimes miss the shuttle bus and I have to catch a taxi.
I can’t help the feeling that catching a taxi, on your own, is an extraordinary extravagance. About a year ago, when my train was delayed, I got chatting to a fellow train traveller who was sat opposite me in the same carriage. I noticed that he was rifling through some papers that contained the unmistakeable university logo.
‘Are you heading to Walton Hall?’ I asked. It turned out that he was, and my fellow traveller, like me, was planning to catch a taxi to the campus.
‘Fancy sharing a cab?’ I asked.
I turned out that my fellow traveller, who I had never met before, had pretty much the same job as I had: he had the job title of staff tutor, but was based in Wales and worked in the Health and Social Care faculty. He had travelled up to Milton Keynes after spending a night out with friends in London. If I hadn’t nosily spotted his university papers, we would have incurred double the amount of expenses, and missed out on an opportunity for a nice chat.
Hundreds of people work at The Open University campus in Milton Keynes. There are so many people travelling between the university and the train station that the university puts on a shuttle bus at peak hours - but what happens if you travel outside of peak hours? The answer is you either catch a cab (which is costly), or you try to catch a local bus which takes ages and is pretty infrequent.
I don’t mind sharing taxi rides with colleagues. The problem is that because there are so many of them that I don’t know who they are! Even if I did know who they were, they might be in another carriage and have hailed and taxi and left the station forecourt before I had a chance to catch up with them.
One solution might be to loiter around the taxi rank and bellow: ‘is there anyone here who is going to THE OPEN UNIVERSITY? Does anyone WANT TO SHARE A CAB?!’ and see what happens. The problem is that since I’m exceptionally English and doing things like this instils in me a morbid fear of being arrested.
When I was travelling to the campus one morning, an idle thought went through my mind. I thought: ‘wouldn’t it be good if I could just take out my mobile phone, start an app, and push a button that says “I’m on the train from London to Milton Keynes – and I would be happy to share a lift to the campus if anyone is up for it…”’
This imaginary app would then tell me whether there was anyone else who was on the same train as me, or offer me an alert if anyone on the train would like to share a ride to my destination. Another variation of this would be to try to find strangers to share journeys with, who might be going to roughly the same part of the city that you were travelling to. To keep it simple, I thought, ‘no, that would just increase the complexity – let’s just think about this in terms of a single organisation’.
I imagined my app would be able to display the first name of fellow travellers, the faculty or department that they were in (which would be really useful in terms of facilitating a conversation), and also have a picture – so you know what a fellow traveller may look like when you get to the taxi rank.
There would be two obvious wins and one positive side effect. The two wins were economic (it saves the university money), and environmental (less fuel is burnt to get to the campus). The side effect is that you might be able to have some great chats, which might help you to keep up to date with what’s going on across the university.
So, how might we make this idea a reality? Well, we need to figure out how to write an app. Secondly, we need to figure out how to save data (so we can make a record of who is travelling on which train). Thirdly, we need to get some data somehow (so we can get information about different trains). Finally, we need to do a bit of ‘data crunching’ somewhere so we can be alerted as to whether there are other people on our train that we could share a lift with.
Creating an app
When it comes to native apps, you might want to create an app for either an Android phone, or an iPhone. If you’re thinking of developing an app for an iPhone, you might use xCode, which is a toolset from Apple (where there is a fancy new programming language called Swift).
If you’re thinking of developing for an Android phone, you might consider using Android Studio, NetBeans (NBAndroid) or MIT AppInventor (I’m sure there are other tools out there!) The problem, of course, is that some OU staff use Android phones, and some use iPhones. To attempt to take the pain away from the nightmare of different platforms, there’s something called PhoneGap (but I don’t know too much about that… it’s all new to me!)
Assuming that we build an app, then how do we store (and share) data? This is where the cloud comes in. The problem is that I don’t want to spend any money setting up services. Plus, it’s been an absolute age since I’ve done any of that stuff. Another solution is to make use of services from existing businesses that have already done all the hard work for you.
There are a quite a few different providers. One of the biggest is Amazon. Amazon offers a service that allows you to ‘plug into’ their existing computing and network infrastructure, allowing you to create and use your own virtual machines, which then can store data (since these virtual machines can host databases, like MySQL). Rather than having to pay, host, and power a whole server (which, arguably, is likely to remain idle for quite a lot of time), you can instead pay for how much processor time, network capacity and data storage you consume. It’s as if a server has become a utility. Rather than having to worry about backups and whether you need to buy more processing power, this can all be looked after by a third party: you pay for what you use, allowing you to concentrate on the task of writing code and solving your problem.
Of course, you might not want to use Amazon. If not, there are loads of other cloud data and service providers you might use. Two of them who come to mind are that of Rackspace and Microsoft. The interesting thing about Microsoft (and providers who are similar to them), is that you can choose where your virtual servers live. If most of your customers are located in North America, it probably makes sense (in terms of network performance) to have your virtual servers served from that part of the world. If more of your users are located in Europe (such as users who are travelling to and from Milton Keynes), you’re likely to want to host your virtual machines in data centres in Europe.
Another thought is: perhaps you don’t want to store your data in machines that are managed by Amazon or Microsoft. If so, another approach could be to set up your own private cloud (providing you have your own infrastructure to do this, of course). You might want to do this if your organisation has already invested quite a lot of capital into IT resources, or government or institutional policy dictates that you wish to make sure that your data is only within the remit of a particular jurisdiction. Everything in life is always a compromise. You might want to use your own private cloud as opposed to using a public cloud, but a private cloud is likely to cost in terms of hardware, power and administrative overheads.
If I were seriously writing this app, what would I do? I would ask the IT people in The Open University to see if they have got a cloud system that I could use. Whilst I wait for them to get back to me (which can sometimes take quite some time) I also might try to experiment and create a prototype using a public cloud provider, since some of them can give you ‘trial accounts’.
Let’s say I’m going to a module meeting in Milton Keynes and I’m sat on the 8.46 train from London Euston. There are two things I need to do: I need to say ‘I’m on this train’, which means storing a record so other people (meaning: other Open University colleagues) can see that I would be up for sharing a taxi, and also recording which train I was on. The problem is: I don’t want to go through the trouble of entering ‘8.46 from Euston, London Midland’, since I’m lazy and I don’t have too much patience. Plus, we need to iron out any ambiguity.
One way to solve this problem is see what trains are currently running (because, what happens if my train is delayed?) Thankfully, Network Rail provides loads of data feeds (Network Rail), which we could use to choose the right train (and, I’m wondering whether we might be able to use the magic of GPS positioning too!)
As a brief aside, being a London resident, I’m a great fan of an app called CityMapper (CityMapper website). It gives you loads of information about different bus routes, trains, underground stations, and hooks up to Google Maps so you can see where you’re going. An interesting question is: how does it work? One answer lies with the availability of different data feeds, such as the data feeds that Transport for London provides (TfL data feed summary page).
Why do TfL provide all this data? The answer is: that TfL are in the business of providing transport, they’re not in the business of creating new apps for new-fangled computing devices: that’s not their core business. Once feeds are made available, they can be used in new and creative ways.
Back to our ‘taxi ride sharing’ scenario: let’s say we’ve got a group of four people on the train that are prepared to share a ride to the campus, then what happens? Who is going to make the call to the taxi company? One thought is that the colleague who instigated a ‘taxi share request’ could do that job. Or, alternatively, the taxi app might do it for us (if our chosen taxi company has some kind of mechanism to accept taxi bookings from recognised apps).
When we start to think about all this, we come up against questions of user identity and what it means in terms of a mobile device. Some of my mobile apps make use of my Google+ account, whereas others make use of Facebook. This can make things a whole lot easier, but it does worry me a little, mostly because I don’t know the extent to which my data is being used (we’re again back to the question of compromise: convenience traded off for ease of use). One thing that we might want to do is to create our own ‘identity’ management system.
Another issue is that we’re beginning to step into is the currently fashionable area of smart cities (Wikipedia); the possibility that journeys through urban environments can be aided and abetted by the use and sharing of data. (Not to mention costs and communications).
Just as I was finishing this blog, the following email popped into my inbox: ‘would anyone like to share a taxi from MK station tomorrow? I have a choice of trains, the first one arriving MK at 10:02, if that fits with anyone else’s plans?’
I remember this other time when I was travelling to the University of West of England from Paddington to Bristol Parkway train station. When I got to Bristol Parkway, I had to catch a taxi from the station to the campus. When I arrived on campus and started to walk where I needed to go, I recognised someone. That someone was the gentleman who was sitting on the next row along from me. Again, if only we had known, or had talked, or hadn’t been so English about our early morning journey, we could have shared a taxi together.
A final question is: given all the things that I’ve found out, am I going to go ahead and create this app? Sadly, I’ve got a whole load of other deadlines to attend to, which means that I can’t afford to invest the time – but I would really like to, and I hope that someone does go ahead and creates it! I, for one, would really like to give it a try.
In the meantime, what I have decided to do is to make more of an effort to chat to the people who catch the same shuttle bus as I do. This way, if the train ever gets delayed, I might have more of a clue about who I could share a taxi with.