5 Open Source Android libraries that you should be using

Not much of a preamble here, the title says what this is. If you’re new to Android development, or if you’re just still relying on Google APIs to do everything, these might make your life a bit easier.

The titles all link to the corresponding project pages where you can download/view the source, but if that seems like too much like hard work, just copy-paste the Gradle dependencies (below the name of each library), sync your project, and start playing.

But I use Eclipse, where are the Jars?

*slap* No! Bad developer.

As you appear to have been under a rock recently, you should know that Eclipse is no longer the official IDE for Android, which means you’re making life harder for yourself for no good reason. All of the nice new stuff has moved to a lovely IntelliJ-based IDE. It still can turn a MacBook’s 9hr battery life into a 3hr one, whilst doing a pretty good impression of a hotplate, but hey, that’s Java…

So download Android Studio, then read this, no need to thank me, then read on.


Picasso

compile 'com.squareup.picasso:picasso:2.5.2'

Network image loading made really, really easy.

You probably know this one already, as it’s the easiest solution to loading up an image from a network location, and is the de-facto response to the thousands of “how do I load an image from a url” questions on StackOverflow.

There are tons of tweakable methods and callbacks to use, but if you just want to load an image, it’s as simple as this:

Picasso.with(context)
    .load(url)
    .into(imageView);

Retrofit

compile 'com.squareup.retrofit:retrofit:1.9.0'

If you have an app that connects to a RESTful API (which you do obviously because this is 2015, I think my electric razor has a RESTful API) retrofit makes it easy to turn said server-side interface into a Java interface by using annotations, so that you never have the headache of manually handling every method and call interaction yourself.

These examples are quicker to grok than it would take me to explain it, so check them out.


NexusData

compile 'com.github.dkharrat.nexusdata:nexusdata:0.1.3'

iOS, whilst almost comically flawed and restrictive as an operating system, is a whole lot easier to develop a robust app for due to the well thought out restrictions that Apple place on their developers.

I’ve often seen terror on the faces of iOS developers who try to ‘dip in’ to Android, assuming the SDK-provided libraries to be as well thought out and clean as those they play with in XCode.

It can be summed up thusly:

iOS

It just works

Android

It just works

(for API > 14, except for JellyBeanMR1, or devices that don’t support this undocumented API which we will rename next release anyway, if you’re not using proguard, which is now minify, but has these libraries that are back-ported by the manufacturer, on screen densities that are sort of big, but not landscape, except if they’re fixed aspect, and running the support libraries. On Tuesdays, when it’s not raining.)

…usually. But not on Samsung devices, or older HTCs.

So I’ll freely admit, as an Android developer I am envious of the iOS toolset; GCD, CloudKit, Multipeer Connectivity and last but most: CoreData.

Why can’t we have nice things like that? Oh, we can! (the last one anyway)

Whilst there are a lot of options available that mean you never have to meddle directly with SQLite in your app, NexusData is my personal favourite due to its high-level nature and simplicity of use.

So stop messing around with data persistence code, and get on with making your app.


ButterKnife

compile 'com.jakewharton:butterknife:6.1.0'

If you develop Android apps, you will have typed findView(R.id.something) more often than is healthy.

Stop that.

Jake Wharton’s (if you’re new to Android, you’ll see this name a lot) ButterKnife does away with the need for that extra typing by providing a simple way to generate boilerplate code for the UIs that you define, all via the magic of annotation processing.

 


GSON

compile 'com.google.code.gson:gson:1.7.2'

I use this constantly, and so should you wherever you use JSON in your Android app. I’ve found no better method for turning POJOs into JSON, and back again.

It’s hard to believe, but I’ve seen some very recent examples of code where the developer is still manually writing methods that do this, and in once case a minor mistake that somehow got through to production untested, led to the users of the app being unable to log in at all…

Don’t be that person. Use GSON.

A “make something cool in <2hrs" experiment.

What’s this?

I’ve been working my arse off the past few weeks on various projects for clients, and feel the need to write. I’m not sure what I want to write about so I just opened up WordPress and decided to experiment. This post is that experiment.

