Ben Ford

JourneyTag Postmortem

I created a geolocation game for the iPhone back in 2009. It was called “Journey Tag” and it’s still available on the AppStore, although it does have a few bugs with current iOS versions.

The idea was let players create a “tag” which is tied to a location. Other players would move the tags around the globe, earning points for each mile moved. Players had to physically move the “tags”: walk, drive, or fly kind of move. (It was inspired by Geocaching if you know what that is. ) This seemed like a simple idea, but it turned out to be a lot more complicated as I started building the game.

Technically you do a postmortem soon after the project is finished. It has been 3 years since I finished the game so here it is, better late than never.

The game was split into a client iPhone app and server side web service. The server side used Google App Engine with python and the client was obj-c and UIKit. I spent about 6 months working on the project and the first 2 months was spent just learning the platforms and languages. I’d never worked on either before so there was indeed a bit of a learning curve.

The goals for the project were kind of lame. I never expected any financial success and my ultimate goal was to learn iOS and python, and hopefully walk away with a fun game to play.

The problem with choosing a social/multiplayer game is the need to have many players for it to be fun. Because the game was so hard to figure out, it was kind of doomed from the start.

In the end it had around 500 registered players and 50 – 100 active players. The top 30 players really enjoyed the game and we got a bit competitive at some points along the way.

It definitely had some flaws, and it took a lot of effort for me to make improvements. The largest problem I faced was in explaining how the game worked. This was mainly due to poor UI design.

People did enjoy finding tags and moving them, it was a matter of getting them over the hump of learning to play the game.

So what did I learn? What would I do better next time?

Things I learned

  • execution is hard to get right on the first try
  • making a game fun and addicting takes much experimentation, so be prepared for a lot of R&D time
  • coding the iPhone app, the server, and a test suite made for a lot of work. Testing simple ideas was not a trivial process. I chose a difficult subject matter for my first game.
  • seemingly simple features turned out to be very hard to implement without drastically changing the existing game. The rules got complicated fast. This was on top of the fact that each feature essentially took layers of code: client, server, test suite.
  • the rules of the game became complicated for such a simple idea. This also hindered progress.

What would I Do better next time?

  • design the UI first, then write code
  • allow instant play, no sign up screen
  • put in single player activities, many players didn’t have anything to do in the areas they were in
  • don’t make an app that depends on social or requires a server—this more than doubles the code you must write
  • discuss ideas with as many people as you can. Find out who your audience is and see their reaction.


In the end, I was limited on what I could code by myself within the time constraints I had. But, it was a blast making the game and it taught me many important lessons.

I am a working on another iOS game. Just not something that requires a server or a test suite.

New and Improved .Me

Update: I did minor edits to this post for clarity. 1/3/2014

I usually hack on this site in my spare time, which I rarely have anymore. Today I admitted to myself that I don’t enjoy working with django. I’d rather spend my spare time experimenting with iOS.

So I took the plunge and am doing what I wanted to do 3 months back.

I’m going to move this site over to squarespace using my domain. (It used to be hosted at

Moving to squarespace presents a few technical challenges. I’ll be closing my account (an awesome host by the way), which will cause me to lose my hosted trac sites and subversion repositories. I’m going to move these things over to github, which has bug tracking, wiki, and other cool features.

I’m a bit unnerved about not having a webhost account, but it helps to know that all decisions are temporary, you simply make them and move on.

Coping With Change

How much of our hypercritical knee jerk reactions to change is not about the changes and more about our unwillingness to accept progress.

Relearning UI is frusterating and annoying, but it is a temporary problem. When XCode 4 was launched last summer, the transition away from XCode 3 was horribly difficult. But 6 months later I’ve forgotten that XCode 3 even existed.

Change is hard, but change is good too. Embrace it baby!

I Will Miss You Steve Jobs

The iPhone inspired me to quit my job and make apps for a living. Steve Job’s vision made that possible, and I suppose he affected my life in a big way.

I didn’t know him personally but he will be missed.

To Django or Not to Django

Update: This post was written when I had a blog running with the Django web framework. I migrated over to squarespace in 2012.

Wordpress is great! Tumbler is pretty neat too. I’d even use blogger if I had to. But I decided to write my own blog engine in django. It gives me an excuse to use python, and it also keeps my toe in the web programming world. And I love having ultimate control over my site.

toe in web world

It’s not all roses though. My site is pretty ugly and the blog has no features. I really thought long and hard about dumping my entire site and going with something fancy like squarespace or a nice hosted wordpress blog. I even tried them out and was duly impressed. Squarespace was so great I signed up and started converting things over. But alas, I cancelled that idea in the end.

Keeping my django blog seems like a silly decision. I have no time to play around with a web framework I only partially know. But I can’t give up on the things I want to be good at. I love the web and although hand typing HTML makes me feel sick inside, it’s something I will never give up.

Django really hits home with me. It’s powerful, written in python, and the built-in admin panel is the cat’s meow. Building my own blog engine keeps my web skills alive. The more I focus on non web projects, the less I remember about my good pal the web.

It’s about the journey not the destination. So I’ll continue poking along with my half-assed blog engine. And I am going to start blogging again, so things may improve a bit around here.