Proof of Concept: I made my very own Foursquare (Swarm) on WordPress… and you can too


I’ve always loved the concept of Foursquare. Sharing locations is awesome, although somewhat creepy.

How do you leverage the awesomeness while avoiding the creepy factor?

Sadly today it’s basically impossible to protect yourself against being tracked, if you have a mobile phone. But I’m not going to give away my apartment key to everyone around, just because it’s possible to pick the lock.

My biggest gripe against Foursquare is that it’s all real-time, so I couldn’t control when I was posting my location. If I used the app, I had to broadcast where I was then, or not at all.

What if you were in control of your data? Your World Your Data, right?

How would you opt to display and use your location data if you were in control over it? What sort of plugins could be built around this data?

So I thought I’d see what I could do, with little or no coding, and create a proof-of-concept.

One of the cool things about smartphones is that when you take photos, it saves the location of the photo in the photo metadata. You can prevent that from happening, and many services strip that data to prevent liability, but let’s try and leverage that.

I did a quick search in the WordPress plugin directory and came up with Map Images. It’s not pretty, and hasn’t been updated in 11 months, but I’m using my dev site for this project, so let’s give it a shot. If I like it, I’ll rebuild the plugin and make it beautiful.

It wasn’t too hard to to get the plugin up and running, on activating you need to get a free api key for Google maps. The key allows up to 25k calls per day, which let’s be honest, if you “check in” more than 25k times a day, your biggest problem isn’t your API limit.

Once I got the plugin set up, I tried with my phone. I took a picture and uploaded it via the app. Sadly, the app stripped out the location metadata by default. Even when I took a picture outside of the WordPress app, then uploaded that photo, the app still stripped out the geodata.

Then I found the following settings in the app site settings:

Boo yeah! Geotagging…

Once switched on the app stopped stripping out the geodata from photos. One caveat, if I took a picture with the app, it still would remove the data, but if I take a picture with the phone first, then upload it with the app, the geodata remains. When you save the post, the plugin does its magic and BOOM, I have my proof of concept.

It’s not beautiful, I can worry about that later, but it works!

I’m not releasing my location feed yet. I have a few things to work out first…

TO DO:

  • It’s not pretty, the plugin should format things more elegantly.
  • I don’t want my location posts to go into the main feed. I think location should be its own post-type, and a separate feed.

I plan to do two things to correct this:

  1. Make a version of the plugin that is more elegant, and that moves the post-types into a post-type of `location`.
  2. The app has some great basic functionality, keeping the hack above in mind, it would be great to be able to pair the app with server-side post-processing. I’m working on a plugin called “If Post Then That (IFPTT).” Inspired by IFTTT it will let you do post-processing of a post, so you can add a tag to the post, and it will move it to an existing post-type. Or the like. Keep your eyes peeled, more news to come.

Once this is polished I think it would be the ideal companion for travel/food/photo bloggers, or just anyone that likes to share cool places, or remember where they saw something (there are private posts for that).

Check back, I’ll post when the above is done and you’ll be able to follow me on my journeys.

What I need from you:

  • What are your impressions of this proof-of-concept?
  • What site-hacks would you do? Not just location, if you could save stuff to your site on-the-go with an app, then have your site post-process, what would you do?

Anyone can do hacks like these. You don’t need to know how to code. I do recommend having a separate site for playing around on, but that’s easy enough. I wanted to do this with zero coding as a proof of what creativity can be accomplished leveraging the WordPress plugin ecosystem.