This morning (a Sunday morning – internationally recognised as me time), I’m taking time away from that for a couple of hours to do what I used to do before “playing on the computer” turned into “making a living”. I’m going to write this as I go, so it’ll probably be terrible. But meh, that’s not a good enough reason not to do it.

Prep coding fuel (actually from a few weeks ago, but representative of liquid requirements):

Ahh, that’s the stuff. #firstcoffee

A photo posted by Matt Fenlon (@nolnefm) on

Oh..kay? So what are you actually doing then?

I’m going to make something with OS OpenSpace; Ordnance Survey’s Google Maps-alike API for using OS map imagery in a manner familiar to developers. You can read about it here.

It’s been on my list of rainy day play-around projects for ages, and whilst I keep getting emails about cool new stuff they’ve done with it, I never seem to have that spare time to actually try it out. This morning that changes. It sounds cool, I want to make something, so I am.

Getting Started

The first part of using any new API is getting something working. I normally do this by setting up an empty project in Android Studio, importing any required libraries and setting up the API keys, secrets tokens or whatever the API uses for authentication.

As I’ve signed up for an API key already, I went to the Manage My Sites page (which is for apps too, despite the “sites” title) on the OpenSpace site to see what my API key is, and to find out which package name I originally used when I signed up – I’ll need to use the same one for this mini-project. I called it com.mattfenlon.osmap, so that’ll be my package name.

Screen Shot 2015-01-25 at 10.35.33

Easy.

Integrating the SDK

Next bit is to integrate the Android SDK if they have one, which they do. Cool.

But bloody hell…not the most straightforward quick start guide I’ve ever seen! To save you skimming time if you want to just get the jar file, it’s here. Import it into Android Studio (or Eclipse if you’re a masochist and haven’t switched yet). Not covering that step here. GIYF.

Getting something to happen…

By this point I’ve got the jar file set up as needed in my AS project, and it’s syncing fine. I’ve loaded up a Genymotion emulator (because the Android SDK emulators suck…); a Nexus 6 configuration, running Lollipop. Because shiny. The app builds and loads the bog “Hello World” with no errors, we’re in business.

Incidentally I’m using Fragments not Activities, because they’re efficient, super-flexible and best practice. Anyone who tells you otherwise is either too lazy to learn the new way, or is recycling old projects from the days that they used to use Activities and cba to update their base projects. Sorry, it’s my opinion of course, but there’s no downside to using Fragments for even simple projects like this if you’re a half-decent developer. /rant

Setting up permissions

From the example app, it looks like it needs Internet, External Write and Access Network State. Also Open GL ES 2, presumably for some map rendering shenanigans.

Adding a MapFragment

This is done in XML. Nothing fancy, just a <fragment> of name:

android:name=”uk.co.ordnancesurvey.android.maps.MapFragment”

It has a label too, not sure if that’s needed yet.

Setting up the MapFragment in Java

Similar but not the same as a Google Maps setup. I’m using the demo app they provide in GitHub to get the map object instantiated. The only difference being that I’m doing this within a Fragment rather than an activity, so getFragmentManager() becomes getActivity.getFragmentManager() etc. No biggie.

Now I’ll try running it to see if it’s all good so far…

Screen Shot 2015-01-25 at 11.12.14

Cock… Right, to LogCat. What have I done wrong?

Screen Shot 2015-01-25 at 11.13.07

Right. I don’t think I’m jumping to conclusions to guess that it’s something to do with that OpenGL ES 2.0 reference from earlier…

How do I find out what went wrong then?…

Best bet is usually check out the documentation/comments within the library that you’re using. I just did and found this from here.

Screen Shot 2015-01-25 at 11.24.33

There’s talk of emulator issues with hardware acceleration. I’ll try on actual hardware to see if that’s the issue.

Screenshot_2015-01-25-11-22-58

Sure enough. Works fine on hardware! Rather than implement a workaround as suggested, I’ll just crack on with my physical Nexus 5. Life’s too short, and this is just a hobby session.

Adding a marker

This looks very familiar, very Google Maps like, which is what I’m sure they were going for in order to reduce boundaries for adoption to existing developers – don’t make us work too hard, always a good idea.

Screen Shot 2015-01-25 at 11.29.20

Rather than read docs or do trial-and-error to see what the format is of such a grid point. I’ll just punt it out from a touch input in that OnMapClick listener method, straight into LogCat.

Screen Shot 2015-01-25 at 11.34.26

Then I’ll run the app on my phone and tap it a couple of times to see what I’ve got.

Screen Shot 2015-01-25 at 11.34.06

Interesting. So it’s a six-figure reference with no decimal accuracy as far as I can see. Every tap yields a .0 on the end. Reckon that’s just an OS grid reference stored as a Double? I’ll have a look here.

Screen Shot 2015-01-25 at 11.37.04

Confirmed! Progress then. It should be trivial then to add markers. I’ll find somewhere interesting, get the grid ref and try it out.

It needs a string for a label, and a BitmapDescriptor for an icon. I’ve borrowed an icon from here for that. Free for personal use (I’m not selling this little app, so I think that counts). What’s that look like then.

Screenshot_2015-01-25-11-45-35

Ah…that’s a bit big. I pulled it straight from a Drawable. I’ll make it a Bitmap and resize it. I also need to make it zoom and centre on the marker that I just made, as I have to scroll to it at the moment.

Screenshot_2015-01-25-12-05-00

Better.

Adding more stuff…

At this point, I got lazy with the typing and just ploughed on with a little demo app… So this last bit is brief. (you can skip to the GitHub repo at this point and read the comments)

I thought the helmet and Silverstone was a good start, so I went on Wikipedia and found the locations of all of the permanent UK racing circuits, converted the listed Lat/Lon to OS Grid references using this handy site again, and manually added them to an ArrayList.

The array list is then parsed and adds the markers to the map. I set a 3000m per pixel value for the zoom, so it sort of pops out when you open up the app.

That’s it. Check it out on the GitHub repo if you want to see the super-simple implementation.

Screenshot_2015-01-25-12-45-45

A 2014 Restrospective

I’m forcing myself to take a couple of hours off to review the last twelve months, because I realise it’s been over 3-months since I wrote anything on here, and fun stuff like writing is one of those things that stays at the bottom of a todo list unless you force it to the top on occasion.

I had grand plans to keep this blog updated multiple times a week, with insights gained on my travels and gorgeous photos of Canada’s natural beauty and rich, exciting urban centres, that wasn’t to be. I changed my approach when I was only in my third province, partly due to the fact that I was stacking up way too much draft content and actually finishing none of it, partly because I had more photos than I knew what to do with (~21,000 since I landed on Canadian soil so far, yes really) and partly because it takes time to write things up into something worth reading, and I wanted to enjoy the experience of being in these places that I was traveling through, rather than just being a meat-camera, capturing and regurgitating visuals and anecdotes to be deposited on the interwebs.

Nikon D5200 with 50mm 1.4G Nikkor lens

I’m not going to document every last place that I visited, as if I did that I’d have nothing to tell you when we next meet up. Instead I’ll start gain from here, and I’ll include some photos of my travels as and when;

I now have my own personal stock photo library (a major bonus to travel that I hadn’t considered before setting off) – so some advice: do not hit the road with a crappy camera. I still hate to look at the grainy crap that I got out of the first generation Epson digital camera that I took to South America more than a decade ago, I’ve always been an early adopter like that, but in retrospect a film camera would’ve recorded the experience way better (even if it was cool to be the only person I knew with a digital camera at the time).

My camera choice this time however, was boss. It’s that thing in the image above; a Nikon D5200 body, with Nikkor 50mm 1.4G lens on it. I also took a borrowed Nikkor 55-300mm (thanks Mum). In retrospect I could’ve done with a shorter focal length lens for close shots, but the combo was perfect for landscape and environment shots. The 50mm in particular absolutely killed it for night photography, and I’m so glad I had it when I was up in Whitehorse checking out the Northern Lights.


 

Highlights (in no particular order)

British Columbia

The float plane flight around Vancouver was spectacular. I’ve always wanted to go up in one of these and my Harbour Air experience did not disappoint.

plane

 


 

Yukon

As I’ve mentioned before a lot, the Northern Lights in Whitehorse was an incredible sight and one that I didn’t expect to see on my trip (it was a last-minute “ah sod it, now or never” decision to fly up from Vancouver). Though the people I met up there was as much of a highlight as the location. The Yukon is now one of my favourite places, anywhere.

norlights


The Rockies

Solo mountain-biking in Jasper was another highlight. I got some incredible photos, but actually being there was mind-blowing. You can’t believe that you’re not viewing something that’s been photoshopped at times. It’s not cheap, and it’s super-touristy downtown, but if you can get out of the urban area a little there’s still a whole lot of wild Canada to explore.

outofthecamera


 

The Arctic

I didn’t expect to get as far north as Dawson City, so I definitely didn’t expect to find myself in the Arctic on the way to it. A completely random series of events ended up taking me to Inuvik by prop-plane. The view from the window on the flight up made me re-assess my understanding of the concept of scale. Seeing the rivers become dog-sled highways was as surreal as it was exciting.

IMG_20140424_125859


 

Icebergs!

These huge lumps of Canine Gin & Tonic (Eh? … 😉 ) float their way down from Greenland’s ice sheet, loiter off the coast a bit, then end up in a bottle of one kind or another. There are actual boats with huge grabber things on them that pluck chunks of ‘berg for the sole purpose of being put into alcohol production. I’ve now drunk iceberg in both beer and wine formats; both are delicious.

iceberg


 

The Maritimes

If you’re going to skip these provinces on your Canadian travels, you’re doing it very wrong. Best seafood you’ll ever eat in your life, and you can probably see the boat that brought it in! If you’re not into fish? Err, best stay west. Unless you like Timmy’s; there’s always a Timmy’s.

marit


 

The wildlife

In rural England, the most exciting thing you’re likely to see is a Fox. Not so in Canada; big, National Geographic-worthy wildlife is everywhere!

wildlife


 

Overall however, the best thing about this past year has been the people I’ve met, they make the experience. It’s why I chose to go for hostel accommodation most of the way around Canada, because it’s impossible not to meet people that way.

That’ll do for now; it’s been a year to beat!

Challenge accepted. 😛

Les îles de la Madeleine spectaculaires (The Spectacular Magdalen Islands)

Of all the places that I visited in the Maritime Provinces of Canada, the Madgalen Islands stand out as some of the most beautiful. The “cruise” to get there however, not so much… crappy_cruise_7

We caught a ferry over to the islands from Chandler in Gaspesie, and were looking forward to a nice cruise – private cabin, actual beds (a novelty when you’re camping for months on end) and a decent chance to check out the scenery. The photos on the website had led us to believe it would be thus; alas it was not.

crappy_cruise
If you want to pretend to be George Smiley, shadowing a Soviet informant on a cruise in the 1960s, this is your ship. I didn’t do that.

The ship was a refitted Greek cruise ship, built at some point in the mid 20th century. Being refitted it seems referred to they way that it had old grot painted over in some places, sort of. The evening embarkation added to the sense that we were less on a pleasure cruiser than in a cold war-era film. I don’t want to dwell on this bit, so I’ll move on; in any case the ship acted as something of a palate cleanser for the beauty of the islands themselves, check it out.

Mind Your Step

idm_danger_sign
A sign warning of coastal erosion.

The foundations of islands were created by the release of pressure in the Earth’s mantle, leaving protruding pillars of salt rising up from the seabed. Beause of this they are fragile and returning to the sea around the coastline. There are plenty of these signs, often mounted to safety fences tens of metres back from the edge of the cliff – that alone gives you an indication of the rate of erosion.

Sunsets are spectacular on the iles, and their low-profile means you can see the sun dunking into the sea from almost anywhere.
Sunsets are spectacular on the iles, and their low-profile means you can see the sun dunking into the sea from almost anywhere.

Two Wheels are Better Than Four

The islands are small and spread out; you can get to the end of the road at Grand-Entrée from Cap-aux-Meules in 40 minutes by car. The best way to see the central island of Cap-aux-Meules (the millstone cape) is by bicycle. There are places to hire bikes on Chemin Principal, the main shopping street on the islands. From there you can get all the way around the island via  l’Étang-du-Nord, the Cap-aux-Meules lighthouse, La Belle Anse, up the steep hill at the east end of Chemin Léonard Aucoin, then the steeper one at Cheman des Caps, which takes you back to the top of Chemin Principal and back down hill with a view of the main port of arrival.

I’m going to wind-in the commentary here and just spam a load of photos – the pictures say it better than I ever could.

two_bikes

Eat Your Way Around

The islands used to be a powerhouse of fishing, but with the European trawlers tidily destroying that market with their industrial-sized ships vacuuming the surrounding waters, the Economusée scene is where it’s culinarily at.

fishing_boat
Anywhere that you go in the Maritimes, you can see commercial fishing, usually on a large scale. Here you can get up close to a slightly smaller scale, more sustainable version. You can get fresh fish EVERYWHERE.
moo
At the Fromagerie Du Pied-De-Vent, you can buy yummy cheese made from the milk of cows that you can see from the window of the factory – you can’t get more local than that!

Catch your own dinner

seafruit
You can catch your own dinner from various beaches around the islands – ask the locals. As usual, you need a fishing licence for a lot of it, and there’s a minimum size limit of those that you catch.
cooking_crabs
Keep it Canadian by cooking up on a wood fire outdoors! Gas is for Grockles.

Roadside siege-busting weaponry, because Canada!

Canada aren't as big as Britain on their health and safety, and I can't think of a more awesome example than this fully-functional Trebuchet by the roadside. The owner fires off practice rounds a few times a week and on request. The target it a boat out in the bay - that sits rather close to the fishing harbour in my opinion, but nobody seems bothered, nobody wears a hard had or hi-viz and yet nobody dies: British Health & Safety commissioner please take note.
Canada aren’t as big as Britain on their health and safety, and I can’t think of a more awesome example than this fully-functional Trebuchet by the roadside. The owner fires off practice rounds a few times a week and on request. The target is a boat out in the bay – that sits rather close to the fishing harbour in my opinion, but nobody seems bothered, nobody wears a hard had or hi-viz and still nobody dies: British Health & Safety commissioner please take note.

Beached Dry-Dock

Part of the Duke of Connaught dry-dock, which broke free and grounded itself here in 1988. Originally built back in 1912, it's lasted surprisingly well. It makes for a dramatic sunset scene on the West side of Cap-aux-Meules.
Part of the Duke of Connaught dry-dock, which broke free and grounded itself here in 1988. Originally built back in 1912, it’s lasted surprisingly well. It makes for a dramatic sunset scene on the West side of Cap-aux-Meules.
The multi-coloured houses and rolling green hills for a backdrop makes the centre parts of the islands surreally pretty.
The multi-coloured houses and rolling green hills for a backdrop makes the centre parts of the islands surreally pretty.
The low-rolling islands' nature means that you can catch an incredible sunset from almost anywhere on the island.
The low-rolling islands’ nature means that you can catch an incredible sunset from almost anywhere.
There are thousands of nesting sea birds on islands around the coast. Even a half-arsed, opportunist "wildlife photographer", ahem, can get a decent photo.
There are thousands of nesting sea birds on islands around the coast. Even a half-arsed, opportunist “wildlife photographer”, ahem, can get a decent photo.
See?
See?
At certain times of the day (ask the locals), you can get within a few hundred metres of seals sunbathing on the sandbars. Though if you get too close, they all sod off pretty sharpish.
At certain times of the day (ask the locals), you can get within a few hundred metres of seals sunbathing on the sandbars. Though if you get too close, they all sod off pretty sharpish.
...like this
…like this

 

Visiting All of Canada’s Ten Provinces

At the time of writing I have achieved my goal of visiting every province in Canada; from the unique surfer idyll of Tofino on Vancouver Island,  the rugged coastline at Cape Spear in Newfoundland, even up to the frozen lakes of the Northern Territories. The only location that I wasn’t able to pass through was Nunavut; but if I had, I’d have no excuse to come back; I want an excuse, Canada is a fantastic country. The biggest take-away from my trip is scale. From taking off in London to the last point of my actual trans-Canada trip, I have travelled a distance greater than the distance around the circumference of the Earth, and I didn’t have to leave Canada to do it!

I can be sure of this distance total because I kept my Google Location History on for the entirety of the trip and manually added any places that I missed from when my devices were out of charge. This yielded the pretty cool (if I say so myself) map of my travels that you can see below. By pulling the data from my Location History page and applying the Haversine formula to get the distance between each point I got a total distance of 51,046 km. Taking the Wikipedia figure of equatorial circumference (40075.017 km), I get 1.27 times around the world. Not bad for a five month trip. I’ve also drafted a tutorial on how to do that, and have written up some PHP scripts that I’ll be open-sourcing soon.

Screen Shot 2014-08-25 at 10.19.25

I kept the “every province” goal under my hat, as I didn’t honestly think that it was possible on my timescale, and I stuck to my promise to myself that I would only move on to the next place once I was satisfied that I had seen what I wanted to in that location; I didn’t want my first trip to the second largest country in the world to be rushed. Now I’ve managed to visit every province in Canada (although only one of the two territories – I’m still calling that a “win”) I thought that it would be a good time to reflect on this beautiful and vast place. I’ve written some posts that will trickle out over the next few weeks, they are all under the “Canada” category, and I hope that you enjoy reading them.

If you don’t enjoy reading them, that’s fine too. Just send me some comment-abuse (any attention is good attention) and look at the pictures – there are a lot of them; I’ve taken over 15,000 since I got here…

Cheap and Cheerless: tackling a 57-hour bus journey

Taking the cheapest way from Banff to Toronto, whilst breaking my own personal record on the amount of time on a bus, seemed like an ok idea and very cost-effective at only ~$200. The train wasn’t running when I needed it to, and the flight was going to be $322, plus $18 fare for a bus to Calgary. $140 is a lot when you’re trying to make your money stretch out, and as I didn’t have any deadline to get anywhere, I traded time for money and went with the Greyhound. That alone was a tough decision, after they lost my bag last time…but they’ve pretty much got the route locked down, so no other operators had an equivalent journey for me to take.

So the bus was definitely the right choice this time. I was convinced. But you can’t be right all of the time.

I wrote the odd fragmented note into a draft on Evernote, one of the apps that I recommend for travel when you’re not sure if you’re going to have an internet connection the whole time.

6hrs in

This isn’t so bad.

9hrs in

I’m snoozing a lot. I’m doing a pretty good impression of a nodding dog. Or was, up until I executed a perfect headbutt onto the edge of my MacBook. I’m awake now, with a deep red line on my forehead… I am quite awake now, a throbbing head will do that. Need coffee.

12hrs in

Is this a dream or am I still awake? Weird twilight in Sasketchewan doesn’t help – flat prairie could just be my mind running out of ideas in my dream. A single tree on an endless plain? Come on, that’s gotta be fake. “Kzzzzrt” the bus driver’s voice crackles onto the overhead speakers. No way…this is real?! That sky is blatantly photoshopped…

16hrs in

Ow wow. I need some fruit. My stash was NOT big enough, but I’m damned if I’m having a Timmy’s for breakfast. I found some bags of nuts at the services. Pretty salty, but at least they’re whole foods.

24hrs in

Couldn’t wait any longer. The serial gum chewing wasn’t cutting it. Brushing my teeth at a bus depot; new personal low. I both look and smell like I’ve been camping. In a bin.

36hrs in

If there’s an airport in the next town, I’m getting a plane to Toronto. Screw this. No come on, you’ve come this far. It’s just a bit of sleep deprivation kicking in, you’re fine. You’re right. Who said that?

40hrs in

Why isn’t my phone charging? What?! The power’s broken?? Damnit Greyhound! At least I got to sort through some older photos before the power went out. My primary form of entertainment currently is writing on Facebook about how terrible bus travel is.

48hrs in

So close… Need caffeine if I’m going to salvage my sleep pattern here. Day and night are becoming meaningless terms. Coffee and a greasy McDonald’s bagel is in order – healthy eating be damned. I NEED comfort food.

52hrs in

I’m going to have to burn these clothes…

56hrs in

I’m in Toronto! I walked up and down some streets unnecessarily for a while as I was phone less by the time I got here; battery flat by now obviously. Thanks Greyhound… So this is actually on my laptop when I arrived.

I need to get some sleep and a proper meal. Or, you know. Go on a bar crawl with some new friends I just met at the place I’m staying. That’s a tough one…

“You can’t wear a MacBook”

That’s my first thought, and I giggled to myself at the ridiculousness of the situation. It’s 3:30am, I have just arrived in Jasper, I have nowhere booked to stay, and the bus company has just lost my bag. I’ve been on a bus for 32hrs and I am in severe need of a shower and a change of clothes. That’s not going to happen – the bus driver tells me that it must be on the bus to Edmonton, and it won’t be back through Jasper until Saturday. I had all of the gadgetry of the modern-day flashpacker in my camera bag that I carried onto the bus, but only the increasingly pongy clothes on my back to wear.

DSC_0022

My mind flashes back to the connection at Prince George bus depot; I had the presence of snoozymind® to walk over to the last bus and check that there was nothing left on it, but was shooed away by a bag zombie who said that no customers could be near the coach during loading. At the time I wasn’t that bothered, and quite keen to get on the next bus and resume my snooze, but now I was now kicking myself for not pressing the matter and keeping eyes on my bag.

DSC_0048

I sat on a bench and got my Mac onto the WiFi at the closed train station. I had received an email from Mike at the WTF hostel, which I’d booked for the following night, saying that I could just grab a bed in the dorm when I get in as there are beds free. Top bloke. I headed there and got a few hours kip in.

Not Jasper train station (actually Dawson Creek), but I didn't have a photo of the Jasper one!
Not Jasper train station (actually Dawson Creek), but I didn’t have a photo of the Jasper one!

First thing in the morning I headed over to the Greyhound office at the train station, tooled up with indignant rage, ready to kick some metaphorical arse. I arrived to a see a little smiling old lady, who said

“Ah, Matthew? We’ve found your bag dear.”

Ah, bugger. That’s not what I was expecting. I was sort of looking forward to a ruck.

“Oh, uh, thanks!”

How, or where was a mystery to her, as it was left inside the door of the office when she got in in the morning. Regardless of how the bag fairy did her magic that night, the problem was solved. It was however a valuable experience, as I had to (for the second time this trip) go through a worst-case scenario checklist in my head.

Here are some tips for if you ever get into such a situation, and what to do upfront in order to mitigate the pain should it ever happen to you.

1. Know your cover

Are you covered by travel insurance? For total loss, just delays or both? The time that you need to know this is when you panic, that’s when you need to know if you can book into a hotel and relax until you’re thinking straight, or if you need to find a 24hr coffee place to sit in whilst you deal with the situation. Most importantly you need to check what your delayed baggage allowance is, so you know how much you can spend whilst delayed without being out of pocket in the long run.

2. Take photos of all of your stuff, including new things you buy on your travels

I was a bit anal about this and laid out all of my kit on a table before I left so that I could document what I was taking with me. But I didn’t always do this once I’d started to acquire things along the way, so if you treat yourself whilst away (to a new backpack for example) make sure that you take a photo and show off to your mates – it’ll actually come in handy if it ever goes missing and you need to prove that you owned it.

3. ALWAYS keep your passport with you when in transit. ANY form of transit.

This seems like a “duh” point, butI had been a bit lax in the previous few weeks. When I first arrived in Vancouver my passport was in a zipped pocket all the time, always on my person; I was in UK city mode. After that I had moved it to my documents folder which is too big for my camera bag so lives in my rucksack – I wasn’t crossing any national boundaries so it seemed overkill for a bus trip.

I had decided when I was in Whitehorse to rearrange my rucksack, as I had way too much crap that I didn’t need in there. In doing so I transferred my passport to my camera bag, as when I get to an airport eventually I’ll have to dig it out of my rucksack anyway and it’d save me some time in the future, as I tend to be that guy whose name gets the last call over the PA system. This turned out to be an excellent move.

It meant that when I was stranded in Alberta with nothing but gadgets, I had the “fly the **** home” option in my back pocket. That’s a nice thing to have.

4. Don’t panic

People are cool, and you can blog about it later. 😉

DSC_0058

 (as ever, the majority of these photos have nothing to do with the post, but they were taken in Jasper!)

5 essential apps for backpackers

The whole point of my little trip to Canada was that I wanted it to be almost entirely unplanned. Having worked in an office where I knew I was going to be every day and what I needed to be doing ages in advance, I wanted my travel to be a little more unpredictable. Fortunately technology makes that sort of trip both easy and economical.

The following are the apps that I find myself using on a daily basis; I have no association with any of them, I am sharing this info because I genuinely find them useful. I hope you do too!

1. Skyscanner Flights

This is hands down my favourite way of booking a flight, on a mobile or otherwise. It works like the flight comparison sites, but it far slicker than most and is optimised for mobile use.

You can create multiple tabs for specific searches to refer to later, so if you are planning a series of ‘hops’ and want to tweak the specific dates and airlines, you can do so by creating a tab for each journey and switch back and forth between them for comparison.

By far the best feature of this app is the price comparison chart (see vid above), especially if you aren’t constrained by when you have to fly. Enter the origin and destination airports, select ‘Any’ in the Depart date field and hit search. You get a horizontally scrollable chart showing dates along the bottom, and bars of different heights representing flight prices on each date.

For the ultimate in random, cheap flight searches, choose ‘Everywhere’ as your destination airport and see the cheapest place that you can fly to on any date from whichever departure location that you choose! Great for an unplanned, last minute weekend getaway.

2. TripAdvisor

TripAdvisor app gives you the same information as the website, but uses less mobile data
TripAdvisor app gives you the same information as the website, but uses less mobile data

This is no secret really, and every hotel or hostel I’ve been to has had a sticker in the window, such is the pervasive reputation of this tool. The app is better for limited bandwidth connections, because… *geek-out alert, skip to the next app if you’re not interested*, the mobile app uses a text-based API, so it only exchanges the data that is needed to update the information that is seen in the app, whereas the website version also loads images and background JavaScript libraries required to make the site work, making the required download much larger. So if you’re on a roaming data plan, download the mobile app over WiFi before you leave, and use the app rather than the website when you’re out and about using mobile data.

You’ll save mb’s, and it’ll be a much smoother experience.

3. Evernote

Screenshot of Evernote location-based notes screen
Evernote location-based notes

Nothing beats this for keeping track of little snippets of information that you learn from people that you meet along the way. You could use a Moleskine if you’re an analogue type, but if you lose that little book, it’s gone. Evernote backs everything up, and can record where you were when you took down the note so making it easier to refer back to to later: “Which hotel did that guy in Tofino recommend again?..”

I also use it for keeping track of touristy maps and leaflets, partly so that I don’t end up with a bag full of paper, but also because it makes you look less like a tourist if you’re just checking your phone, as opposed to unfurling some A1 sized glossy map on a bench somewhere (I prefer to blend in and not look like a tourist where I can, especially when traveling solo).

Check out Bod for tea’s great crowd-sourced post on other uses if you’re blogging about your travels as you go.

4. Google Drive (desktop and mobile combo)

I use Drive for keeping hold of reservations, confirmations and electronic boarding cards for flights, which are increasingly used at airports to reduce the amount of wasted paper involved in frequent travel.

I sync my ‘Travel’ folder from my desktop, so when I make any bookings with my laptop, the PDF print-outs are synced to my phone automatically, so when I get to the baggage check I can just get the QR code on the screen scanned rather than having to dig around for a crumpled card pass jammed somewhere in a side pocket.

It’s a great feeling to check in online, from a WiFi-enabled shuttle coach en route to the airport, then walk past the check-in queues straight to the departure gate with a smartphone boarding pass, fifteen minutes before take-off. That’s how air travel should always be.

Worried about privacy? Please…you’re using the internet to book flights. Google already knows where you’re flying. 😉

5. OwnCloud

OwnCloud screenshot

For photo-backup. This is a bit trickier to set up, but worth the effort. OwnCloud is a Dropbox-like cloud storage system that you install on your own machine; be that server or home machine that’s always-on. Once set up, you can install the app and have your phone camera photos backed up automatically when you’re in range of WiFi (or even over mobile data, if you’re really brave/have unlimited data!).

Unlike Facebook or Google+, the full-sized image file is uploaded, with all of the extra EXIF data, geolocation and original timestamps, so you don’t lose detail or resolution when it syncs. It reassures me that if my phone breaks or goes walkies, I’ll still have all of the photos that I took with it on a server back in England. It also allows me to delete all of my photos from my phone to free up space to take more!